Skip to content

Technologies

These tools give us consistency, strong community support, predictable performance, and sustainable long-term maintenance.

AreaStandardWhy
RuntimeNode.js LTSStable, high-performance async runtime.
LanguageTypeScript (strict mode)Safer code, fewer runtime surprises.
Backend FrameworkNestJSStructured, modular architecture suitable for large-scale services. Frequent security updates.
Package ManagerpnpmFast, efficient, reliable dependency isolation.
DatabasePostgreSQLMature, powerful, cloud-friendly.
ORMPrisma/Kysely (TBD)To be defined
Cache StoreValkeyLow-latency, high-throughput data access.
ContainerisationDocker everywhereEnvironment consistency from dev to production. Dockerfile and Devcontainers.
Task Runner / RuntimesMise en PlaceIt supports both runtime version management and task management, and also includes a plugin system.
Frontend FrameworkTBDTry to avoid building SPA unless absolutely necessary. Astro with small components sprinkled in is preferred. Framework is under evaluation.
UI Component LibraryTBDFramework-agnostic component library is under evaluation.
Static SitesAstroFast, flexible static site generator with built-in component support and the Starlight documentation framework.
API DocsSwagger Spec & UINestJS offers libraries that automatically generate documentation from the codebase. We want to avoid maintaining API docs manually, as that approach is error-prone.
MultirepoFrontend / Backend / TypesTBD

These choices eliminate fragmentation and ensure that tools, documentation, and deployment pipelines work consistently across teams.

IMPORTANT

Rendering strategy: SSG > SSR > Client JS. Prefer static generation over server-side rendering, and SSR over client-side JavaScript. Ship the least amount of client-side JS that is technically possible. Pages that can be pre-built at deploy time should be. Use interactive islands only where user interaction genuinely requires it.