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
|
# 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
|
## Setup
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
|
- [Bun](https://bun.sh/) v1.1.42+
|
||||||
- [devenv](https://devenv.sh/) for development environment management
|
- [devenv](https://devenv.sh/) for development environment management
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
@@ -29,9 +72,87 @@ devenv up
|
|||||||
This starts:
|
This starts:
|
||||||
- PostgreSQL database
|
- PostgreSQL database
|
||||||
- Publisher dashboard dev server (port 6827)
|
- Publisher dashboard dev server (port 6827)
|
||||||
|
- API server
|
||||||
- Package build watcher
|
- Package build watcher
|
||||||
|
|
||||||
The database is automatically initialized with:
|
The database is automatically initialized with:
|
||||||
- Database: `reviq-dashboard`
|
- Database: `reviq-dashboard`
|
||||||
- User: `reviq`
|
- User: `reviq`
|
||||||
- Password: `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