Architecture
app.abhyas.design owns all design source. app.abhyas.context owns documentation and consumes a verified compiled design artifact, never a source copy.
app.abhyas.storage (the book, LaTeX)
│ "Sync from the book" opens migration PRs
▼
app.abhyas.database.dev ──release──▶ app.abhyas.database.prd
│ migrations │ migrations
▼ ▼
Supabase dev Supabase prd
▲ ▲
│ supabase-js (browser) │ supabase-js (browser)
abhyas.dev.nishko.co abhyas.nishko.co
▲ ▲
app.abhyas.frontend.dev ──release──▶ app.abhyas.frontend.prd
Rules
- The site depends only on the database. The outline, lessons and questions all live in Supabase. The website never reads the book repository.
- The book reaches the database as migrations. database.dev turns book changes into reviewed migration pull requests.
- Build once, deploy the same files. A merge to a
.devrepository makes one numbered release. The.prdrepository deploys that exact release; it never builds anything. - No server. The website is a static export on GitHub Pages. All logic runs in the browser and talks to Supabase directly with a publishable key. Supabase sign-in plus row-level security protect the data.
- dev first. Changes merge into the
.devrepositories and go live on dev. prd is deployed by hand, database before frontend.
Pieces
| Piece | Technology |
|---|---|
| Website | Next.js 16 (static export), React 19, Primer React (GitHub's design system), Zustand |
| Sign-in | Supabase Auth with GitHub (PKCE), invite-only |
| Data | Supabase Postgres, row-level security |
| Schema | Prisma Migrate (schema and migrations only; no Prisma Client) |
| Design system | @nishkodotco/abhyas-design-system in app.abhyas.design: React components on Primer, colour tokens, stylesheets, checks |
| Hosting | GitHub Pages (both sites, these docs and Storybook) |
| CI/CD | GitHub Actions, GitHub Releases |
| Book | LaTeX, built with latexmk; Python scripts generate the outline and index |