尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Homeschool curriculum planner and daily learning tracker — the app behind lessonhollow.com
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Lesson Hollow is a homeschool curriculum planner and daily learning tracker. Parents (or self-directed learners) build or import curricula, enroll players (students), and work a paced daily task list. It is a Next.js app backed by Supabase and deployed to Fly.io.
Live at lessonhollow.com.
Why this exists: I built it so a curriculum becomes a paced daily list instead of a static outline you re-plan every morning. The planner, the CSV curriculum format, and the agent MCP surface are open source under MIT so families and builders can inspect, self-host, and contribute.
Try it fast
public/curriculums/| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router, standalone output), React 19, TypeScript |
| Styling | Pico CSS, Lucide icons |
| State | Zustand |
| Backend | Supabase (Postgres + Auth); schema in supabase/migrations/ |
| Payments | Zaprite (Bitcoin, Lightning, card) |
| Images | fal.ai (reward image generation) |
| AWS SES | |
| Hosting | Fly.io (Docker, blue-green) |
This repo ships a Nix + direnv dev shell (flake.nix, .envrc). With
direnv installed, direnv allow drops you into a shell with the right
Node toolchain. Without Nix, use Node 22.
cp .env.example .env.local # fill in your own keys (see table below)
npm install
npm run dev # http://localhost:3000
Other scripts:
npm run build # production build (runs the blog-post validator first via prebuild)
npm run lint # eslint
npm test # vitest unit tests
npm run test:e2e # playwright end-to-end tests
Copy .env.example to .env.local and fill in your own values. NEXT_PUBLIC_* variables are
exposed to the browser; the rest are server-only.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase project URL + publishable anon key |
SUPABASE_SERVICE_ROLE_KEY | Server-side Supabase access |
SUPABASE_JWT_SECRET | Verifies MCP API-key auth |
NEXT_PUBLIC_APP_URL / NEXT_PUBLIC_SITE_URL | App/site base URLs (redirects, RSS) |
ZAPRITE_API_KEY / ZAPRITE_WEBHOOK_SECRET | Payments |
FAL_KEY | fal.ai reward-image generation |
API_KEY_ENCRYPTION_KEY | AES-256-GCM key for encrypting stored fal.ai keys (32 bytes hex) |
AWS_SES_REGION / AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SES_FROM_EMAIL | Feedback-notification email |
ADMIN_PLAYER_AUTH_USER_ID | Curricula from this player auto-publish (leave unset to disable) |
NEXT_PUBLIC_GOOGLE_SHEETS_TEMPLATE_URL | Public "make a copy" link for the CSV template |
NEXT_PUBLIC_GA_MEASUREMENT_ID | Google Analytics 4 (leave empty to disable) |
TEST_* | E2E test-account credentials |
Curricula can be imported from CSV. Ready-to-use curriculum files live in
public/curriculums/; the full spec is in
docs/csv-format-gt2.md. A blank template is at
public/lesson-hollow-template.csv.
Pushing to main triggers the GitHub Actions workflow in
.github/workflows/deploy.yml, which cleans up stale blue-green
machines and runs flyctl deploy --remote-only against the Fly app lessonhollow. The only
required repository secret is FLY_API_TOKEN. Public NEXT_PUBLIC_* build args are baked in via
fly.toml; all runtime secrets are managed as Fly secrets, not in this repo.
See CONTRIBUTING.md, including how to contribute a curriculum CSV.
MIT © 2026 Sally Cole