Umfrage is a survey application that started as a minimal Nuxt starter and gradually took shape around authentication, survey workflows, results reporting, and deployment automation. This page gives a readable overview of the repository without requiring a deep look at the source.
How the project is put together
The frontend uses Nuxt UI for the interactive shell and page structure. The backend runs through Nitro routes under server/api/, while Prisma handles schema management, migrations, seed data, and the generated client. Shared helpers, DTOs, and table logic live in focused folders so the UI and server concerns stay clearly separated.
- API routes validate input on the server and handle survey access, login, and results.
- Prisma powers database access and keeps schema changes versioned in
prisma/migrations/. - Generated client code lives under
server/generated/prismaand is used by server routes. - Authorization and request helpers are grouped in
server/utils/andlib/.
The repository uses GitLab CI to build, test, package, and deploy the app. The pipeline has grown from basic build checks into a Docker-based flow with registry pushes, environment validation, and deployment jobs that run Docker Compose on the target host.
In practice this means the pipeline can generate Prisma artifacts, verify the Nuxt app, build the production image, and publish it under predictable tags for release and branch tracking.
- UI: pages, components, composables, and the shared table logic used across the app.
- Server: API routes, middleware, plugins, utilities, and generated Prisma client code.
- Data: schema, migrations, and seed scripts in
prisma/. - Docs: public-facing documentation pages in
pages/Documentation/.
Rough history
Below is a condensed history of the repository, assembled from the commit history and grouped into eight readable steps.
Current shape
The project now has a clear split between public pages, admin tooling, survey APIs, and deployment automation. The work around it continues to focus on keeping the UI readable, the backend typed, and CI/CD stable enough for repeatable releases.
