Skip to main content

Technologies

This document outlines the main technologies and tools utilized in the Ulmexa platform, categorized by architectural layers and core functionalities.


🧱 1. Architecture Layers

➤ Frontend (Presentation Tier)

  • Angular: TypeScript-based web application framework for building single-page apps.
  • HTML/CSS: Markup and styling for web UI.
  • Material Design / Tailwind CSS (optional): For modern UI components and design system.
  • Keycloak JavaScript Adapter: For authentication integration.

➤ Backend (Application Tier)

  • Spring Boot: Java-based framework used for developing the backend services in a monolithic structure.
  • Spring Security + Keycloak: For authentication and authorization.
  • Spring Data JPA (Hibernate): ORM for database persistence.
  • RabbitMQ: Message broker used for queuing and retrying email/sms campaigns.

➤ Database (Data Tier)

  • PostgreSQL: Relational database for storing all business and user data.
  • MySQL: Used for the OpenStack service backend (Keystone, Nova, etc.)

☁️ 2. Infrastructure & DevOps

  • OpenStack: For VPS provisioning, project isolation, and cloud orchestration.
  • Docker: For containerizing services (e.g., Mailcow, RabbitMQ).
  • Mailcow: Self-hosted mail server stack for email campaign support.
  • Prometheus + Grafana: Monitoring and alerting.
  • Keycloak: Identity and access management.
  • Jenkins (optional): Continuous Integration/Continuous Deployment pipeline.

📡 3. Networking & Security

  • Nginx: Reverse proxy and TLS termination.
  • OpenVPN / WireGuard: Secure connection between OVH VPS and home OpenStack.
  • Firewall Rules / Security Groups: Managed per OpenStack project for VPS users.

✉️ 4. Communication Layer

  • SMTP (via Mailcow): Outgoing email for campaign delivery.
  • Tracking Pixel: Embedded per recipient for email engagement tracking.

📦 5. Package & Build Tools

  • Maven: Java build and dependency management.
  • npm / Angular CLI: Frontend build tooling.

🧪 6. Testing

  • JUnit: For unit testing backend components.
  • Mockito: For mocking in backend tests.
  • Karma + Jasmine: Angular unit testing.
  • Postman: Manual API testing.

🛠️ 7. Others

  • PlantUML: For generating architectural and user journey diagrams.
  • VS Code / IntelliJ IDEA: Main development environments.