NEOPlay — chợ ứng dụng & launcher cho thiết bị NEO (ARM Linux)
Project description
NEOPlay
Tiếng Việt · English
App store & launcher for NEO devices (ARM Linux) — by ThingEdu.
Like Google Play, but built for NEO. One-tap install, offline-first, curated, safe for kids.
Table of Contents
Description
NEOPlay is the app store and launcher for the NEO family of ARM Linux devices (NEO One, NEO AI). The goal: a student opens NEOPlay → sees an app in the "New" shelf → taps Install → taps Open. Done, in exactly two taps.
Built with PyQt6, it runs on 2GB-RAM machines, works offline-first (installed apps need no network), and ships a catalog curated by hand at ThingEdu so content stays safe for kids.
Features
- One-tap install — a single state button: Install → Installing → Open.
- Offline-first — the catalog is cached locally; installed apps still open with no network.
- ThingEdu-curated catalog — pinned
version, scripts pointed at git tags,sha256verified before running (never a rawcurl | bash). - Multiple install backends — script-source (NEO App Script Convention v0) as the primary path, plus Flathub for FOSS apps.
- Launchpad-style UI — large rounded app icons, a light blue theme, friendly for kids.
- Classroom mode — fullscreen autostart + kiosk allowlist, so kids only see approved apps.
Installation
On a NEO device
Installs from PyPI; Qt/PyQt6 comes from the apt packages already on the image (no source build):
# normal install (icon in the menu)
curl -sSL https://raw.githubusercontent.com/ThingEdu/neo-play-catalog/main/scripts/install_on_neo.sh | bash
# boot straight into NEOPlay fullscreen
curl -sSL https://raw.githubusercontent.com/ThingEdu/neo-play-catalog/main/scripts/install_on_neo.sh | bash -s -- --autostart
Uninstall: append -s -- --uninstall to the command above.
Classroom mode (recommended)
Install with --autostart and enable kiosk in ~/.config/neoplay/config.toml on the device:
fullscreen = true
[kiosk]
enabled = true
allowlist = ["neo-code", "gcompris"]
The machine boots straight into NEOPlay fullscreen, kids only see approved apps, and the Esc key is disabled (with kiosk off, Esc exits fullscreen normally). Quick test on a dev machine: NEOPLAY_FULLSCREEN=1 make run.
Run on a dev machine
make venv
make run
Pulls the live catalog from the neo-play-catalog repo. Needs network + a display (X11/Wayland).
Documentation
- MVP spec:
docs/superpowers/specs/2026-06-06-neoplay-mvp-design.md - UI Launchpad spec:
docs/superpowers/specs/2026-06-06-neoplay-ui-launchpad-design.md - Boot/Fullscreen spec:
docs/superpowers/specs/2026-06-06-neoplay-boot-fullscreen-design.md - Plan:
docs/superpowers/plans/2026-06-06-neoplay-mvp.md
Contributing
Add an app to the shelf (ThingEdu review process)
- The app has an install script meeting NEO App Script Convention v0 (see the spec in
docs/). - Pin the script:
python tools/pin_script.py <url-pointing-at-tag-vX.Y.Z>→ copy the entry intocatalog/catalog.json. make check→ open a PR → CI validates → on merge the app appears on every device.
Development
make venv # create .venv + install dev deps
make test # full unit + UI smoke suite
make check # validate catalog.json
Code contributions: branch off main, write tests first (TDD), get make test green, and open a PR that clearly describes the change.
Packaging & release
make build # build sdist + wheel
make dist # clean + build + twine check
make publish # scripts/publish.sh (TestPyPI → confirm → PyPI)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neo_play-0.2.3.tar.gz.
File metadata
- Download URL: neo_play-0.2.3.tar.gz
- Upload date:
- Size: 358.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4b6099903bba1cf3d5cf899bbda7a605064c00de9efbd103a5ba424f911ce83
|
|
| MD5 |
fd268e9c0fbafeee75acaf60f2b7e7a3
|
|
| BLAKE2b-256 |
614e48fa196ce83e1567dc146744790a977a09d2cb2caaf70758b41251e79d41
|
File details
Details for the file neo_play-0.2.3-py3-none-any.whl.
File metadata
- Download URL: neo_play-0.2.3-py3-none-any.whl
- Upload date:
- Size: 364.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13d822d9a56ade487aacac6e3f3cf4522b7c41e81d8352a57578e5a4e48756ff
|
|
| MD5 |
d1c73bb9599f860341123bfd2350d49d
|
|
| BLAKE2b-256 |
7e31595934fa1be12073ad320a6405790f6c22060f942f9c7d861daf16c00467
|