OCRA is a small full-stack platform for collaborative annotation and management of 3D assets.
- Frontend: React + TypeScript (Vite), Bootstrap UI — dev server on
:3001. - Backend: Node.js + Express; Prisma + PostgreSQL for application data (users, sessions, projects) — API on
:3002. - Audit store: MongoDB 8.0 (audit events including login/logout/file uploads stored in Mongo collection). Backend uses Prisma only to enrich audit documents with user info (read-only).
- Authentication: OAuth2 PKCE (Keycloak). Realm exports under
keycloak/realm-export/.
- Clone and enter repo:
git clone <repo-url>
cd OCRA- Start services with Docker Compose:
docker compose up --build -d app- Open the app:
- Frontend:
http://localhost:3001 - Backend API:
http://localhost:3002
Notes:
- Audit logs (login/logout/file uploads) are stored in MongoDB; all authenticated users can view audit events (filtered by permissions).
- If you change the Prisma schema, run
npx prisma generateinbackend/to regenerate the client. - For local development without Docker, use the
frontendandbackendpackage.json scripts directly. - For production deployment, see
DEPLOYMENT_GUIDE.md