Cloud‑native survey engine with end‑to‑end observability.
- Seamless CI / CD | Independent pipelines for UI & API, auto‑promote from staging to prod
- Security | Keycloak, Google Sign-in JWT gateway, api routes protected, secure cookies
- Keycloak | Multi-realm configuration (production, staging, development)
- Security scanning | OWASP Dependency Check and npm audit via GitHub Actions
- RateLimiter | Bucket4J
- Data Layer PostgreSQL, Flyway to versioned schema migrations
- Periodic backups & Database Recovery with PatronX
- List backups
make list-backupsvia PatronX - Remote asset store | Upload backups to S3 using PatronX
- Instrumentation| Sentry frontend, backend, analytics, sentry (error tracking)
- Payment| Stripe (credit purchase flow)
- Invoice PDF | Invoice generation for payments
- Emails | Sendgrid (when buy a survey)
- Theme | Dark/White theme
- Observability: Logstash + Elasticsearch + Kibana + Grafana
- Monitoring | Prometheus + Grafana (Latency, Error Rate, Traffic, Saturation)
- Unit/Integration Test | Vitest + JaCoCo + Codecov + TestContainers
- Stress tests with k6 (nightly via GitHub Actions)
- MCP | analytics service with MCP connected to an LLM (feature available for premium users).
- Delivery GitHub Actions · Docker · Caddy reverse‑proxy
- See Database Recovery Guide for how to restore the database in case of an incident
- See Secure Docker Deploy Guide for deploying in a safe way with docker compsoe with a dedicated non root user
- See Deploy Keycloak for deploying keycloak
- See Monitoring Configuration for customizing Prometheus targets
.github/workflows
├── dependabot.yml
└── workflows
├── cd
├── ...
├── ci
├── ...
├── nightly-stress.yml
├── release-changelog.yml
└── security.yml
└── services
├── analytics (fastapi python3.12)
├── backend (spring boot 3 java 17)
├── backoffice (angular v20)
└── frontend (vuejs v3)
infra/
├── kubernetes/
├── keycloak/
├── docker-compose.yml
├── Caddyfile
├── monitoring/
├── docker-compose.yml
├── elk/
├── grafana/
├── Caddyfile
├── compose/
├── docker-compose.yml
├── docker-compose.dev.yml
├── Caddyfile
├── scripts/
├── docs/
├── data-recovery.md
├── secure-docker.md
├── deploy-keycloak.md
├── monitoring-config.md
├── performance/
├── stress_tests/
Run make help to view all available targets.
# db + api + ui + elk
$ make dev-up # start all services
# docker compose -f infra/compose/docker-compose.dev.yml --env-file infra/compose/.env up --build --force-recreate -d
# stop services
$ make dev-down
# tail container logs
$ make dev-logs
# /services/backend
$ ./mvnw --debug spring-boot:run
# /services/frontend
$ npm run devMore details: backend/README.md
More details: frontend/README.md
More details: analytics/README.md
More details: backoffice/README.md
BSD 3-Clause