A thinner, band-shaped, open-source e-paper watch. Miniaturized Watchy successor, built in https://projecthorae.com
  • Python 80.1%
  • HTML 11.3%
  • JavaScript 6.4%
  • Shell 2%
  • Dockerfile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude 0c8246e51f
All checks were successful
Waitlist tests / waitlist-tests (push) Successful in 4m1s
CI: run on git.borodutch.com (Forgejo Actions)
Non-Pages workflows move to .forgejo/workflows; GitHub (a push mirror) keeps only Pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:43:09 -07:00
.forgejo/workflows CI: run on git.borodutch.com (Forgejo Actions) 2026-10-22 15:43:09 -07:00
.github CI: run on git.borodutch.com (Forgejo Actions) 2026-10-22 15:43:09 -07:00
cad Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
explorer Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
hardware Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
media Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
research Build plan: JLC full-assembly estimate with live stock 2026-10-03 17:11:08 -07:00
tests Add email waitlist and durable Telegram notification backend (#1) 2026-10-04 14:25:20 +00:00
waitlist Add email waitlist and durable Telegram notification backend (#1) 2026-10-04 14:25:20 +00:00
.gitignore Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
.nojekyll Day 0: landing timeline + initial research 2026-10-03 14:36:57 -07:00
ASSEMBLY.md Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
CNAME Day 0: landing timeline + initial research 2026-10-03 14:36:57 -07:00
index.html Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
og.png Landing: newest-first timeline, current plan entry, OG/Twitter image and tags 2026-10-03 17:47:23 -07:00
ORDER.md Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
README.md Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
spec.py Pre-order review: board, case and RF reworked; order and assembly guides 2026-10-06 22:29:40 -07:00
waitlist.js Add email waitlist and durable Telegram notification backend (#1) 2026-10-04 14:25:20 +00:00

Project Horae

A miniaturized successor to Watchy, the open-source ESP32 e-paper watch. It's rebuilt as thin as possible, in a slim band form factor (think Fitbit Charge, not a square).

Build log: projecthorae.com

Build one

  • ORDER.md: the JLCPCB order (files and every order-form setting), the shopping list with Canadian sources, and the totals
  • ASSEMBLY.md: printing, a test-print checklist, bench bring-up, assembly, the dock wiring, and the firmware rules the hardware depends on
  • hardware/README.md: the board design, the pre-order review, what to verify at bring-up, and the cost

Research

  • Displays: bar-shaped e-paper and memory LCD panels
  • Batteries: thin LiPo, sodium-ion reality check, power budget
  • Electronics: EDA tools, fabs shipping to Vancouver, key ICs
  • CAD & printing: code-CAD and the headless Bambu A1 mini pipeline
  • Prototype v0: breadboard kit, steps, charging
  • Build plan, rev A: custom board straight away, order → solder → firmware → case → wear

3D explorer

The landing page's interactive model (explorer/) is generated from the case CAD and the KiCad board: .venv/bin/python cad/web.py (needs Docker for KiCad and npx for gltf-transform). Re-run it after changing the CAD or the board.

Printing (Bambu A1 mini, 0.4 nozzle, one filament per job)

  • cad/out/plates/petg.3mf: both shells plus the dock's tray and lid, in PETG Basic or Matte. Use 0.1 mm layers and a 0.1 mm first layer (it is the skin over the watch's magnets), no supports.
  • cad/out/plates/tpu.3mf: every seal and cushion plus the dock's grip pad, in TPU 90A (not 95A: twice as stiff) from the external spool, printed slowly. Give the bezel gasket 0.08 mm layers.
  • Carbon-fibre version: print petg-cf.3mf (PETG-CF, hardened nozzle) and petg-cf-set.3mf (the colour-matched PETG parts) instead of petg.3mf.
  • Per-part notes (orientation, layer heights, squeeze) are in PRINT in cad/horae.py, and a full .venv/bin/python cad/horae.py run prints them.

Adding a timeline entry

The timeline is newest first. Add a new <li class="entry"> block at the top of the <ol class="timeline"> in index.html, and put its photos in media/YYYY-MM-DD/.