The Three Repositories¶
Genesis is developed and deployed from three Git repositories, each with a single, clear responsibility.

1. Backend — genesis¶
The Spring Boot API server: authentication, workspaces, documents,
tokenization, all four annotation types, notifications, recommendations,
import/export, and PostgreSQL persistence. Ships its own Dockerfile.
| Branch | Meaning |
|---|---|
main |
Latest reviewed development state — every change lands here via PR |
uni-prod |
Exactly what runs in production; updated from main via PR |
2. Frontend — genesis-frontend¶
The Next.js web application: every screen described in the
User Guide. Talks only to the backend API. Ships its own
Dockerfile.
| Branch | Meaning |
|---|---|
main |
Latest reviewed development state — every change lands here via PR |
uni-prod |
Exactly what runs in production; updated from main via PR |
3. Deployment — genesis-deploy¶
This repository. No application code — it defines how Genesis runs:
docker/docker-compose.yml— the full stack (PostgreSQL + backend + frontend) as one unit;scripts/— fetch both app repos atuni-prod, build, start, verify;config/.env.example— every setting, documented;docs/— this handbook, published to GitHub Pages;.github/workflows/— CI that proves the whole pipeline works on every change.
| Branch | Meaning |
|---|---|
main |
The only branch — pipeline, config, and docs evolve here |
How they work together¶
genesis (backend) genesis-frontend
│ PR: main → uni-prod │ PR: main → uni-prod
▼ ▼
[uni-prod] [uni-prod]
└──────────┬──────────────────┘
│ fetched at deploy time by
▼
genesis-deploy ── ./scripts/deploy.sh ──▶ running stack
The deployed system's shape on the host:

Workflow rules¶
- Every change starts as a branch forked from fresh
main— in whichever app repo it belongs to. Never commit tomainoruni-proddirectly. - The branch is pushed and opened as two pull requests: one against
main, one againstuni-prod(when the change must reach production). - A maintainer reviews and merges both.
- On the production host:
cd genesis-deploy && git pull && ./scripts/deploy.shpicks up the newuni-prodstate. - Rollback = point
uni-prodback at the previous commit and redeploy (see Operations).
License¶
All three repositories are licensed under Apache License 2.0 — a
permissive license that lets anyone use, modify, and redistribute the code
(including commercially) with attribution, and includes an explicit patent
grant protecting users and contributors. Each repo carries the full text
in its LICENSE file.