You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Kanbun is a personal contact manager for relationship-driven outreach. The product direction is a unified system that can:
3
+
Kanbun is an open-source personal contact manager for relationship-driven outreach.
4
4
5
-
- sync contacts and communication metadata from Gmail and Microsoft Outlook
6
-
- import contacts from CSV into a normalized database
7
-
- manage sequences, ad hoc follow-ups, and contact tasks from one application
8
-
- integrate with Todoist for task capture and workflow continuity
5
+
It brings contacts, follow-ups, sequences, provider sync, and operator review into one application so you can run personal CRM work without bouncing between Gmail, Outlook, CSV spreadsheets, and Todoist.
9
6
10
-
The repository is intentionally starting with architecture and operating-model documentation before application code. The goal is to make the codebase agent-friendly, legible, and maintainable from day one.
7
+
## What It Does
11
8
12
-
## Current status
9
+
- sync contacts from Gmail and Microsoft Outlook
10
+
- import contacts from CSV into a canonical PostgreSQL model
11
+
- create and manage ad hoc follow-ups inside the app
12
+
- enroll contacts into multi-step email sequences
13
+
- generate drafts, queue sends, and keep approvals supervised
14
+
- detect replies and stop future sequence steps automatically
15
+
- surface merge conflicts, connector issues, outbound approvals, and task exceptions in one review inbox
16
+
- mirror follow-up tasks into Todoist
13
17
14
-
Planning is complete and the repository bootstrap is underway. The current app includes:
18
+
## Current Status
15
19
16
-
- a Next.js 16 app-router foundation
20
+
Kanbun is already runnable locally and covers the core operator loop:
21
+
22
+
- connect Google and Microsoft accounts
23
+
- import and unify contacts
24
+
- create and edit manual contacts
25
+
- manage follow-ups and Todoist mirroring
26
+
- create sequences, approve drafts, and send through connected accounts
27
+
- review merge conflicts and connector issues
28
+
29
+
It is still early-stage software. The product model is strong, but the repo is not yet fully production-hardened or polished for broad public usage.
30
+
31
+
## Stack
32
+
33
+
- Next.js 16
34
+
- React 19
17
35
- Tailwind CSS 4
18
36
-`shadcn/ui`
19
-
- a Kanbun app shell with database-backed home, contacts, imports, and tasks views
20
-
- local PostgreSQL scaffolding via Docker Compose
21
-
- Drizzle ORM schema and migrations
22
-
- owner-mode password authentication backed by PostgreSQL sessions
23
-
- a robust CSV import flow with file idempotency, draft preview and remapping, per-row edits and skip controls, paginated review, downloadable review reports, and dedicated worker processing into canonical contacts
24
-
- Google OAuth connected-account scaffolding with worker-driven People API contact sync into the canonical contact model
25
-
- Microsoft OAuth connected-account scaffolding with worker-driven Graph contact sync into the same canonical contact model
26
-
- a multi-step sequence engine with durable enrollments, worker-generated review drafts, retry/cancel controls, automatic provider reply detection, and queued outbound delivery through connected Gmail or Microsoft accounts
27
-
- a unified review inbox for outbound approvals, merge conflicts, connector issues, import exceptions, and Todoist task failures
28
-
- manual contact creation/editing plus search and source/attention filters on the canonical contacts list
29
-
- ad hoc follow-up creation from the contact workspace into the Kanbun task queue
30
-
- Todoist API-token task mirroring with worker-driven reconciliation back into Kanbun task state
31
-
- baseline lint, typecheck, unit test, browser E2E, build, and CI setup
32
-
33
-
## Docs
34
-
35
-
-[Agent guide](./AGENTS.md)
36
-
-[Docs index](./docs/README.md)
37
-
-[ADR index](./docs/adr/README.md)
37
+
- PostgreSQL
38
+
- Drizzle ORM
39
+
- TypeScript
38
40
39
41
## Quickstart
40
42
43
+
### Prerequisites
44
+
45
+
- Node.js 20+
46
+
-`pnpm`
47
+
- Docker
48
+
49
+
### Local Setup
50
+
41
51
```bash
42
52
pnpm install
43
53
cp .env.example .env.local
@@ -51,18 +61,40 @@ pnpm worker
51
61
```
52
62
53
63
Open `http://localhost:7890`.
54
-
PostgreSQL is exposed on `localhost:5433` by default to avoid collisions with an existing local database.
55
-
If `OWNER_MODE_ENABLED=true`, sign in with the `OWNER_EMAIL` and `OWNER_PASSWORD` values from `.env.local`.
56
-
If `OWNER_MODE_ENABLED=false`, the app bypasses sign-in for local development.
57
-
Set `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` to enable the Gmail/People integration, Gmail send permissions, and automatic reply detection.
58
-
Set `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET`, and optionally `MICROSOFT_TENANT_ID` to enable the Microsoft Graph integration, Outlook send permissions, and automatic reply detection.
59
-
Set `TODOIST_API_TOKEN` to enable Todoist task mirroring.
60
-
The app runs on port `7890` by default.
61
-
Make sure `KANBUN_URL` matches the OAuth redirect origin you register with the providers.
62
-
If you connected Google or Microsoft before outbound sending and reply detection were added, reconnect once so the new read/send scopes are granted.
63
-
Sequence sends currently obey per-sequence send windows and a per-account daily send cap.
64
-
65
-
## Core commands
64
+
65
+
## Environment
66
+
67
+
### Core
68
+
69
+
-`KANBUN_PORT`
70
+
-`KANBUN_URL`
71
+
-`DATABASE_URL`
72
+
-`APP_ENCRYPTION_KEY`
73
+
-`OWNER_MODE_ENABLED`
74
+
-`OWNER_EMAIL`
75
+
-`OWNER_PASSWORD`
76
+
77
+
If `OWNER_MODE_ENABLED=false`, Kanbun bypasses sign-in for local development.
78
+
79
+
### Optional Integrations
80
+
81
+
-`GOOGLE_CLIENT_ID`
82
+
-`GOOGLE_CLIENT_SECRET`
83
+
-`MICROSOFT_CLIENT_ID`
84
+
-`MICROSOFT_CLIENT_SECRET`
85
+
-`MICROSOFT_TENANT_ID`
86
+
-`TODOIST_API_TOKEN`
87
+
88
+
## OAuth Redirect URIs
89
+
90
+
Register these exact callback URLs in your provider apps when running locally:
This repo is intentionally documentation-first and agent-friendly.
124
+
125
+
Before changing behavior, read the relevant ADRs and product docs first. The expectation is that code follows the documented operating model instead of drifting into undocumented behavior.
126
+
127
+
## Near-Term Work
128
+
129
+
The biggest remaining areas are:
130
+
131
+
- outbound hardening and thread-aware reply tracking
132
+
- stronger contact merge and duplicate resolution tooling
0 commit comments