The open-source, self-hosted project management platform built for modern engineering teams.
Sprints Β· Kanban Β· Real-time Chat Β· Wiki Docs β all in one beautiful app.
View on GitHub Β· Report a Bug Β· Request a Feature Β· Discussions
Most project management tools are either too simple or locked behind expensive SaaS subscriptions. Zeta is fully self-hosted, open source, and free β giving your team complete ownership of their data and workflow.
| Zeta | Jira | Linear | |
|---|---|---|---|
| Self-hosted | β | β | β |
| Open source | β | β | β |
| Real-time collaboration | β | ||
| Built-in chat | β | β | β |
| Wiki & Docs | β | β | |
| AI summaries | π§ | π° | π° |
| Free forever | β | β | β |
Unified cockpit for sprint health β velocity trends, workload distribution, and real-time task metrics.
Spin up new projects, establish multiple active and planned sprints, map tasks, and track team activity updates.
Key Walkthrough Highlights:
- Dynamic Project Setup: Seamlessly spin up separate workspace boards with custom scopes.
- Sprint Sequencing: Spin up multiple sprints (active and upcoming) to plan deliverables.
- Task Alignment: Create and map tasks to sprint backlogs directly from task creation modals.
- Dashboard Activity Feed: Monitor real-time audit trails of workspace actions on the cockpit.
Move tasks across Backlog β In Progress β Review β Done with live Socket.io updates.
Rich TipTap editor with
@mentionsupport, real-time viewer presence, and per-project documentation spaces.
1-to-1 and group messaging with typing indicators, read receipts, file attachments, and deep-link notifications.
π Sprint Analytics Dashboard
- Personalized overview: completed tasks, active tasks, total count, sprint count
- Bar charts, area charts, and pie charts powered by Recharts
- Filter by project and sprint for focused metrics
- Velocity trend indicators showing week-over-week changes
- Task completion chart over the last 30 days
- Per-user workload and assignment distribution
π Project Management
- Create and manage multiple projects with descriptions
- Role-based project membership: Viewer / Contributor / Admin
- Invite members by email or user ID
- Per-project settings, member management, and deletion
- Project-level activity and audit trail
π Kanban Board
- Drag-and-drop task cards across fully customizable stages (add, rename, or remove columns)
- Default stages: Backlog β In Progress β Review β Done β extend with your own workflow steps
- Create, edit, and delete tasks inline
- Task cards display assignees, priority, due dates, and complexity points
- Supports infinite subtask hierarchy via a closure table model
- Sprint selector with start & end date indicators
- Interactive sidebar panel with detailed audit logs per task
π Sprint Management
- Create sprints with start and end dates
- Move tasks in and out of sprints (full backlog support)
- Sprint-level activity feed and comments
- Sprint analytics and burndown indicators
- Mark sprints complete and archive them
π Activity Feed & Audit Trails
- Main dashboard live activity feed aggregating workspace events
- Comprehensive task-level audit timelines capturing ownership changes, status updates, description edits, and comment threads
- Sprint-specific activity logs tracking scope additions and removals
- Live user presence events (real-time indicators in docs and chat)
β Task Detail
- Rich TipTap editor for descriptions (bold, italic, headings, lists, images, links)
@mentionusers directly in descriptions and comments- Multiple assignees with roles: Owner / Secondary Owner / POC / Assignee
- Set due dates, complexity points, sprint, reporter, GitHub link, branch name, and repo
- Threaded comments with nested replies
- File attachments (images, PDFs, docs, spreadsheets β up to 50 MB)
- Full audit log β every change recorded with optional comment
π Wiki & Documentation
- Per-project rich-text documentation with full TipTap editor
- Headings, blockquotes, highlights, alignment, images, and links
- Link docs to specific tasks for full traceability
- Real-time viewer indicator showing active user avatars
@usernameautocomplete mentions- Author/admin-only editing and deletion controls
π¬ Real-time Chat
- 1-to-1 direct messages and group chats
- Live typing indicators, online status, and read receipts
- Rich message editor with formatting,
@mentions, and file attachments - Message edit and soft-delete
- Paginated message history with lazy scroll loading
- Search messages across all chats from the command palette
- Deep-link to any message β click a notification and jump directly with highlight animation
- Group admin controls: rename, add/remove members, mute, toggle permissions
- Unread message count badges per chat
π Notifications
- Types: Mention / Assigned / Project Added / Task Changed / Due Soon
- Auto-generated Due Soon alerts within 3 days of due date
- Real-time notification bell with badge count
- Click any notification to deep-link to the relevant task, sprint, or message
π Global Search β Command Palette (`Ctrl+K` / `Cmd+K`)
- Searches across: Projects, Tasks, Sprints, Docs, People, Chats, Files, Notifications
- Filter by category for focused results
- Timestamp shown for chat message results (12-hour format)
- Instant DM creation from People search results
π File Storage
- Upload attachments to tasks, comments, sprints, and chat messages
- 50 MB per-file limit with allowlisted MIME types
- Global storage search β find any file you've uploaded or have access to
- Files served with authentication β no public URLs
βοΈ Admin Panel (Owner/Admin only)
- SMTP configuration β host, port, auth, TLS, and test connection
- AI configuration β enable/disable Gemini, choose model, set API key
- User invitations β invite by email with role assignment; revoke pending invites
- Privilege management β promote/demote users (owner only)
- Background email queue with retry logic (up to 3 attempts)
π Authentication
- Credentials login (email + password, min 8 characters)
- GitHub OAuth (optional)
- Email verification flow (when SMTP is configured)
- Forgot password / reset password via secure token email
- Invite-only registration option
- First registered user is automatically Owner + Admin
- Session-based auth via NextAuth.js v5
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5 |
| UI | Tailwind CSS v4, Radix UI, Lucide Icons |
| Rich Text | Tiptap v3 |
| Database | PostgreSQL via Prisma 7 |
| Real-time | Socket.io 4 |
| Auth | NextAuth.js v5 |
| Charts | Recharts |
| Drag & Drop | @hello-pangea/dnd |
| AI | Google Gemini API |
| Nodemailer | |
| Command Palette | cmdk |
| Notifications | Sonner |
| Passwords | bcryptjs |
The fastest way to get Zeta running is with Docker Compose. It spins up the app, PostgreSQL, pgAdmin (database UI), and Dozzle (log viewer) with a single command.
git clone https://github.com/codeterrayt/Zeta.git
cd ZetaCopy the example env file:
cp .env.example .envOpen .env and fill in the required values:
# Database (auto-configured by Docker Compose)
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/Zeta?schema=public"
# NextAuth β required for session encryption
AUTH_SECRET="your-auth-secret"
NEXTAUTH_URL="http://localhost:3000"
AUTH_TRUST_HOST=true
# Cron endpoint protection β generate with the command below
CRON_SECRET="your-cron-secret"Generate your secrets using Node.js crypto (no extra packages needed):
# Generate AUTH_SECRET
node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"
# Generate CRON_SECRET
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Copy the output values into your .env file.
docker compose up --build -dThat's it. Zeta starts with default configurations. Once running:
| Service | URL | Notes |
|---|---|---|
| Zeta App | http://localhost:3000 | Main application |
| pgAdmin | http://localhost:5050 | DB admin UI (admin@gmail.com / admin) |
| Dozzle Logs | http://localhost:8888 | Container log viewer |
The first account you register automatically becomes the Owner account. Register immediately after first boot to claim ownership.
If you'd prefer to run without Docker:
- Node.js >= 18
- PostgreSQL >= 14
- npm or pnpm
# 1. Clone
git clone https://github.com/codeterrayt/Zeta.git
cd Zeta
# 2. Install dependencies
npm install
# 3. Configure environment
cp .env.example .env
# Edit .env with your database URL and secrets (see above)
# 4. Run migrations
npx prisma migrate deploy
npx prisma generate
# 5. Start the dev server
npm run devOpen http://localhost:3000. The first user to register becomes the Owner and Admin.
# Lint the codebase
npm run lint
# Type-check without building
npx tsc --noEmit
# Explore the database visually
npx prisma studio
# Reset the database (destroys all data)
npx prisma migrate reset| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
β | PostgreSQL connection string |
AUTH_SECRET |
β | NextAuth session encryption secret |
NEXTAUTH_URL |
β | Full URL of your deployment (e.g. http://localhost:3000) |
AUTH_TRUST_HOST |
β | Set to true when behind a proxy or in Docker |
CRON_SECRET |
β | Secret to protect the /api/cron endpoint |
Zeta/
βββ src/
β βββ actions/ # Server Actions (auth, chat, tasks, notifications, searchβ¦)
β βββ app/
β β βββ (auth)/ # Login, Register, Verify Email, Reset Password
β β βββ (dashboard)/ # Dashboard, Projects, Sprints, Kanban, Chat, Docs, Settings
β β βββ api/ # REST API routes (upload, tasks PATCH, cron)
β βββ components/
β β βββ chat/ # Chat window, message list, composer, group info panel
β β βββ editor/ # TipTap editor + mention extension
β β βββ kanban/ # Kanban board and cards
β β βββ layout/ # Sidebar, navbar, command palette, notification panel
β β βββ projects/ # Project list, task detail modal, sprint views
β β βββ settings/ # User settings, admin panel
β β βββ sprints/ # Sprint dashboard, activity feed
β βββ lib/ # Prisma client, mail queue, utility helpers
β βββ auth.ts # NextAuth configuration
βββ prisma/
β βββ schema.prisma # Full database schema
βββ server.js # Custom Node.js server (Next.js + Socket.io)
βββ docker-compose.yml # Docker Compose with Postgres, pgAdmin, Dozzle
βββ .env.example # Environment variable template
- AI-powered thread summaries via Gemini API
- Github Integration with Tasks
We warmly welcome contributions from the community! Whether it's fixing a bug, improving docs, adding a feature, or sharing feedback β every contribution matters.
- Fork this repository
- Create a branch for your change
git checkout -b feat/your-feature-name
- Make your changes β keep commits focused and atomic
- Test your changes locally
- Open a Pull Request against
mainwith a clear description
- Follow the existing code style (TypeScript strict, Tailwind CSS v4, server actions)
- Keep PRs small and focused β one feature or fix per PR
- Use Conventional Commits for commit messages
- If adding a new feature, update the relevant documentation
- For security issues, open a private security advisory instead of a public issue
Issues tagged good first issue are well-scoped and beginner-friendly.
Zeta takes security seriously. If you discover a vulnerability, please do not open a public issue. Instead, open a private security advisory.
Security hardening includes: authenticated file serving, per-project authorization on all write operations, MIME type allowlisting, prompt injection mitigation, and cryptographically generated secrets.
Zeta is open source, released under the MIT License.
Built with these amazing open-source projects:
Next.js Β· Prisma Β· Socket.io Β· Tiptap Β· Tailwind CSS Β· NextAuth.js Β· Recharts Β· Radix UI Β· Lucide Β· hello-pangea/dnd
β If Zeta is useful to you, please star the repository β it helps others find the project!
β Star on GitHub Β· π Report Bug Β· π‘ Request Feature Β· π¬ Discussions




