An open API service indexing awesome lists of open source software.

https://github.com/dmatking/esp32-gh-dashboard

GitHub repository traffic vanity dashboard for the classic CYD cheap yellow display 2.8" version and others.
https://github.com/dmatking/esp32-gh-dashboard

cheap-yellow-display cheap-yellow-display-esp32-2432s028r cyd embedded esp-hosted esp-idf esp32 esp32-c6 esp32-p4 github-api github-dashboard github-stats github-stats-shower mipi-dsi waveshare

Last synced: 9 days ago
JSON representation

GitHub repository traffic vanity dashboard for the classic CYD cheap yellow display 2.8" version and others.

Awesome Lists containing this project

README

          

# esp32-gh-dashboard

A GitHub traffic dashboard built primarily for the wildly popular **"CYD"** family (Cheap Yellow Display — the cheap ESP32-with-screen modules). Also runs on the higher-end Waveshare ESP32-P4-WIFI6-Touch-LCD-4B for the 720×720 round-display crowd. Shows views, clones, stars, and day-over-day deltas for all your repositories, cycling through a summary screen and a per-repo detail screen for each.

CYD 2.8 summary screen CYD 2.8 repo screen

CYD 3.5" screenshots

CYD 3.5 summary screen CYD 3.5 repo screen

The 3.5" board renders the same layout as the 2.8" in the top-left, with empty space below — easy to retune later if you want to use the full 480×320 area.

Waveshare P4 screenshots

P4 summary screen P4 repo screen

---

## What you need

- One of the supported boards (full list below)
- A GitHub classic personal access token with `repo` scope — [how to create one](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic)
- The [github-traffic-log](https://github.com/dmatking/github-traffic-log) companion repo set up and running (collects your traffic data daily)

---

## 1. Flash the firmware

Pick the binary matching your board:

| Board | Chip | Display | Binary |
| ----- | ---- | ------- | ------ |
| **CYD 2.8" ILI9341** (E32R28T/E32N28T) — recommended | ESP32 | 320×240 | [`esp32-gh-dashboard-cyd28-flash.bin`](https://github.com/dmatking/esp32-gh-dashboard/releases/latest/download/esp32-gh-dashboard-cyd28-flash.bin) |
| **CYD-S3 2.8" ILI9341** (ES3C28P) | ESP32-S3 | 320×240 | [`esp32-gh-dashboard-cyd28s3-flash.bin`](https://github.com/dmatking/esp32-gh-dashboard/releases/latest/download/esp32-gh-dashboard-cyd28s3-flash.bin) |
| **CYD 3.5" ST7796** (E32R35T/E32N35T) | ESP32 | 480×320 | [`esp32-gh-dashboard-cyd35-flash.bin`](https://github.com/dmatking/esp32-gh-dashboard/releases/latest/download/esp32-gh-dashboard-cyd35-flash.bin) |
| **Waveshare ESP32-S3 Touch LCD 2.0"** (ST7789) | ESP32-S3 | 320×240 (landscape) | [`esp32-gh-dashboard-wvshr200-flash.bin`](https://github.com/dmatking/esp32-gh-dashboard/releases/latest/download/esp32-gh-dashboard-wvshr200-flash.bin) |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-4B | ESP32-P4 | 720×720 | [`esp32-gh-dashboard-p4-flash.bin`](https://github.com/dmatking/esp32-gh-dashboard/releases/latest/download/esp32-gh-dashboard-p4-flash.bin) |

The links above always serve the latest tagged release. For a specific version, see [Releases](https://github.com/dmatking/esp32-gh-dashboard/releases).

### Option A — Web flasher (easiest, no install required)

Open **[ESPConnect](https://thelastoutpostworkshop.github.io/ESPConnect/)** in Chrome or Edge, plug your board in, and flash the binary you downloaded above.

Step-by-step instructions (click to expand)

> **Use Chrome or Edge.** Firefox/Safari don't support the Web Serial API the flasher needs.

1. **Download** the right binary for your board from the table above (right-click → Save Link As).
2. **Plug the board into your computer.** Most CYDs use a CH340/CH9102 USB-serial chip — on Windows you may need the [CH340 driver](https://www.wch-ic.com/downloads/CH341SER_EXE.html). macOS and modern Linux usually work out of the box.
3. **Open [ESPConnect](https://thelastoutpostworkshop.github.io/ESPConnect/)** in Chrome or Edge.
4. **Click "Connect Esp"** (the green button). A browser dialog will list serial ports — pick the one labeled `USB-SERIAL CH340`, `CP210x`, or similar (likely the only one if you don't have other USB-serial devices plugged in). Click *Connect*.
- *Nothing in the dialog?* Unplug and replug the board, and confirm your USB cable is a **data cable**, not charge-only. Try a different port.
5. **Wait for the chip to be detected** — the flasher will print a line like `Detected ESP32` (or `ESP32-P4`) and show offset fields below.
6. **Set the firmware file at offset `0x0`:**
- In the first row, set the offset to **`0x0`** (zero — *not* the default 0x1000).
- Click **Choose File** and pick the `.bin` you downloaded in step 1.
- You can ignore any other offset rows — the merged binary already contains the bootloader + partition table + app at their correct internal offsets.
7. **Click "Erase Flash"** (optional but recommended for a clean install).
8. **Click "Program"** and wait — the progress bar takes about 20-30 seconds.
9. When done, **unplug and replug the board** (or hit the RST button if your CYD has one). The dashboard should boot and display the *WiFi Setup* screen.

**Stuck on "Connecting..." or `Failed to connect`?** Some ESP32 dev boards need to be put into download mode manually: hold the **BOOT** button (sometimes labeled IO0) while pressing-and-releasing **RESET** (sometimes EN), then release BOOT. Then retry step 4.

### Option B — esptool (Python)

For the CYD 2.8" (classic ESP32):
```bash
pip install esptool
python -m esptool --chip esp32 -b 460800 \
--before default_reset --after hard_reset \
write_flash 0x0 esp32-gh-dashboard-cyd28-flash.bin
```

For the CYD-S3 2.8" (ESP32-S3):
```bash
python -m esptool --chip esp32s3 -b 460800 \
--before default_reset --after hard_reset \
write_flash 0x0 esp32-gh-dashboard-cyd28s3-flash.bin
```

For the CYD 3.5" (classic ESP32):
```bash
python -m esptool --chip esp32 -b 460800 \
--before default_reset --after hard_reset \
write_flash 0x0 esp32-gh-dashboard-cyd35-flash.bin
```

For the Waveshare 2.0" Touch (ESP32-S3):
```bash
python -m esptool --chip esp32s3 -b 460800 \
--before default_reset --after hard_reset \
write_flash 0x0 esp32-gh-dashboard-wvshr200-flash.bin
```

For the Waveshare P4:
```bash
python -m esptool --chip esp32p4 -b 460800 \
--before default_reset --after hard_reset \
write_flash 0x0 esp32-gh-dashboard-p4-flash.bin
```

---

## 2. First-boot setup

On first boot, the device creates a WiFi access point called **GithubDashboard**.

1. Connect your phone or laptop to **GithubDashboard**
2. A setup page should open automatically — if it doesn't, open a browser and go to **http://192.168.4.1/**
3. Fill in the form:
- **WiFi Network** and **Password**
- **GitHub Username** and **GitHub Token**
- **Timezone** — pick from the dropdown, or enter a custom POSIX string
- **Daily refresh hour** — what hour (0–23) to fetch fresh data each day (default: 6)
- **Screen cycle time** — seconds between screens (default: 30)
4. Tap **Save & Connect**

The device saves your settings and connects to your WiFi. Subsequent boots connect directly.

**To change any setting**:

- **CYD**: re-flash the binary to clear settings (no button-triggered re-provisioning yet). Or, if you've entered a bad GitHub token, the device detects the auth failure on its next fetch and drops you back into the setup page automatically with a "GitHub Auth Failed" title — WiFi creds are preserved.
- **Waveshare P4**: hold the **BOOT button for 3 seconds** at any time while the dashboard is running. The device restarts and the setup page reopens with your existing values pre-filled — change only what you need and tap Save & Connect again.

---

## 3. Optional: filter which repos appear

Copy [`repo_config.csv`](repo_config.csv) to the root of your `github-traffic-log` repo and edit it to match your repositories:

| repo | show | exclude_totals | effect |
| ---- | ---- | -------------- | ------ |
| my-main-project | 1 | 0 | shown on display, counted in totals |
| old-experiment | 0 | 0 | hidden from display, counted in totals |
| profile-readme | 0 | 1 | hidden from display, excluded from totals and leaderboard |

If the file is absent, all repos are shown and nothing is excluded.

---

For build instructions, project architecture, and hardware details see [BUILDING.md](BUILDING.md).