A retrospective web app for teams. Run retro sessions with your project members — collect feedback, vote on items, bundle themes, assign actions, and hold each other accountable in the next session's review phase.
- API — Hono on Node, SQLite via Drizzle ORM, better-auth for GitHub OAuth
- Web — Astro with React islands, Tailwind CSS
- Shared — TypeScript types and constants shared across packages
Monorepo managed with npm workspaces.
- Node.js 20+
- A GitHub OAuth App (callback URL:
http://localhost:3001/api/auth/callback/github)
# Clone and install
git clone https://github.com/your-org/twenty-twenty.git
cd twenty-twenty
npm install
# Configure environment
cp .env.example .env
# Fill in GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, and BETTER_AUTH_SECRET
# Run database migrations
npm run db:migrate
# Start dev servers (API on :3001, Web on :4321)
npm run dev| Command | Description |
|---|---|
npm run dev |
Start API and web servers concurrently |
npm run dev:api |
Start API server only |
npm run dev:web |
Start Astro dev server only |
npm run build |
Build both packages for production |
npm run db:generate |
Generate a Drizzle migration |
npm run db:migrate |
Run Drizzle migrations |
npm run test:e2e:run |
Run end-to-end tests (requires Docker) |
packages/
api/ Hono API server, database schema, auth
web/ Astro frontend with React islands
shared/ Shared types and constants
- Review — Review action items from the previous session. Each assignee's work is rated by the team.
- Ideation — Team members submit "went well" and "didn't go well" items, then vote.
- Action — Group items into bundles, create action items, and assign owners.
- Closed — Session is archived and actions carry forward to the next retro's review phase.
MIT