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 |