Build and test apps for the Universe 2026 Hackable Conference Badge.
This repository is the Campus Experts layer on top of
badger/home, the upstream Universe 2026
badge repository. It keeps the upstream badge runtime and hardware references
available while adding a simple team workflow for Campus Experts.
This repository includes:
- The
badge-app-builderCopilot skill. - The Pimoroni Badgeware Web Simulator for quick, no-install browser testing.
- App validation and physical-badge deployment scripts.
- Working Universe 2026 examples for screens, games, saved state, images, Wi-Fi, IR, BLE, and launcher integration.
- Hardware, Badgeware API, emulator, and deployment references.
| Path | Purpose |
|---|---|
badge/ |
Upstream Universe 2026 /system files and apps |
badge25/ |
Archived Universe 2025 files, docs, simulator, and apps |
hardware/ |
Universe 2026 schematic and hardware/GPIO reference |
eink/ |
Earlier e-ink badge resources |
ir-beacon/ |
IR beacon utilities and protocol experiments |
Team1/-Team4/ |
Campus Experts team app submissions |
docs/ |
Campus Experts and fork/sync documentation |
.github/skills/badge-app-builder/ |
Copilot skill for building badge apps |
See the Universe 2026 hardware reference for the RP2350 GPIO map and onboard peripherals, and the USB serial and MicroPython REPL guide to inspect a connected badge and copy files or apps.
The Universe 2026 badge is a custom derivative of Pimoroni's Tufty 2350. These upstream resources are useful references but do not model GitHub's custom accelerometer, IR, capacitive-control, or firmware APIs exactly:
pimoroni/tufty2350firmware, board definitions, modules, and examplespimoroni/badgeware-docsBadgeware documentation and examplespimoroni/badgeware-simulatornative, buildable desktop Badgeware Simulator built on the real PicoVector graphics library -- a good option if you want offline/command-line testingpimoroni/badgeware-web-simulatorsource for the browser-based simulator linked above
Campus Experts work in teams of four. Each team uses one shared fork, works
inside its assigned Team1 through Team4 folder, and sends one final pull
request back to this repository.
For the shortest path, follow Build a badge app with Copilot. Read CONTRIBUTING.md for the full team and pull request workflow.
Use Python 3.10 or newer (only the standard library is required -- no
pip install needed).
Tell Copilot your team folder, app path, idea, and controls:
I am on Team 1. Build a badge app in Team1/countdown. It should show a
conference countdown. A/C changes the target day, B saves it, and the choice
must persist. Use the badge-app-builder skill, inspect the closest examples,
create an icon, validate the app, and list physical badge tests.
Or scaffold one directly:
python3 .github/skills/badge-app-builder/scripts/scaffold_app.py countdown \
--title "Countdown" \
--apps-dir Team1The apps under badge/apps/ are examples and shared badge code. For Campus Experts
submissions, create apps under TeamN/<app-name>/ as explained in
CONTRIBUTING.md. Start with the smallest useful example:
| Need | Example |
|---|---|
| Basic screen | badge/apps/hello |
| Button-driven game | badge/apps/snake |
| Physics and sprites | badge/apps/flappy |
| Saved state | badge/apps/monapet |
| Images | badge/apps/gallery |
| Wi-Fi and an API | badge/apps/badge |
| Robust network refresh | badge/apps/contributions |
| IR beacons | badge/apps/quest |
| BLE and Web Bluetooth | badge/apps/contacts |
| Badge-to-badge BLE | badge/apps/pong |
| Launcher behavior | badge/apps/menu |
Validate the app:
python3 .github/skills/badge-app-builder/scripts/validate_app.py \
Team1/countdownRun it in the Pimoroni Badgeware Web Simulator
by copying the app's __init__.py and local modules into the editor and
uploading binary assets through the Files panel.
Check every app in one team folder:
python3 .github/skills/badge-app-builder/scripts/validate_submissions.py Team1The web simulator does not prove BLE, GPIO, real IR timing, LED behavior,
battery behavior, radio conditions, or exact RP2350 MicroPython performance.
If you want offline or command-line testing, see
pimoroni/badgeware-simulator.
Put the badge into USB Disk Mode by double-pressing RESET. Preview a deployment:
python3 .github/skills/badge-app-builder/scripts/deploy_app.py \
Team1/countdownAfter reviewing the file list, write it:
python3 .github/skills/badge-app-builder/scripts/deploy_app.py \
Team1/countdown --writeUse --replace only when replacing an existing app. The tool keeps a
timestamped backup and never copies badge/secrets.py.
After safe eject, press RESET, open the app, test its controls and failure paths, press HOME, and reopen it to check saved state.
- Skill instructions:
.github/skills/badge-app-builder/SKILL.md - App contract:
.github/skills/badge-app-builder/references/app-contract.md - Badgeware API:
.github/skills/badge-app-builder/references/badgeware-api.md - Hardware limits:
.github/skills/badge-app-builder/references/hardware.md - Simulator:
.github/skills/badge-app-builder/references/emulator.md - Physical badge:
.github/skills/badge-app-builder/references/physical-badge.md - Upstream fork and sync model:
docs/UPSTREAM-SYNC.md - Migration from the old snapshot:
docs/MIGRATION-FROM-STANDALONE.md
The active runtime is the Universe 2026 badge API from badger/home. The
Universe 2025 Badgeware runtime is archived upstream under badge25/ and is
not the target for new apps. The physical badge is the compatibility target;
emulator success is only one step in the test process.