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/NeoPlay/main/scripts/install_on_neo.sh | bash

# boot straight into NEOPlay fullscreen
curl -sSL https://raw.githubusercontent.com/ThingEdu/NeoPlay/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-mock.

Try it on a dev machine (mock mode, no device needed)

make venv
make run-mock

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.1.0.tar.gz (18.3 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.1.0-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: neo_play-0.1.0.tar.gz
  • Upload date:
  • Size: 18.3 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.1.0.tar.gz
Algorithm Hash digest
SHA256 305575a46cc24950cdbcee3b5b81d05470f88a5c879122226f4224c4e2810070
MD5 93bac041a7e3842a8c53ad456da276ca
BLAKE2b-256 736284e374013886e8d22eade36607b85837c3e86d117eb22d03e1ad85c23848

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neo_play-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.8 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f142f69e71561ec65c7452d965911de8b783f9e0f455d21301492321996558e
MD5 39b4ea6415411ab5f97d361c9d42b5cf
BLAKE2b-256 f3c7d169c8be4b8ab3eb5f7bf8ac71f186cfe811adb3fb5d424bc39201717e06

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