Aller au contenu

Tech Stack

Ce contenu n’est pas encore disponible dans votre langue.

This project uses a “monorepo” architecture. The advantages are numerous, but primarily:

  • Ability to develop full-stack features without context switching, making a single PR for a complete feature
  • Easier deployment: no need to synchronize multiple separate deployments
  • Strong end-to-end typing, easier refactoring
  • Simplified and unified tooling (linter, build, etc.)

When working on a fullstack project, we found that having compile time error and warnings are a godsend, but this requires a strategy to sync the typings between the backend and the frontend.

After years using GraphQL, we went back to REST (you can find the reasoning in the Network Architecture page), but we kept most benefits of GraphQL: full typing, documentation, caching, etc.

  • NestJS - Progressive Node.js framework
  • TypeScript - JavaScript with syntax for types
  • MikroORM - TypeScript ORM for Node.js
  • Zod - TypeScript-first schema validation
  • Better Auth - Authentication and authorization solution
  • Docker - Containerization platform
  • PostgreSQL - Relational database management system
  • MinIO - S3-compatible object storage
  • DotenvX - Environment variables management
lonestone/
├── apps/ # Main applications
│ ├── api/ # Backend API (NestJS)
│ ├── web-spa/ # Web SPA application (React)
│ ├── web-ssr/ # Web SSR application (React)
│ └── documentation/ # Starlight documentation site
├── packages/ # Shared packages
│ ├── ui/ # Reusable UI components (shadcn/ui)
│ ├── i18n/ # Shared frontend i18n
│ └── openapi-generator/ # OpenAPI client generator
├── docs/ # Optional project-specific documentation
└── .github/ # GitHub Actions workflows