Project Overview

This project is an effort to build a scalable full-stack platform, showcasing real-world architecture and DevOps practices. Below is a breakdown of key domains and the progress made so far.

[Staging]

ServiceURLNotes
Frontend (Platform)https://app.staging.eliasdebock.comHost SPA (includes /admin, /webshop and /account)
Admin Apphttps://app.staging.eliasdebock.com/adminAngular remote app integrated using Dynamic Module Federation
Account Apphttps://app.staging.eliasdebock.com/accountReact micro UI using Web Components
Webshop Apphttps://app.staging.eliasdebock.com/webshopAngular app (webshop shell)
Webshop APIhttps://api.staging.eliasdebock.com/webshopLaravel API
Platform APIhttps://api.staging.eliasdebock.com/platform.NET API
Admin APIhttps://api.staging.eliasdebock.com/admin.NET Admin API
Database-Self-hosted Postgres
Keycloak Adminhttps://app.staging.eliasdebock.com/keycloakSelf-hosted Keycloak auth server
Grafanahttps://grafana.staging.eliasdebock.comLogs, dashboards, cluster metrics
Prometheushttps://prometheus.staging.eliasdebock.comCluster metrics & scraping targets

[Production]

ServiceURLNotes
Frontend (Platform)https://app.eliasdebock.comHost SPA (includes /admin, /account, /webshop)
Admin Apphttps://app.eliasdebock.com/adminAngular remote app integrated using Dynamic Module Federation
Account Apphttps://app.eliasdebock.com/accountReact micro UI using Web Components
Webshop Apphttps://app.eliasdebock.com/webshopAngular app (webshop shell)
Webshop APIhttps://api.eliasdebock.com/webshopLaravel API
Platform APIhttps://api.eliasdebock.com/platform.NET API
Admin APIhttps://api.eliasdebock.com/admin.NET Admin API
Database-Self-hosted Postgres

| Keycloak Admin | https://app.eliasdebock.com/keycloak | Self-hosted Keycloak auth server | | Grafana | — | Not deployed | | Prometheus | — | Not deployed |

Cross-Domain Capability & Maturity Assessment

Client Development


Languages

Typescript

Frameworks & Libraries

Angular - React

Styling & UI Libraries

Tailwind - SCSS - Carbon Components - Angular Material - @shadcn/ui

Data Fetching

@tanstack/react-query - @tanstack/angular-query-experimental

Micro Frontends

Dynamic Module Federation - Web Components

Tooling & Build

Storybook - ESLint/Prettier - Vite - Webpack - (p)npm

Architecture

Layered Modular Monolith (apps, libraries, shared UI/utils)

Database


PostgreSQL Fundamentals

Schema design, migrations, indexing, transactions, basic optimization

Management & GUI Tools

pgAdmin 4 for GUI management – psql for CLI operations

Backups & Disaster Recovery

Tools: pg_dump, pg_restore, WAL archiving, cron jobs, or tools like pgBackRest and Barman

Connection Pooling & Performance

Learn to use PgBouncer or built-in pooling in frameworks — avoid common bottlenecks

Monitoring & Query Analysis

Use tools like pg_stat_statements, auto_explain, or Postgres Exporter for Prometheus

Testing


Unit Testing Client

Vitest

Unit & Integration Testing API

xUnit, Moq, test containers

End-to-End (E2E) Testing

Playwright - Cypress - Selenium

Project Management & Documentation


Documentation

Website - platform

Project Management

Jira

Nx Workspace


Nx Overview

Used extensively for workspace orchestration, CLI tooling, and CI optimization in a layered monorepo setup

Structure & Plugins

Layered modular monolith with libraries and apps — using various plugins and generators

CI Integration & Affected

GitHub Actions using `nx affected` for lint, test, and build — optimized pipelines for changed projects only

Caching & Remote Execution

Nx Cloud for task orchestration and remote caching

AI & Agent Integration


LLM Integration

Integrating OpenAI, Azure OpenAI, or local models into apps and services

Function Calling

Define tool schemas and safely trigger backend logic from LLMs

Multi-Agent Architecture

Agents that reason, delegate tasks, and interact across platform boundaries

App Integration

Embedding AI experiences into apps — chat UIs, assistants, or copilots

Orchestration & Memory

Memory, context handling, vector stores (e.g., Pinecone, Weaviate, Redis), prompt chaining

Security


TLS & Certificates

Understand HTTPS, TLS certificates, and how to manage them (e.g., Certbot, ACME, Cloudflare-managed certs)

Network Policies

Ingress controls, firewalls, egress rules, Kubernetes NetworkPolicy

Authentication & Authorization Models

OAuth2, OIDC, SAML, RBAC vs ABAC

OWASP Top 10

Prevent common web security risks like XSS, CSRF, injection, etc.

Secrets Management

Best practices for managing sensitive credentials and tokens securely

Supply Chain Security

Software signing, image verification, SBOMs, GitHub Dependabot / SLSA

Vulnerability Scanning

Trivy, Clair, or similar tools for scanning Docker images and dependencies

Audit Logging & Forensics

Track access and actions for security and compliance

API & Backend


Languages

C# - PHP

Frameworks

.NET - Laravel

Tooling

NuGet - Composer - Doctrine - Entity Framework — LINQ - AutoMapper

API Design & Structure

Modular monolith with vertical slice ideas — Layered pattern (Controller → Service → Repository)

Caching

Redis

Architecture

Event-Driven - Domain-Driven Design - Clean Architecture - Hexagonal (Ports & Adapters) - CQRS - Onion Architecture

Background Jobs & Messaging

Hangfire - MassTransit - MediatR - RabbitMQ - Kafka

Rate Limiting & API Gateway

Ocelot - YARP - Envoy

Infrastructure & Runtime


VPS Hosting

Hetzner VPS on Ubuntu ARM, hosting full stack platform with k3s

Linux

General system usage, shell scripting, file permissions, networking tools. Using Ubuntu

Kubernetes (K3s)

Services, deployments, pods, secrets, namespaces, TLS certificates (via cert-manager), and Ingress

Web Servers

NGINX (static), .NET Web API, Laravel PHP-FPM

Other Services

Auth: Custom Keycloak (themed & extended) – Database: PostgreSQL

Ingress Controller

NGINX Ingress (NodePort + patched external IP) — handles routing, and domain rules

DNS & CDN

Cloudflare for DNS, reverse proxy, caching, and TLS termination

Load Balancing

Planned: MetalLB to replace manual NodePort IP patching with proper LoadBalancer support on bare-metal

DevOps & Platform Engineering


CI/CD Automation

GitHub Actions, self-hosted ARM runner, automated staging/production deployments

Logging & Tracing

Loki - Promtail

Monitoring

Integrated Prometheus & Grafana with Helm

Cluster Management & GitOps

Helm – ArgoCD – Kustomize

Secrets & Config

External Secrets Operator – SealedSecrets – HashiCorp Vault – configmaps

Feature Flags

Unleash – ConfigCat

Search Engines

Elasticsearch for logging, indexing, and search-based features

Authentication


Keycloak Setup

Self-hosted, themed, and integrated. Two registered clients (frontend & backend) with working flows. I use Keycloak’s admin UI and REST API to manage sessions, track activity, and revoke tokens per user.

Libraries & Standards

keycloak-js – JWT – firebase/php-jwt

OAuth & Session Flow

I can implement working login/session flows and secure access across apps, but lack in-depth protocol-level understanding of OAuth2 or OIDC.

Cloud Platform


Kubernetes & Containerization

Azure Kubernetes Service (AKS) – Managed Kubernetes Amazon EKS – Elastic Kubernetes Service Azure Container Registry (ACR) – Image hosting Amazon ECR – Elastic Container Registry

CI/CD & Automation

Azure DevOps Pipelines – Build & deploy workflows GitHub Actions – Current setup AWS CodePipeline – Native CI/CD for AWS

Infrastructure as Code (IaC)

Azure Resource Manager (ARM), Bicep – Declarative templates Terraform – Cross-cloud provisioning AWS CloudFormation – Native IaC for AWS

App Hosting & Serverless

Azure App Service – App hosting without full Kubernetes AWS Elastic Beanstalk – Simplified app deployment Azure Functions – Serverless background tasks AWS Lambda – Serverless compute