Skip to main content

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, sha256 verified before running (never a raw curl | 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)

  1. The app has an install script meeting NEO App Script Convention v0 (see the spec in docs/).
  2. Pin the script: python tools/pin_script.py <url-pointing-at-tag-vX.Y.Z> → copy the entry into catalog/catalog.json.
  3. 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

neo_play-0.2.3.tar.gz (358.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neo_play-0.2.3-py3-none-any.whl (364.1 kB view details)

Uploaded Python 3

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

Hashes for neo_play-0.2.3.tar.gz
Algorithm Hash digest
SHA256 d4b6099903bba1cf3d5cf899bbda7a605064c00de9efbd103a5ba424f911ce83
MD5 fd268e9c0fbafeee75acaf60f2b7e7a3
BLAKE2b-256 614e48fa196ce83e1567dc146744790a977a09d2cb2caaf70758b41251e79d41

See more details on using hashes here.

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

Hashes for neo_play-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 13d822d9a56ade487aacac6e3f3cf4522b7c41e81d8352a57578e5a4e48756ff
MD5 d1c73bb9599f860341123bfd2350d49d
BLAKE2b-256 7e31595934fa1be12073ad320a6405790f6c22060f942f9c7d861daf16c00467

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page