Files
honeyDueWeb/README.md
T
2026-03-03 11:47:24 -06:00

94 lines
3.9 KiB
Markdown

# Casera Web App
Next.js web client for the Casera property management platform. Connects to the [Go REST API](https://github.com/akatreyt/casera-api) backend.
## Features
- **Residences** — Create and manage properties, share access with household members via invite codes
- **Tasks** — Track maintenance tasks with kanban board, due dates, recurring schedules, and completion photos
- **Contractors** — Manage service providers with contact info, specialties, and task associations
- **Documents** — Store leases, warranties, manuals, and other property documents
- **Demo Mode** — Try the full app with mock data at `/demo`, no account required
- **Notifications** — Real-time notification bell with preference management
- **Settings** — Profile editing, password changes, notification preferences, account deletion
## Tech Stack
- **Framework**: [Next.js](https://nextjs.org) 16 (App Router, Turbopack)
- **UI**: [Tailwind CSS](https://tailwindcss.com) + [shadcn/ui](https://ui.shadcn.com)
- **State**: [TanStack React Query](https://tanstack.com/query) for server state
- **Forms**: [React Hook Form](https://react-hook-form.com) + [Zod](https://zod.dev) validation
- **Drag & Drop**: [@dnd-kit](https://dndkit.com) for kanban board
- **Analytics**: [PostHog](https://posthog.com)
- **E2E Tests**: [Playwright](https://playwright.dev)
- **Deployment**: Docker (Dokku-compatible)
## Getting Started
```bash
# Install dependencies
npm install
# Run development server
npm run dev
```
Open [http://localhost:3000](http://localhost:3000).
## Scripts
| Command | Description |
|---------|-------------|
| `npm run dev` | Start dev server with Turbopack |
| `npm run build` | Production build |
| `npm run start` | Start production server |
| `npm run lint` | Run ESLint |
| `npm run test:e2e` | Run Playwright tests |
| `npm run test:e2e:ui` | Run Playwright tests with UI |
## Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `NEXT_PUBLIC_API_URL` | Go API base URL (e.g. `https://casera.treytartt.com/api`) | Yes |
| `API_URL` | Server-side API URL (defaults to `NEXT_PUBLIC_API_URL`) | No |
| `NEXT_PUBLIC_POSTHOG_KEY` | PostHog project API key | No |
| `NEXT_PUBLIC_POSTHOG_HOST` | PostHog instance URL | No |
## Architecture
```
src/
├── app/ # Next.js App Router pages
│ ├── (auth)/ # Login, register, forgot password
│ ├── api/ # Route handlers (auth, proxy)
│ ├── app/ # Authenticated app pages
│ └── demo/ # Demo mode (mirrors app/ with mock data)
├── components/
│ ├── contractors/ # Contractor cards, forms
│ ├── dashboard/ # Stats cards, recent activity
│ ├── demo/ # Demo banner
│ ├── documents/ # Document cards, forms, image gallery
│ ├── layout/ # Sidebar, top bar, mobile nav
│ ├── notifications/ # Notification bell
│ ├── onboarding/ # Onboarding steps
│ ├── residences/ # Residence cards
│ ├── settings/ # Profile, password, preferences
│ ├── shared/ # Error banner, form field
│ ├── sharing/ # Share codes, user management
│ ├── tasks/ # Kanban board, task cards, forms
│ └── ui/ # shadcn/ui primitives
├── lib/
│ ├── analytics/ # PostHog provider
│ ├── api/ # API client, auth, residences, tasks, etc.
│ ├── demo/ # Demo data provider, mock data
│ └── hooks/ # React Query hooks per domain
└── tests/ # Playwright E2E tests
```
All client-side API requests go through Next.js proxy route handlers (`/api/proxy/...`) which attach the auth token from an httpOnly cookie before forwarding to the Go API.
## License
Private