Skip to content

Technologies Overview

Vincent Neeb edited this page Jan 23, 2025 · 1 revision

Tech Stack


This project is a full-stack web application that combines multiple technologies for frontend, backend, and deployment. Below is an overview of all the tools and the most important libraries used, along with a brief explanation and the reasons for choosing them.

Table of Contents
  1. Frontend
  2. Frontend Design
  3. Backend
  4. Authentication
  5. Database
  6. Deployment
  7. Summary

Frontend

Angular

  • What it is: A TypeScript-based web application framework developed by Google.
  • Why we use it: Angular offers a structured approach to building large-scale, maintainable applications with robust tooling and community support.

ESLint

  • What it is: A pluggable linting utility for JavaScript/TypeScript.
  • Why we use it: Ensures consistent code style and helps catch common errors during development.

Capacitor

  • What it is: A cross-platform app runtime that turns web applications into native mobile apps.
  • Why we use it: Allows us to package our Angular app for iOS and Android, enabling a seamless way to share code between web and mobile platforms.

🔝 back to top

Frontend Design

PrimeNG

link

  • What it is: A UI component library for Angular, featuring a wide range of pre-built, customizable components.
  • Why we use it: Streamlines the design process and provides a consistent user interface.

Remix Icons

link

  • What it is: A set of open-source icons.
  • Why we use it: Offers a large variety of icons that integrate seamlessly with Angular components.

🔝 back to top

Backend

NestJS

  • What it is: A progressive Node.js framework built with TypeScript, inspired by Angular's architecture.
  • Why we use it: Provides a scalable, structured approach to server-side applications, promotes modular design, and has great TypeScript support.

TypeORM

  • What it is: An Object-Relational Mapping library for TypeScript and JavaScript.
  • Why we use it: Simplifies database interactions by allowing us to work with entities and repositories instead of raw SQL.

ApiDoc

  • What it is: A tool for documenting RESTful APIs.
  • Why we use it: Generates clear, interactive API documentation, making it easier for other developers to understand and use our endpoints.

ESLint & Prettier

  • What they are: Linting and code-formatting tools.
  • Why we use them: They enforce consistent code style and formatting across the backend codebase, reducing friction in team collaborations.

Jest (E2E and Unit Tests)

  • What it is: A testing framework for JavaScript/TypeScript.
  • Why we use it: Allows us to write both unit and end-to-end tests, ensuring reliability and correctness in our backend logic.

🔝 back to top

Authentication

JWT (JSON Web Tokens)

  • What it is: A compact, URL-safe way of representing claims to be transferred between two parties.
  • Why we use it: Secures the communication between the frontend and backend by verifying user identity with stateless tokens.

🔝 back to top

Database

PostgreSQL (Production)

  • What it is: A powerful, open-source relational database.
  • Why we use it: Provides robust performance, scalability, and a proven track record for handling production workloads.

SQLite (Local Development)

  • What it is: A lightweight, file-based relational database.
  • Why we use it: Ideal for local development due to its simplicity and minimal configuration requirements.

🔝 back to top

Deployment

GitHub Actions

  • What it is: A CI/CD service integrated with GitHub.
  • Why we use it: Automates our build, test, and deployment pipeline, ensuring quick feedback and consistent releases.

GitHub Container Registry

link

  • What it is: A registry service for storing and managing Docker images within GitHub.
  • Why we use it: Facilitates storing, versioning, and distributing container images in a central location tied to our repository.

Docker

  • What it is: A containerization platform that packages applications and dependencies in containers.
  • Why we use it: Simplifies distribution, ensures consistent environments across development and production, and helps with scalability.

ArgoCD

  • What it is: A declarative continuous delivery tool for Kubernetes.
  • Why we use it: Automates the deployment and life-cycle management of our Kubernetes apps, ensuring smooth rollouts and rollbacks.

Kubernetes

  • What it is: An open-source container orchestration platform.
  • Why we use it: Manages containerized applications at scale, providing features like load balancing, service discovery, and self-healing.

VPS (Hosted at Strato)

link

  • What it is: A Virtual Private Server where our Kubernetes cluster runs.
  • Why we use it: Provides full control and flexibility over server configurations and network settings, ensuring a stable production environment.

🔝 back to top


In summary, each technology serves a distinct purpose in our full-stack architecture, from robust front-end development with Angular and Capacitor, to a scalable backend powered by NestJS and TypeORM, all the way to secure and automated deployments on Kubernetes via ArgoCD and GitHub Actions.

Clone this wiki locally