Skip to content

king-wassim/sightline

Repository files navigation

SightLine

Plateforme d'analyse de risques visuels et d'assistance réglementaire (OSHA, INRS, ISO 45001), avec frontend React, backend Express et persistance PostgreSQL via Prisma.

Architecture

flowchart LR
  U[User Browser] --> V[Vercel Frontend\nReact + Vite]
  V -->|HTTPS /api| R[Railway Backend\nExpress + Prisma]
  R --> P[(PostgreSQL)]
  R --> G[Gemini API]
  V --> F[Firebase Auth]
  R --> S[Sentry]
  V --> S
Loading

Features

  • Analyse d'image avec scoring de risque, recommandations et niveau de confiance.
  • Assistant RAG pour questions de conformité sécurité.
  • Historique des analyses et des questions.
  • Journalisation structurée backend et tracking d'erreurs frontend/backend.

Stack

  • Frontend: React 19, Vite, TypeScript.
  • Backend: Express, Prisma, PostgreSQL.
  • AI: Google Gemini.
  • Observability: pino, Sentry.
  • CI/CD: GitHub Actions, Railway, Vercel.

Local Setup (Step-by-step)

  1. Installer les prerequis
node -v
npm -v
docker -v
docker compose version
  1. Installer les dependances
npm ci
  1. Configurer les variables backend
copy backend\.env.example backend\.env
  1. Mettre a jour backend/.env.example valeurs dans backend/.env
  • DATABASE_URL
  • GEMINI_API_KEY
  • ALLOWED_ORIGINS
  • SENTRY_DSN (optionnel)
  1. Lancer en mode dev (serveur + frontend integre Vite middleware)
npm run dev
  1. Lancer les checks qualite
npm run lint
npm run test
npm run build
  1. Lancer les tests E2E Playwright
npm run e2e:install
set E2E_AUTH_EMAIL=your-test-user@example.com
set E2E_AUTH_PASSWORD=your-test-password
npm run e2e

Notes E2E:

  • Les flows upload/chat utilisent des mocks reseau Playwright pour rester stables (pas d'appel Gemini reel).
  • Le flow auth cible email/password en CI. Google popup n'est pas inclus dans la suite headless.

Local Setup with Docker

  1. Build et demarrage
npm run docker:up
  1. Endpoints locaux
  1. Arret
npm run docker:down
  1. Arret + purge volume PostgreSQL
npm run docker:down:volumes

CI/CD (GitHub Actions)

Workflow: .github/workflows/ci-cd.yml

  • Trigger: push et pull_request sur main/develop.
  • Gates stricts: lint, tests, build.
  • Deploy backend Railway sur push main (si secrets presents).
  • Deploy frontend Vercel sur push main (si secrets presents).

Secrets attendus:

  • RAILWAY_TOKEN
  • RAILWAY_SERVICE
  • VERCEL_TOKEN
  • VERCEL_ORG_ID
  • VERCEL_PROJECT_ID

Deploy Instructions

Railway (Backend + PostgreSQL)

  1. Creer un projet Railway et un service PostgreSQL.
  2. Relier le repo GitHub.
  3. Ajouter les variables runtime:
  1. Confirmer la commande de start: npm run start:prod
  2. Verifier apres deploy:
  • GET /api/health retourne status ok
  • POST /api/analyze-risk fonctionne

Vercel (Frontend)

  1. Creer un projet Vercel relie au repo.
  2. Definir root directory: frontend
  3. Build command: npm run build:frontend
  4. Ajouter variable:
  • VITE_SENTRY_DSN (optionnel)
  1. Configurer l'URL backend cote frontend (proxy/rewrite selon environnement).

Logging & Monitoring

  • Backend logs structures via pino avec request id et duree par requete.
  • Endpoint backend/server.ts expose /api/metrics pour temps de reponse moyens/max.
  • Sentry capture les exceptions backend et frontend.

Performance

  • Lazy loading des sections principales frontend active dans frontend/src/App.tsx.
  • Bundle analysis disponible via:
npm run build:analyze
GET /api/history?limit=20&offset=0

Variables utiles:

  • LOG_LEVEL=info|debug|error
  • SENTRY_DSN
  • SENTRY_TRACES_SAMPLE_RATE
  • VITE_SENTRY_DSN

Project Structure

Notes

  • Ne jamais exposer GEMINI_API_KEY dans le frontend.
  • Pour la production, privilegier backend-only access aux secrets et erreurs utilisateur explicites.

About

SightLine - AI-Powered Visual Risk Analysis Platform for workplace safety and regulatory compliance (OSHA, INRS, ISO 45001). Built with React, Express, Prisma and Google Gemini.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors