bd2a4c017c9d3c8ddf048776cb5c794841b663bc
- Engagement scoring system (0-100) based on recency, interactions, emails, events, notes - GET /api/engagement — all client scores with distribution summary - GET /api/clients/:id/engagement — individual client score with recommendations - GET /api/stats/overview — system-wide dashboard stats - Automated birthday check job (pg-boss, daily at 8am UTC) - Birthday notification emails to advisors (7 days before + day of) - 73 tests passing (up from 56)
Network App API
Backend API for The Network App — an AI-powered CRM for wealth management advisors.
Stack
- Runtime: Bun
- Framework: Elysia
- Database: PostgreSQL + Drizzle ORM
- Auth: BetterAuth
- AI: LangChain.js (Anthropic Claude)
- Email: Resend
Quick Start
Prerequisites
- Bun v1.0+
- PostgreSQL 15+
Setup
-
Install dependencies:
bun install -
Copy environment file:
cp .env.example .env -
Configure
.envwith your values (database, API keys, etc.) -
Push database schema:
bun run db:push -
Start development server:
bun run dev
API runs at http://localhost:3000
API Endpoints
Auth (BetterAuth)
POST /api/auth/sign-up— RegisterPOST /api/auth/sign-in/email— LoginPOST /api/auth/sign-out— LogoutGET /api/auth/session— Get current session
Clients
GET /api/clients— List clientsGET /api/clients/:id— Get clientPOST /api/clients— Create clientPUT /api/clients/:id— Update clientDELETE /api/clients/:id— Delete clientPOST /api/clients/:id/contacted— Mark as contacted
Emails
POST /api/emails/generate— Generate AI emailPOST /api/emails/generate-birthday— Generate birthday messageGET /api/emails— List emailsGET /api/emails/:id— Get emailPUT /api/emails/:id— Edit draftPOST /api/emails/:id/send— Send emailDELETE /api/emails/:id— Delete draft
Events
GET /api/events— List eventsGET /api/events/:id— Get eventPOST /api/events— Create eventPUT /api/events/:id— Update eventDELETE /api/events/:id— Delete eventPOST /api/events/sync/:clientId— Sync client birthdays/anniversaries
Database
Generate migrations
bun run db:generate
Apply migrations
bun run db:migrate
Push schema (development)
bun run db:push
Open Drizzle Studio
bun run db:studio
Docker
docker build -t network-app-api .
docker run -p 3000:3000 --env-file .env network-app-api
Project Structure
src/
├── index.ts # Entry point
├── routes/
│ ├── clients.ts # Client CRUD
│ ├── emails.ts # AI email generation
│ └── events.ts # Event tracking
├── services/
│ ├── ai.ts # LangChain integration
│ └── email.ts # Resend integration
├── db/
│ ├── schema.ts # Drizzle schema
│ └── index.ts # DB connection
├── lib/
│ └── auth.ts # BetterAuth config
└── types/
└── index.ts # TypeScript types
Description
Languages
TypeScript
99.8%
Dockerfile
0.1%