89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
# dwellops-platform
|
|
|
|
Modern HOA management platform — TypeScript monorepo.
|
|
|
|
Supports self-hosted single-tenant deployments and is architecturally ready for SaaS multi-tenant evolution.
|
|
|
|
## Stack
|
|
|
|
| Layer | Technology |
|
|
| ------------------- | ---------------------------------------------- |
|
|
| Package manager | pnpm workspaces + catalog |
|
|
| Build orchestration | Turborepo |
|
|
| Frontend | Next.js 16, App Router, CSS Modules, next-intl |
|
|
| Backend | Fastify 5, Zod, Better Auth |
|
|
| Database | PostgreSQL + Prisma |
|
|
| Testing | Vitest, Playwright, Testing Library |
|
|
| Storybook | v10 (Vite builder) |
|
|
|
|
## Quick start
|
|
|
|
```bash
|
|
# Prerequisites: Node 24+, pnpm 10+, Docker
|
|
|
|
# 1. Copy environment files
|
|
cp .env.example .env
|
|
cp apps/api/.env.example apps/api/.env
|
|
cp apps/web/.env.example apps/web/.env
|
|
|
|
# 2. Start local infrastructure
|
|
docker compose up -d
|
|
|
|
# 3. Install dependencies
|
|
pnpm install
|
|
|
|
# 4. Generate Prisma client and run migrations
|
|
pnpm db:generate
|
|
pnpm db:migrate:dev
|
|
|
|
# 5. Start dev servers
|
|
pnpm dev
|
|
```
|
|
|
|
**Apps:**
|
|
|
|
- Web: http://localhost:3000
|
|
- API: http://localhost:3001
|
|
- API docs (Swagger): http://localhost:3001/documentation
|
|
- Mailpit (local email): http://localhost:8025
|
|
|
|
## Scripts
|
|
|
|
| Command | Description |
|
|
| --------------------- | ------------------------------------- |
|
|
| `pnpm dev` | Start all dev servers |
|
|
| `pnpm build` | Build all apps/packages |
|
|
| `pnpm test` | Run unit/integration tests |
|
|
| `pnpm test:e2e` | Run Playwright e2e tests |
|
|
| `pnpm lint` | Lint all workspaces |
|
|
| `pnpm typecheck` | Type-check all workspaces |
|
|
| `pnpm format` | Format all files with Prettier |
|
|
| `pnpm storybook` | Start Storybook |
|
|
| `pnpm db:generate` | Generate Prisma client |
|
|
| `pnpm db:migrate:dev` | Run dev migrations |
|
|
| `pnpm db:studio` | Open Prisma Studio |
|
|
| `pnpm i18n:aggregate` | Aggregate component translation files |
|
|
|
|
## Repository structure
|
|
|
|
```
|
|
apps/
|
|
api/ @dwellops/api — Fastify backend
|
|
web/ @dwellops/web — Next.js frontend
|
|
packages/
|
|
config/ @dwellops/config — ESLint, Prettier, tsconfig, Stylelint, Vitest
|
|
types/ @dwellops/types — shared TypeScript types
|
|
schemas/ @dwellops/schemas — shared Zod schemas
|
|
db/ @dwellops/db — Prisma client + data access boundary
|
|
i18n/ @dwellops/i18n — i18n helpers
|
|
ui/ @dwellops/ui — shared UI primitives
|
|
test-utils/ @dwellops/test-utils — test factories, render helpers
|
|
docs/
|
|
scripts/
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [Architecture](docs/architecture.md)
|
|
- [Development guide](docs/development.md)
|