https://github.com/xdanielsb/survey-app
Cloud‑native survey engine with end‑to‑end observability.
https://github.com/xdanielsb/survey-app
auth cd ci coverage-report database-backup database-migrations docker-compose elk flyway grafana periodic-backups prometheus spring-boot sso-authentication stripe-payments vuejs
Last synced: about 2 months ago
JSON representation
Cloud‑native survey engine with end‑to‑end observability.
- Host: GitHub
- URL: https://github.com/xdanielsb/survey-app
- Owner: xdanielsb
- License: bsd-3-clause
- Created: 2025-05-08T19:12:33.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-07-28T06:22:47.000Z (10 months ago)
- Last Synced: 2025-07-30T10:00:36.512Z (10 months ago)
- Topics: auth, cd, ci, coverage-report, database-backup, database-migrations, docker-compose, elk, flyway, grafana, periodic-backups, prometheus, spring-boot, sso-authentication, stripe-payments, vuejs
- Language: Java
- Homepage:
- Size: 2.54 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Survey
_Cloud‑native survey engine with end‑to‑end observability._




[](https://app.codecov.io/gh/xdanielsb/survey-app/flags/frontend)
[](https://app.codecov.io/gh/xdanielsb/survey-app/flags/backend)
[](https://app.codecov.io/gh/xdanielsb/survey-app/flags/analytics)
[](https://app.codecov.io/gh/xdanielsb/survey-app/flags/backoffice)


## Key Features
- **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](https://github.com/xdanielsb/patronx)
- **List backups** `make list-backups` via 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
## Docs
- **See** [Database Recovery Guide](docs/data-recovery.md) for how to restore the database in case of an incident
- **See** [Secure Docker Deploy Guide](docs/secure-deploy.md) for deploying in a safe way with docker compsoe with a dedicated non root user
- **See** [Deploy Keycloak](docs/deploy-keycloak.md) for deploying keycloak
- **See** [Monitoring Configuration](docs/monitoring-config.md) for customizing Prometheus targets
## Project Structure
```
.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/
```
### Dev development
Run `make help` to view all available targets.
```bash
# 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 dev
```
More details: [`backend/README.md`](./services/backend/README.md)
More details: [`frontend/README.md`](./services/frontend/README.md)
More details: [`analytics/README.md`](./services/analytics/README.md)
More details: [`backoffice/README.md`](./services/backoffice/README.md)
## License
BSD 3-Clause