Initial API scaffold: Elysia + Bun + Drizzle + BetterAuth + LangChain
This commit is contained in:
128
README.md
Normal file
128
README.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# 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](https://bun.sh/) v1.0+
|
||||
- PostgreSQL 15+
|
||||
|
||||
### Setup
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
bun install
|
||||
```
|
||||
|
||||
2. Copy environment file:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
3. Configure `.env` with your values (database, API keys, etc.)
|
||||
|
||||
4. Push database schema:
|
||||
```bash
|
||||
bun run db:push
|
||||
```
|
||||
|
||||
5. Start development server:
|
||||
```bash
|
||||
bun run dev
|
||||
```
|
||||
|
||||
API runs at `http://localhost:3000`
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Auth (BetterAuth)
|
||||
- `POST /api/auth/sign-up` — Register
|
||||
- `POST /api/auth/sign-in/email` — Login
|
||||
- `POST /api/auth/sign-out` — Logout
|
||||
- `GET /api/auth/session` — Get current session
|
||||
|
||||
### Clients
|
||||
- `GET /api/clients` — List clients
|
||||
- `GET /api/clients/:id` — Get client
|
||||
- `POST /api/clients` — Create client
|
||||
- `PUT /api/clients/:id` — Update client
|
||||
- `DELETE /api/clients/:id` — Delete client
|
||||
- `POST /api/clients/:id/contacted` — Mark as contacted
|
||||
|
||||
### Emails
|
||||
- `POST /api/emails/generate` — Generate AI email
|
||||
- `POST /api/emails/generate-birthday` — Generate birthday message
|
||||
- `GET /api/emails` — List emails
|
||||
- `GET /api/emails/:id` — Get email
|
||||
- `PUT /api/emails/:id` — Edit draft
|
||||
- `POST /api/emails/:id/send` — Send email
|
||||
- `DELETE /api/emails/:id` — Delete draft
|
||||
|
||||
### Events
|
||||
- `GET /api/events` — List events
|
||||
- `GET /api/events/:id` — Get event
|
||||
- `POST /api/events` — Create event
|
||||
- `PUT /api/events/:id` — Update event
|
||||
- `DELETE /api/events/:id` — Delete event
|
||||
- `POST /api/events/sync/:clientId` — Sync client birthdays/anniversaries
|
||||
|
||||
## Database
|
||||
|
||||
### Generate migrations
|
||||
```bash
|
||||
bun run db:generate
|
||||
```
|
||||
|
||||
### Apply migrations
|
||||
```bash
|
||||
bun run db:migrate
|
||||
```
|
||||
|
||||
### Push schema (development)
|
||||
```bash
|
||||
bun run db:push
|
||||
```
|
||||
|
||||
### Open Drizzle Studio
|
||||
```bash
|
||||
bun run db:studio
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user