Full-stack case study · Since October 2025

Zupit Forms

An internal platform that turns Google Forms into assignable, trackable workflows with automated reminders.

The product

From a form link to a managed workflow

I have been developing Zupit Forms since October 2025 as a full-stack application for managing recurring internal forms. Administrators can configure a Google Form, assign it to selected people, set a deadline, and define reminders from one place.

The platform synchronizes submissions and turns them into a clear view of what is pending, completed, or expired. Employees get a focused list of their forms, while administrators can follow completion progress, inspect outstanding assignments, and send targeted reminders.

End-to-end ownership

Full-stack engineering across the system

01

Product frontend

I built the Angular experience in an Nx workspace, including admin dashboards, data grids, configuration forms, user views, filters, and reusable UI libraries. A generated OpenAPI client keeps the frontend contract aligned with the backend.

  • Angular
  • Nx
  • OpenAPI
  • Internationalization
02

Application backend

I designed feature-oriented .NET Core services and Minimal API endpoints for forms, assignments, users, dashboards, and reminders. Entity Framework Core handles the PostgreSQL model and migrations, with validation and permission checks at the API boundary.

  • .NET Core
  • Minimal APIs
  • EF Core
  • PostgreSQL
03

Integrations & automation

The system connects Google Forms and Sheets data with company users, secures role-based access through Keycloak, schedules synchronization and reminder jobs with Hangfire, and delivers contextual notifications through Slack.

  • Google APIs
  • Keycloak
  • Hangfire
  • Slack
04

Delivery & reliability

I worked across local and hosted environments with Docker Compose, automated build and release workflows, structured logging, and a test suite covering core services and complete API flows with isolated test dependencies.

  • Docker
  • CI/CD
  • Integration tests
  • Observability

What this project represents

A product shaped across every layer

Zupit Forms reflects the way I like to work as a full-stack developer: starting from a real operational problem, designing a coherent user flow, and carrying it through APIs, data modeling, third-party integrations, background processing, testing, and delivery.