Tech stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 + React 19 (App Router) |
| Backend | NestJS 11 |
| Database | PostgreSQL via Prisma ORM |
| Auth | Better Auth (GitHub OAuth + optional email/password) |
| AI agents | LangGraph (graph agents in TypeScript) |
| Meeting bot | Puppeteer + Deepgram (Google Meet recording) |
| Monorepo | Nx + Bun 1.3.10 workspaces |
Repository structure
Apps
Libraries
Prerequisites
Before setting up Zuko, make sure you have the following installed.Node.js 22
Zuko requires Node.js 22 (matches the CI environment). Earlier versions will not work.Bun 1.3.10+
Bun is used as the package manager and runtime across the monorepo.PostgreSQL
Zuko uses PostgreSQL for all data storage. Any recent version works.API keys
Required:- OpenAI API key — for AI chat. Get one at platform.openai.com
- GitHub OAuth credentials — for authentication. Create an OAuth App at github.com/settings/developers
- LangSmith API key — for agent tracing at smith.langchain.com
- Deepgram API key — only needed for the meeting bot
Core concepts
CRM entities
Contacts, companies, and deals are the three core CRM entities, modeled in the database and exposed via the backend API.Agentic chat
An AI chat interface where conversations can be attached to any CRM entity, keeping AI responses grounded in real customer data.AI agents service
A separate LangGraph service (apps/ai-agents) that runs the agent logic and calls the backend via authenticated /api/agents/* endpoints.