mirror of
https://github.com/Dvorinka/Primora.git
synced 2026-06-03 20:13:01 +00:00
2.9 KiB
2.9 KiB
Primora
Primora is a hybrid monorepo MVP with:
apps/backend: Go + Gin domain API, migrations, sqlc, local object storageapps/auth: Better Auth on Hono with PostgreSQL, JWT minting, email/password, and OAuth wiringapps/frontend: Production-ready SolidJS UI with comprehensive component librarypackages/api-client: OpenAPI-generated TypeScript clientpackages/shared-types: shared cross-runtime constantsinfra: Nginx reverse proxy and local stack wiring
✨ Frontend Highlights
The Primora frontend features a world-class, production-ready UI system:
- 🎨 16 Polished Components - Modal, Tooltip, Dropdown, Progress, Tabs, Toast, and more
- ♿ 100% Accessible - WCAG AA compliant with full keyboard navigation
- 📱 Mobile-First - Responsive design optimized for all screen sizes
- 🚀 Optimized - 44.93 KB gzipped bundle with ~850ms build time
- 🎭 Dark-First Design - Refined color palette with signature accent blue
- 📚 Fully Documented - Comprehensive guides and API reference
See: FRONTEND_SUMMARY.md for quick overview, FRONTEND_ENHANCEMENTS.md for details
Run locally
- Copy
.env.exampleto.env - Fill
JWT_SECRET,BETTER_AUTH_SECRET, and optional OAuth / Resend keys - Optional: tune throttling with
USER_RATE_LIMIT_PER_MINUTEandAPI_KEY_RATE_LIMIT_PER_MINUTE(0disables each limiter) - Optional: Enable demo mode by setting
VITE_DEMO_MODE=truein.env(allows testing without backend) - Run
docker compose up --build - Open
http://localhost - Open
http://localhost/mailpit/for local email inspection
Demo Mode
Primora includes a fully functional demo mode for testing without a backend:
Enable Demo Mode:
- Set
VITE_DEMO_MODE=truein.envfile (enabled by default on startup) - Or visit
http://localhost/?demo=true - Or click "Try Demo Mode" when backend connection fails
Demo Mode Features:
- Complete UI with simulated data
- 2 organizations, 3 projects, 5 members
- Storage buckets, API keys, audit logs
- All CRUD operations work (simulated)
- Realistic API delays (300ms)
- Blue banner shows "Demo Mode Active"
Exit Demo Mode:
- Click "Exit Demo" button in the banner
- Or remove
?demo=truefrom URL and refresh
Verification
- Backend liveness:
http://localhost/api/v1/health/liveness - Backend readiness:
http://localhost/api/v1/health/readiness - Auth health:
http://localhost/auth-health - OpenAPI:
http://localhost/api/v1/openapi.yaml - Project overview (replace ID):
http://localhost/api/v1/projects/{projectID}/overview
Local Quality Checks
- Full gate (tests + typecheck + build + generated drift):
npm run check - Backend tests:
cd apps/backend && go test ./... - Frontend typecheck:
cd apps/frontend && npx tsc -p tsconfig.json --noEmit - Workspace build:
npm run build - Regenerate sqlc:
npm run generate:sqlc - Regenerate API client:
npm run generate:client