Repository navigation
Technologies Overview
Vincent Neeb edited this page Jan 23, 2025
·
1 revision
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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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.