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.1.tar.gz (354.5 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.1-py3-none-any.whl (365.6 kB view details)

Uploaded Python 3

File details

Details for the file neo_play-0.2.1.tar.gz.

File metadata

  • Download URL: neo_play-0.2.1.tar.gz
  • Upload date:
  • Size: 354.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for neo_play-0.2.1.tar.gz
Algorithm Hash digest
SHA256 c033b9c433b979e9522b41bbaea879e72b8d9bb3d011b9cff5da52815ca5787a
MD5 871eff4c761cd967f514e920a1bee942
BLAKE2b-256 85590117883a874d5ee8311bfe5986dbea6c2e47068e3fb38e377697a7758f2a

See more details on using hashes here.

File details

Details for the file neo_play-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: neo_play-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 365.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for neo_play-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9511d15add1274fec6c9ce6d55428958f219fa6f3a6ad86148fffb426ee988a4
MD5 78ba3fbef0b2fe8e9e4af54903b95197
BLAKE2b-256 1d82d497e8f25540f8959c33f651614855917401a551ef137563ce609251bff3

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