

Glowstick
Simple connected toys built from a single action — turn a knob, press a button, flip a switch.
- Size
- 40.5 × 26 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 10
- Nets
- 21
- Pads
- 57
- Tracks, vias
- 108, 0
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 14 Mar 2026
- Updated
- 5 Nov 2026
Overview
Glowstick is an open-source printed circuit board by computerjazz, from the computerjazz/pico-next repository on GitHub. It is a 2-layer board of 40.5 × 26 mm with 10 parts on 21 nets, routed with 108 tracks and 0 vias.
It is built around the S8050.
Main components
1README
README.md![]()
picopi
Simple connected toys built from a single action — turn a knob, press a button, flip a switch.
Each toy is a small wooden box with one big, satisfying control on top. WiFi-enabled ESP32 modules handle the electronics; this repo is the web app and backend that ties them together.
Origin
Picopi started as a sandbox — a place to explore modern Next.js with Server Actions and React Server Components, and to figure out how to self-host the whole stack on a Raspberry Pi.
From there it grew into something much more physical. ESP32 modules, custom PCBs, woodworking, product design — all in service of one goal: building meaningful connected experiences for kids. Not apps on screens, but real objects with weight and texture that do one thing well.
sh0rtwave is the one that struck a chord. A little answering machine for voice messages between kids and the people who love them. Press the button, leave a message. When the light blinks, someone left one for you. The recordings pile up over time into a collection of audio I'll cherish forever.
Toys
| Route | Toy | Action | What it does |
|---|---|---|---|
/shortwave | sh0rtwave | Push a button | Trade voice messages — no screens attached |
/toggle | toggle | Flip a switch | Keep two toggles in sync from afar; compete on the leaderboard |
/hidden-radio | hidden radio | Turn a knob | Discover what's hiding in the FM spectrum off the usual radio dial |
Firmware for each device lives under esp32/.
Core technologies
Web app
- Next.js 16 — App Router, React Server Components, and Server Actions
- React 19
- TypeScript
- Tailwind CSS 4
- Motion — UI animations
Backend & data
- PostgreSQL with Drizzle ORM — devices, recordings, users, toggle groups, and more
- Redis — pub/sub for routing real-time commands to connected clients
- Custom Node server (
server.ts) — Next.js request handler plus a WebSocket server for live device communication - Auth.js / NextAuth — Google sign-in and session management
- Zod — runtime validation for API payloads and WebSocket messages
- ffmpeg — audio transcoding and processing (recordings, answering-machine playback)
- Sharp + Tesseract.js — image preprocessing and OCR (e.g. inbound mail parsing) for display on my TRMNL
Hardware
- ESP32 (ESP32-S3) — WiFi, I2S audio, OTA firmware updates
- Arduino / C++ firmware in
esp32/shortwave,esp32/toggle, andesp32/knob - KiCad PCB designs (e.g.
esp32/shortwave/sh0rtwave_pcb/)
Infrastructure & hosting
The whole stack runs self-hosted on a Raspberry Pi, deployed and managed through Coolify. The app ships as a Docker image (multi-stage build; production image includes ffmpeg).
| Layer | Tool | Role |
|---|---|---|
| Compute | Raspberry Pi + Coolify | Self-hosted app platform |
| Containers | Docker | Build, ship, and run the Next.js app + custom server |
| Database | PostgreSQL | Primary data store (devices, recordings, users, toggle groups) |
| Cache / pub-sub | Redis | Real-time command routing to WebSocket clients |
| Private network | Tailscale | Secure mesh VPN — access the Pi and services without exposing ports |
| Public ingress | Cloudflare Tunnels | Expose the app to the internet (and ESP32 devices) without port forwarding |
Integrations
- Web Push — notifications when new messages arrive
- Gmail API — inbound message processing
- Telegram — device channel integration
- Google OAuth — sign-in and API access
Project structure
app/ Next.js pages, components, server actions, and API routes
db/ Drizzle schema and database client
esp32/ Device firmware and PCB files
lib/ Shared utilities (auth, redis, websocket, push, etc.)
scripts/ CLI helpers (Gmail auth, token generation, DB seeding)
server.ts Custom HTTP + WebSocket server for production
drizzle/ Database migrations
public/ Static assets and OTA firmware binariesGetting started
Prerequisites
- Node.js 20+
- PostgreSQL
- Redis
Development
npm install
npm run devOpen http://localhost:3000.
Production build
In production the app runs on a Raspberry Pi via Coolify, behind a Cloudflare Tunnel, with PostgreSQL and Redis as managed services on the same host.
npm run build # Next.js build
npm run build:server # Bundle custom server
npm run build:release # Build + run with .env.localOr build the Docker image directly:
docker build -t picopi .
docker run -p 3000:3000 picopiEnvironment
Copy and configure environment variables for your local setup (database URL, Redis, auth secrets, API keys). See .env.local and the env.h.example files under esp32/ for device-side credentials.
Database
npx drizzle-kit migrateLicense
Private — not open source.
Parts
10| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | Conn_01x08_Pin | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | 5v, A1, GND |
| 2 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | GND OUT, J4 |
| 1 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | RX |
| 1 | Conn_02x09_Odd_Even | Package_DIP:DIP-18_W7.62mm | 2272 |
| 1 | R_US 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | 1k |
| 1 | R_US 750k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | 750k |
| 1 | S8050 | Package_TO_SOT_THT:TO-92_Inline | S8050 |
Questions
How big is the Glowstick PCB?
It measures 40.5 × 26 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Glowstick use?
10 parts, built around the S8050. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Glowstick KiCad files?
From the computerjazz/pico-next repository on GitHub, at the commit this page was made from: the board is esp32/glowstick/Untitled/Untitled.kicad_pcb and its schematic esp32/glowstick/Untitled/Untitled.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Glowstick design in my own project?
Its repository states no licence, so its author keeps all rights: ask computerjazz before reusing the design.
Similar boards
- 2 layers60 × 40 mm

- 10 layers224.5 × 160 mm

Haasoscope pro adc fpga board
drandyhaas/HaasoscopePro
Affordable 2 GHz 3.2 GS/s 12 bit open-source open-hardware expandable USB real-time oscilloscope
586 parts485MIT - 2 layers100 × 57 mm

- 4 layers74 × 104 mm

- 2 layers189.5 × 204.9 mm

SmartSpin2k Panelized
doudar/SmartSpin2k
Transform your spin bike into a Smart Trainer!
749 parts292GPL-2.0 - 2 layers13.7 × 21.4 mm

- 4 layers43 × 49 mm

- 2 layers85 × 56 mm
