Technologies

Every technology used in PackyTrace and why it was chosen. The architectural decisions behind these choices are recorded as ADRs; the deployment topology and repository layout live in the technology stack page. This section explains each tool on its own terms.

At a glance

Technology Role Why (in one line)
Go 4 services: gateway, passport, fridge, measurement Small static binaries, strong concurrency, explicit code where resilience and event throughput matter
chi Go HTTP routing stdlib-compatible router with the middleware the gateway needs
pgx + sqlc Go ↔ Postgres Hand-written SQL, compile-time-checked Go — no ORM between aggregates and tables
franz-go Go ↔ Kafka Modern client that keeps consumer-group mechanics explicit
TypeScript / Node.js 3 services: identity, personalization, brand-analytics Fast iteration where rules and queries dominate; same language as the SPA
Fastify TS HTTP framework Schema-validated routes on the same JSON Schema technology as the event contracts
Kysely TS ↔ Postgres Type-safe SQL builder — the TS analogue of sqlc
@confluentinc/kafka-javascript TS ↔ Kafka The actively maintained librdkafka client
PostgreSQL All persistent state One instance, six schemas, six GRANT-restricted roles — DB-enforced ownership
Apache Kafka Asynchronous domain facts The event backbone the course's Part III is built on, KRaft single node
Keycloak Authentication (OIDC) Hardened auth for health-adjacent data instead of hand-rolled passwords
JSON Schema + quicktype Cross-language event contracts One schema source generating both Go and TS types
OpenAPI Per-service HTTP contracts services/<name>/openapi.yaml, derived from the API design
Docker Compose Local orchestration The whole fleet with one command
SvelteKit Consumer + brand SPA Compiler-based, small bundles, static adapter behind the gateway
Tailwind CSS Styling Utility-first styling colocated with components
MkDocs Material This documentation Versioned docs-as-code with Mermaid diagrams
AWS (S3 + CloudFront) Hosting SPA + docs Low-cost static hosting; the docs ship under /docs
Make Task entry points One command vocabulary across web, docs, contracts and compose
GitHub Actions Continuous integration Path-aware cached checks, with the full container smoke test scheduled separately
Semantic-release Automated releases Converts conventional commits into versions, changelog entries, tags and GitHub releases

Pages

  1. Backend — the Go and TypeScript service stacks.
  2. Platform — database, messaging, auth, contracts and containers.
  3. Frontend — the SPA and its styling stack.
  4. Tooling — documentation, hosting, task automation and CI.