

Github display
An ESP32-powered LED matrix display that shows your GitHub contribution graph in real-time.
- Size
- 79.4 × 66 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 5
- Nets
- 31
- Pads
- 42
- Tracks, vias
- 33, 10
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 15 Oct 2025
- Updated
- 23 Nov 2025
Overview
Github display is an open-source printed circuit board by phultquist, from the phultquist/github-display repository on GitHub. It is a 2-layer board of 79.4 × 66 mm with 5 parts on 31 nets, routed with 33 tracks and 10 vias.
It is built around the 0402YA470JAT2A. Its parts include 3 ICs and 2 capacitors. It belongs with the lEDs and displays boards and the ESP32 boards of this library.
Main components
1README
README.mdGitHub Display
An ESP32-powered LED matrix display that shows your GitHub contribution graph in real-time.
Features
- 256 LED (16x16) matrix display
- Automatic WiFi connection with captive portal setup
- Fetches data from custom API every 10 seconds
- Hard-coded Device ID: "1"
- WiFi credential reset functionality
Initial Setup
First Time Power-On
- Power on the device - The ESP32 will boot up
- Wait 3 seconds - The device will attempt to connect to WiFi (will fail on first boot)
- Connect to AP - A WiFi access point named
GithubDisplay-Setupwill appear - Join the network - Connect your phone/computer to
GithubDisplay-Setup - Configure WiFi - A captive portal should open automatically (if not, navigate to
192.168.4.1) - Enter credentials - Select your WiFi network and enter the password
- Save - Click "Save" and the device will connect to your WiFi
- Display starts - The LED matrix will begin displaying your GitHub data
What Happens Next
- WiFi credentials are saved automatically in the ESP32's flash memory
- On every subsequent boot, the device will auto-connect to your WiFi
- The display updates every 10 seconds with fresh data from the API
Resetting WiFi Credentials
If you need to connect to a different WiFi network or clear the stored credentials:
Reset Procedure
- Press the RESET button (don't hold any other buttons)
- Watch the Serial Monitor - You'll see:
💡 Press and hold BOOT button now to clear WiFi (3 sec window)... - Quickly press and hold BOOT - You have 3 seconds to press the BOOT button
- Keep holding for 2 seconds - The status LED will blink rapidly to show progress
- Wait for confirmation - After 2 seconds, you'll see 3 slow blinks = WiFi cleared!
- Device restarts in AP mode - The
GithubDisplay-SetupAP will appear again - Repeat initial setup - Follow the "First Time Power-On" steps above
Visual Feedback
- Rapid blinking (during 2-second hold) = Counting down
- 3 slow blinks = WiFi credentials successfully cleared
- Solid LED = Device connected and running normally
Troubleshooting
Device stuck in download mode (red light only)
If you accidentally held BOOT while pressing RESET, the device enters bootloader mode:
Solution: Simply press the RESET button once (without holding BOOT) to recover
WiFi not connecting
- Check that your WiFi credentials are correct
- Make sure your WiFi network is 2.4GHz (ESP32 doesn't support 5GHz)
- Try resetting WiFi credentials and setting up again
Display not updating
- Check Serial Monitor for error messages
- Verify the device has internet access
- Confirm the API endpoint is accessible:
https://github-display-server.vercel.app/api/1
Serial Monitor shows JSON parse errors
The API might be returning invalid data - check the API endpoint directly in a browser
Hardware
- ESP32 Development Board
- LED Strip: 256 LEDs (WS2812B/NeoPixel compatible) on GPIO 5
- Status LED: GPIO 2 (built-in on most ESP32 boards)
- BOOT Button: GPIO 0 (built-in on most ESP32 boards)
- RESET Button: EN pin (built-in on most ESP32 boards)
API Endpoint
The device fetches data from:
https://github-display-server.vercel.app/api/1Expected JSON format:
{
"data": [
[0, 255, 128, ...], // Row 1: 16 values (0-255)
[0, 0, 255, ...], // Row 2: 16 values (0-255)
// ... 16 rows total
]
}Each value represents the green intensity (0-255) for that LED.
Development
Arduino IDE Setup
- Install the Arduino IDE
- Install ESP32 board support
- Install required libraries:
- Adafruit NeoPixel
- ArduinoJson
- WiFiManager
Uploading Code
- Connect ESP32 via USB
- Select your board and port in Arduino IDE
- Click Upload
- Wait for compilation and upload to complete
Configuration
All configuration is at the top of sketch_oct14a.ino:
const char *API_BASE = "https://github-display-server.vercel.app/api";
const String DEVICE_ID = "1";
const int NUM_LEDS = 256;
const int STRIP_BRIGHTNESS = 5;Adjust STRIP_BRIGHTNESS (0-255) if the display is too bright or too dim.
Parts
5| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 0402YA470JAT2A | 0402YA470JAT2A:CAPC1005X56N | C1, C2 |
| 2 | WS2812-2020 | WS2812-2020:LED_WS2812-2020 | U1, U2 |
| 1 | ESP32_DevKit_V1_DOIT | esp32_kicad_mod:esp32_devkit_v1_doit | U3 |
Questions
How big is the Github display PCB?
It measures 79.4 × 66 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Github display use?
5 parts, built around the 0402YA470JAT2A. 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 Github display KiCad files?
From the phultquist/github-display repository on GitHub, at the commit this page was made from: the board is pcb/pcb/pcb.kicad_pcb and its schematic github-display/github-display.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Github display design in my own project?
Its repository states no licence, so its author keeps all rights: ask phultquist before reusing the design.
Similar boards
- 2 layers98 × 27 mm

- 2 layers21 × 33 mm

24g2usb pico2w
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.
5 parts1.7kApache-2.0 - 2 layers53.2 × 59.6 mm

A10 OLinuXino Lime Rev B SHIELD TEMPLATE
OLIMEX/OLINUXINO
OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C
5 parts1.5k - 2 layers30 × 11 mm

Main control board servo tester
jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.
5 parts1.1k - 2 layers78.8 × 35.3 mm

KiCadTest
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
5 parts915 - 2 layers50 × 23 mm

- 2 layers43.2 × 28.5 mm

- 2 layers20.3 × 15.2 mm

L0 light sensor
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
5 parts546MIT