Skip to the content
PCBKitNew board
2 layers40.5 × 26 mmGlowstick, the printed circuit board in 3D

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

1

README

README.md

Alt text

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

RouteToyActionWhat it does
/shortwavesh0rtwavePush a buttonTrade voice messages — no screens attached
/toggletoggleFlip a switchKeep two toggles in sync from afar; compete on the leaderboard
/hidden-radiohidden radioTurn a knobDiscover what's hiding in the FM spectrum off the usual radio dial

Firmware for each device lives under esp32/.

Core technologies

Web app

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, and esp32/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).

LayerToolRole
ComputeRaspberry Pi + CoolifySelf-hosted app platform
ContainersDockerBuild, ship, and run the Next.js app + custom server
DatabasePostgreSQLPrimary data store (devices, recordings, users, toggle groups)
Cache / pub-subRedisReal-time command routing to WebSocket clients
Private networkTailscaleSecure mesh VPN — access the Pi and services without exposing ports
Public ingressCloudflare TunnelsExpose 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

text
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 binaries

Getting started

Prerequisites

  • Node.js 20+
  • PostgreSQL
  • Redis

Development

bash
npm install
npm run dev

Open 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.

bash
npm run build          # Next.js build
npm run build:server   # Bundle custom server
npm run build:release  # Build + run with .env.local

Or build the Docker image directly:

bash
docker build -t picopi .
docker run -p 3000:3000 picopi

Environment

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

bash
npx drizzle-kit migrate

License

Private — not open source.

Parts

10
QtyValueFootprintReferences
3Conn_01x08_PinConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical5v, A1, GND
2Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalGND OUT, J4
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalRX
1Conn_02x09_Odd_EvenPackage_DIP:DIP-18_W7.62mm2272
1R_US 1kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal1k
1R_US 750kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal750k
1S8050Package_TO_SOT_THT:TO-92_InlineS8050

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 mmHASwitchPlate, the printed circuit board in 3D

    HASwitchPlate

    aderusha/HASwitchPlate

    LCD touchscreen for Home Automation

    16 parts738MIT
  • 10 layers224.5 × 160 mmHaasoscope pro adc fpga board, the printed circuit board in 3D

    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
  • 4 layers74 × 104 mmBeepy, the printed circuit board in 3D

    Beepy

    sqfmi/beepy-hardware

    Beepy Hardware

    160 parts348MIT
  • 2 layers189.5 × 204.9 mmSmartSpin2k Panelized, the printed circuit board in 3D

    SmartSpin2k Panelized

    doudar/SmartSpin2k

    Transform your spin bike into a Smart Trainer!

    749 parts292GPL-2.0
  • 2 layers13.7 × 21.4 mmZ2m partner, the printed circuit board in 3D

    Z2m partner

    smarthomefans/z2m_partner

    Hardware module for iobroker.zigbee

    52 parts186
  • 4 layers43 × 49 mmEsppdp, the printed circuit board in 3D

    Esppdp

    Spritetm/esppdp

    ESP32-based PDP11 simulator, based onSimH

    55 parts141
  • 2 layers85 × 56 mmHB RF ETH, the printed circuit board in 3D

    HB RF ETH

    alexreinert/PCB

    Some of my PCBs

    96 parts104