ilia da0419d9d3
CI / secret-scan (push) Successful in 32s
CI / python-ci (push) Successful in 1m5s
Merge pull request 'Public demo seed + README for GitHub' (#9) from feat/demo-board-public into main
2026-08-07 16:06:44 -05:00

Stork

Shareable baby-name boards: suggest names, vote, keep origin / meaning / pronunciation in English, Russian, and Hebrew, and optionally record how a name sounds.

Each board has a unique share link (/b/<uid>). Start a board with no password, add names, share the link. Live demo: stork.levkin.ca demo board.

Quick start (local)

cp .env.example .env   # optional STORK_INVITE_TOKEN bootstraps a "Family" board
make install
make test
make run

Open http://127.0.0.1:8094Start new board → share /b/…. Visitors open the link and enter a display name.

Features

  • Renamable columns (First is fixed; + adds up to 4; ✕ removes extras)
  • Votes / ranking per board
  • Locale notes (en / ru / he) + voice recordings (re-record overwrites)
  • Paper UI at / (classic layout at /v1)

API sketch

Method Path Notes
GET /api/health Liveness
POST /api/boards Start board {title}{id, url}
GET /api/boards/{id} Public board title + url
GET /api/resolve?invite= Legacy invite → board url
POST /api/session {board_id, display_name} → cookies
GET /api/columns Columns for session board
POST/PATCH/DELETE /api/columns… Add / rename / remove (not first)
GET/POST /api/names List / add
PATCH /api/names/{id} Locale notes
POST /api/names/{id}/vote {value: 1|-1|0}
POST/GET/DELETE /api/names/{id}/recording/{lang} Voice
DELETE /api/names/{id} Admin header X-Stork-Admin

Scripts

# Seed starter names onto a board
make seed STORK_BOARD_ID=b_…
# Demo set (Mira / Noa / Lior / Elena / Ezra):
STORK_SEED_FILE=data/demo-names.example.json make seed STORK_BOARD_ID=b_…

# Create an empty board and print share URL
.venv/bin/python scripts/create_board.py

Secrets

  • Local: gitignored .env
  • Deploy host: .env next to compose (never commit)

CI gates

Gitea Actions (.gitea/workflows/ci.yml): ruff and pytest are hard gates (no || true). Gitleaks on PRs. Bandit is advisory.

Production

Public HTTPS at stork.levkin.ca. Homelab deploy lives in a separate ansible repo (make deploy-stork).

S
Description
Shareable baby-name boards — votes, en/ru/he notes, voice. Demo: https://stork.levkin.ca/b/b_gS0LlZHm-lk
Readme MIT
7.1 MiB
Languages
Python 68.9%
HTML 28.6%
JavaScript 1%
Shell 0.8%
Makefile 0.6%
Other 0.1%