Update README with comprehensive project documentation
- Add tech stack overview (frontend, backend, shared packages) - Document project structure with directory tree - Expand setup instructions with manual development option - Add scripts reference table - Document features (auth, organizations, dashboard) - Add frontend routes overview - Document API structure and namespaces Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
121
README.md
121
README.md
@@ -1,9 +1,52 @@
|
||||
# Reviq Publisher Dashboard
|
||||
|
||||
A modern publisher dashboard for managing organizations, members, and sites. Built as a monorepo with SvelteKit frontend and oRPC API server.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
### Frontend (`apps/publisher-dashboard`)
|
||||
- **SvelteKit** with Svelte 5 (runes)
|
||||
- **Tailwind CSS v4** for styling
|
||||
- **TanStack Query** for data fetching
|
||||
- **bits-ui** for accessible UI primitives
|
||||
- **Lucide** for icons
|
||||
- **WebAuthn/Passkeys** for passwordless authentication
|
||||
|
||||
### Backend (`apps/api-server`)
|
||||
- **Bun** runtime
|
||||
- **oRPC** for type-safe API (contract-first)
|
||||
- **Kysely** for type-safe SQL queries
|
||||
- **PostgreSQL** database
|
||||
- **Postmark** for transactional emails
|
||||
|
||||
### Shared Packages
|
||||
- `@reviq/api-contract` - Shared API contract (oRPC)
|
||||
- `@reviq/db` - Database client and queries
|
||||
- `@reviq/db-schema` - Database schema and codegen
|
||||
- `@reviq/utils` - Shared utilities
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
publisher-dashboard/
|
||||
├── apps/
|
||||
│ ├── api-server/ # Backend API server
|
||||
│ ├── cli/ # CLI tools
|
||||
│ └── publisher-dashboard/ # SvelteKit frontend
|
||||
├── packages/
|
||||
│ ├── api-contract/ # Shared oRPC contract
|
||||
│ ├── db/ # Database client
|
||||
│ ├── db-schema/ # DB schema & codegen
|
||||
│ ├── testing/ # Test utilities
|
||||
│ └── utils/ # Shared utilities
|
||||
└── db/ # Database migrations
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Bun](https://bun.sh/) v1.1.42+
|
||||
- [devenv](https://devenv.sh/) for development environment management
|
||||
|
||||
### Environment Variables
|
||||
@@ -29,9 +72,87 @@ devenv up
|
||||
This starts:
|
||||
- PostgreSQL database
|
||||
- Publisher dashboard dev server (port 6827)
|
||||
- API server
|
||||
- Package build watcher
|
||||
|
||||
The database is automatically initialized with:
|
||||
- Database: `reviq-dashboard`
|
||||
- User: `reviq`
|
||||
- Password: `reviq`
|
||||
|
||||
### Manual Development
|
||||
|
||||
If not using devenv, start services individually:
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
bun install
|
||||
|
||||
# Build packages first
|
||||
bun run build:packages
|
||||
|
||||
# Start dev server
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Scripts
|
||||
|
||||
| Script | Description |
|
||||
|--------|-------------|
|
||||
| `bun run dev` | Start all dev servers |
|
||||
| `bun run build` | Build all packages and apps |
|
||||
| `bun run typecheck` | Run TypeScript type checking |
|
||||
| `bun run lint` | Run Biome and ESLint |
|
||||
| `bun run lint:fix` | Fix linting issues |
|
||||
| `bun run test` | Run tests |
|
||||
| `bun run db:codegen` | Generate database types |
|
||||
|
||||
## Features
|
||||
|
||||
### Authentication
|
||||
- Passwordless login with passkeys (WebAuthn)
|
||||
- Email verification
|
||||
- Session management with device tracking
|
||||
|
||||
### Organizations
|
||||
- Create and manage organizations
|
||||
- Member management with roles (owner, admin, member)
|
||||
- Invite members via email
|
||||
- Organization settings
|
||||
|
||||
### Dashboard
|
||||
- Organization switcher
|
||||
- Performance metrics
|
||||
- Reports (coming soon)
|
||||
- Site management (coming soon)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Frontend Routes
|
||||
|
||||
```
|
||||
/ # Landing page
|
||||
/login # Login page
|
||||
/dashboard # Organization list
|
||||
/dashboard/[slug] # Organization home
|
||||
/dashboard/[slug]/performance # Performance metrics
|
||||
/dashboard/[slug]/reports # Reports (placeholder)
|
||||
/dashboard/[slug]/settings # Organization settings
|
||||
├── /members # Member management
|
||||
└── /sites # Sites (placeholder)
|
||||
/account # User account settings
|
||||
├── /security # Security settings
|
||||
└── /sessions # Active sessions
|
||||
/admin # Admin panel
|
||||
```
|
||||
|
||||
### API Structure
|
||||
|
||||
The API uses oRPC with a contract-first approach. Routes are defined in `@reviq/api-contract` and implemented in `apps/api-server`.
|
||||
|
||||
Key API namespaces:
|
||||
- `auth` - Authentication (passkeys, sessions)
|
||||
- `me` - Current user profile
|
||||
- `orgs` - Organization management
|
||||
- `orgs.members` - Member management
|
||||
- `orgs.invites` - Invitation management
|
||||
|
||||
Reference in New Issue
Block a user