Skip to main content

Tech Stack

Backend — server/

ConcernChoiceWhy
Language / FrameworkPHP 8.2 + Laravel 12Mature ecosystem, Eloquent, queues, the team already ships Laravel.
API styleREST + JSONBroadest client support; easy to mock in tests.
AuthLaravel SanctumSimple token-based, works for SPAs and mobile.
RBACspatie/laravel-permissionBattle-tested, integrates cleanly with policies.
Admin panelFilament v3SystemAdmin back-office with zero hand-rolled CRUD.
QueuesLaravel Horizon + RedisVisible queue health, priorities, retries.
TestingPestExpressive, fast, pairs well with Laravel.
Code stylePintDefaults match Laravel.
MigrationsLaravel nativeStraightforward, versioned.
API docsOpenAPI 3 (generated from attributes)Feeds typed clients on web and mobile.

Web UI — ui/

ConcernChoiceWhy
BundlerViteInstant HMR, native ESM.
FrameworkReact 18 + TypeScriptTeam familiarity, large ecosystem.
RoutingReact Router v6Standard.
Data fetchingTanStack Query v5Cache + mutations; pairs perfectly with REST.
Client stateZustandTiny, hook-native, avoids Redux boilerplate.
StylingTailwind CSS + shadcn/uiConsistent design, copy-paste components.
FormsReact Hook Form + ZodTyped, perf-friendly.
TablesTanStack TableRoster grid, attendance listings.
i18ni18nextFuture locales.
TestsVitest + React Testing Library + Playwright (e2e)Fast unit + flake-resistant e2e.

Mobile App — app/

ConcernChoiceWhy
FrameworkFlutter (latest stable)Single codebase, native performance, strong geo / device APIs.
StateRiverpod v2Compile-safe DI + state.
Routinggo_routerDeclarative routes, deep links.
HTTPDio + retrofitTyped clients, interceptors.
Storageflutter_secure_storage + HiveSecure tokens; encrypted offline punch buffer.
Geogeolocator + geofence_serviceLat/lon + background geofences.
Devicedevice_info_plus + platform_device_idStable fingerprint.
Pushfirebase_messagingAndroid + iOS.
Testsflutter_test + integration_testStandard.

Observability

  • Logs — Monolog (Laravel) + loki-docker-driver, shipped as JSON.
  • Metrics — Laravel Pulse + Prometheus exporter.
  • Traces — OpenTelemetry (post-MVP).
  • Uptime — Better Stack / UptimeRobot on /up endpoint.

Infrastructure

  • Docker 24, Docker Compose v2.
  • Traefik v3 for TLS + routing.
  • MySQL 8 with daily logical backups.
  • S3-compatible object storage for exports and uploads.
  • GitHub Actions for CI (lint, typecheck, Pest, Vitest, Flutter test).