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.2.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.2-py3-none-any.whl (365.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: neo_play-0.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 29049542b44727594e8ffc9b323f9046c8fdf9c1331dfbfcd21bf1c9dcc971f5
MD5 7d950f0959fa07deb142f18b46efdf40
BLAKE2b-256 0622e163b962c7e85e5c1b48ca21321717280c77bc55f8a776822e9e8baa6273

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neo_play-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 365.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 75987e317dd533bb72a72387d1e77f0f6fb4e5f0fdf26c5697554815fa314bda
MD5 e610c67a72cd3e220233fc0847aba532
BLAKE2b-256 b9082dfac61c23d36d1210639f0fffa72f62d3dcd2ce4a67d00c9f66013ffe0f

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