feat: bootstrap codexdash app
This commit is contained in:
76
README.md
Normal file
76
README.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# CodexDash
|
||||
|
||||
CodexDash is a mobile-first dashboard for monitoring multiple OpenAI Codex accounts from one place.
|
||||
|
||||
## Stack
|
||||
|
||||
- **Frontend:** React + Vite + TypeScript + Tailwind CSS + shadcn/ui-style components
|
||||
- **Backend:** NestJS
|
||||
- **Database:** Prisma + SQLite
|
||||
- **Auth:** CodexDash email/password auth with JWT
|
||||
|
||||
## What it does
|
||||
|
||||
- Create a CodexDash account and sign in
|
||||
- Connect multiple OpenAI Codex sessions under one CodexDash account
|
||||
- Refresh `https://chatgpt.com/backend-api/api/codex/usage` for each connected OpenAI account
|
||||
- Merge numeric usage fields into one aggregate dashboard
|
||||
- Inspect each connected account individually with raw API payload details
|
||||
|
||||
## Important note about "OpenAI Codex login"
|
||||
|
||||
OpenAI does not expose a simple third-party OAuth flow for this usage endpoint.
|
||||
|
||||
This MVP implements OpenAI account connection as a **session-based login flow**:
|
||||
|
||||
1. Sign in to `chatgpt.com` in your browser
|
||||
2. Copy the authenticated `Cookie` header
|
||||
3. Paste it into the **Connect OpenAI account** dialog in CodexDash
|
||||
|
||||
The backend encrypts the cookie header before storing it in SQLite.
|
||||
|
||||
## Local development
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
pnpm --filter @codexdash/api exec prisma generate
|
||||
cd apps/api && DATABASE_URL=file:./dev.db pnpm exec prisma db push
|
||||
cd ../..
|
||||
pnpm --filter @codexdash/api start:dev
|
||||
pnpm --filter @codexdash/web dev --host 0.0.0.0
|
||||
```
|
||||
|
||||
## Environment variables
|
||||
|
||||
### `apps/api/.env`
|
||||
|
||||
```env
|
||||
JWT_SECRET=dev-jwt-secret-for-codexdash
|
||||
ENCRYPTION_SECRET=dev-encryption-secret-for-codexdash-32chars
|
||||
DATABASE_URL=file:./dev.db
|
||||
```
|
||||
|
||||
### `apps/web/.env`
|
||||
|
||||
```env
|
||||
VITE_API_BASE_URL=http://localhost:3001
|
||||
```
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
pnpm lint
|
||||
pnpm test
|
||||
pnpm build
|
||||
curl http://localhost:3001/health
|
||||
```
|
||||
|
||||
## API overview
|
||||
|
||||
- `POST /auth/register`
|
||||
- `POST /auth/login`
|
||||
- `GET /auth/me`
|
||||
- `GET /codex/accounts`
|
||||
- `POST /codex/accounts`
|
||||
- `DELETE /codex/accounts/:accountId`
|
||||
- `GET /codex/usage-summary`
|
||||
Reference in New Issue
Block a user