parkingmate

a full-stack, multi-tenant SaaS platform that automates parking lot operations end-to-end

parkingmate replaces manual parking enforcement with an automated pipeline driven by ALPR cameras. when a vehicle enters a managed lot, cameras stream plate-detection events to the api, which creates and tracks a parking session against per-spot rules. on exit, the system closes the session, calculates duration, and applies penalties. unauthorized or overstayed vehicles flow into a violation pipeline that generates legally-formatted PDF notices. the platform serves admins, registered customers, and unauthenticated guests through three dedicated portals.

team
parkingmate

key features

  • automatic license-plate recognition (ALPR) pipeline
  • multi-tenant architecture scoped by organization
  • three coexisting auth flows (admin, customer OTP, guest)
  • automated violation detection and PDF notice generation
  • admin, customer, and self-service guest portals
  • full multi-language support via i18next
  • spec-first API with auto-generated typed client
  • multi-environment CI/CD across dev, test, and production

tech stack

frontend

react
typescript
vite
react router v7
tailwind css v4
radix ui
@tanstack/query
zustand
react-hook-form
zod
i18next
@react-pdf/renderer

backend

fastify 5
typescript
drizzle orm
postgresql
zod
jwt
openapi
swagger

infrastructure

azure app service
azure static web apps
azure postgresql flexible server
azure communication services
azure blob storage
bicep
github actions

tooling

pnpm
turborepo
biome
vitest
husky
react testing library

challenges

  • coordinating three distinct auth flows in a single codebase
  • keeping frontend and backend contracts in sync across a monorepo
  • ingesting real-time webhook events from ALPR cameras reliably
  • generating legally-formatted PDF notices from the same component model as the UI
  • orchestrating sequential deployments across dev, test, and production environments

solutions

  • adopted openapi as the single source of truth, generating types consumed by the frontend on every build
  • enforced service-layer purity so business logic stays testable without mocking fastify
  • scoped every entity through the organization boundary for clean multi-tenant isolation
  • rendered pdf notices with @react-pdf/renderer to keep legal templates versioned alongside application code

in collaboration with

 logo