Skip to content

Technical Overview

Leni Maria Rohe edited this page Jun 3, 2025 · 6 revisions

Project Overview

  • Project Name: Itestra Event Exchange Platform

  • Purpose:

    Build a modern, smart event platform that enhances internal networking and collaboration at itestra by intelligently matching participants across roles, departments, and locations.

  • Stakeholders:

    • It. Event Manager – defines event structure, constraints, and seating goals
    • It. Engineers – implement, maintain, and improve the platform
    • It. Employees in P&O – register and participate in events (users of the platform)
  • Why This Stack:

    The architecture leverages modern, community-backed tools with strong internal familiarity:

    • ⚛️ React + Tailwind + Ant Design for a fast, accessible, and consistent UI
    • ☕ Spring Boot + PostgreSQL for a robust backend and scalable data model
    • 🐳 Docker + GitHub Actions for streamlined local dev and automated CI/CD
    • 🧠 Smart matching logic based on business constraints (implemented server-side)
  • This Wiki Covers:

    • System architecture and how components interact
    • Frontend, backend, and database stacks
    • Local development setup and workflows
    • CI/CD pipelines and deployment approach
    • Data modeling principles and authentication setup

This documentation is intended for developers, stakeholders, and collaborators contributing to the platform.


Architecture Overview

image
Component Type Role Interacts With Communication
React App Frontend Client-side UI rendered in browser Spring Boot API (via Docker network) HTTP (API Requests/Responses)
Spring Boot Backend Handles business logic, routes, and API endpoints React (API calls), PostgreSQL (DB queries) HTTP (REST) + JDBC (Hibernate)
PostgreSQL Database Stores persistent application data Spring Boot backend SQL (via JDBC/Hibernate)
Docker Compose Container Orchestration Launches and connects React, Spring Boot, and PostgreSQL containers All containers within docker-compose.yml Internal Docker networking
GitHub Actions CI/CD Pipeline Builds and pushes Docker images, triggers deployment Docker Hub (or registry), triggers Docker Compose execution GitHub API, Docker CLI
Docker Hub / Registry Container Registry Stores built images for backend/frontend services GitHub Actions (push), Docker Compose (pull if remote) Docker image transfer
User (Itestra) External Client Accesses the frontend via HTTPS React frontend via browser HTTPS

🧱 Frontend Stack

Category Tool / Library Reasoning
Framework React Widely adopted, in-house experience, strong ecosystem
UI Library Ant Design Rich set of prebuilt components for admin-style UIs
Styling Tailwind CSS Utility-first, fast to iterate, developer-friendly
Routing React Router Standard in SPA architecture
State Management React Context API Lightweight for global UI state
Data Fetching React Query Smart caching, async state management out of the box
Build Tool Vite Lightning-fast builds and dev server
Testing React Testing Library, Vitest Encourages best practices, modern tooling

Choices driven by team experience and modern developer adoption.


🧩 Backend Stack

Category Tool / Framework Reasoning
Language Java Team familiarity, enterprise-grade tooling
Framework Spring Boot Opinionated, productive, and widely used
API Style REST (Spring Web) Simple and effective for internal APIs
ORM Spring Data JPA (Hibernate) Reduces boilerplate, integrates with PostgreSQL
Auth GitLab OAuth Integrated with company infrastructure
Build Tool Maven Reliable, well-understood by team
Testing JUnit, Mockito Standard in Java ecosystem, strong support

Focus on team familiarity and proven reliability.


🗃️ Database & Storage Stack

Category Tool Reasoning
Primary Database PostgreSQL Open-source, relational, well-supported
Access Layer JPA + Hibernate Standard ORM in Spring Boot, good DX
Data Model Approach Relational (3NF) Structured, normalized design, entity relationships via foreign keys

💾 Data Modeling Notes

  • Entities are defined in the backend as JPA models
  • Typical relationships: OneToMany, ManyToOne, OneToOne
  • Leverage Flyway/Liquibase if schema migrations become necessary
  • All containerized via docker-compose for local development

PostgreSQL chosen for flexibility, maturity, and robust relational support.


⚙️ DevOps & Local Infrastructure

Category Tool / Practice Reasoning
CI/CD GitHub Actions Easy integration, automated builds & deploys
Containerization Docker Consistent environments across machines
Orchestration Docker Compose Simple service orchestration for dev
Env Config .env + Spring Profiles Clear environment separation
Version Control Git + GitHub Code collaboration, version history
Project Tracking GitHub Issues / Projects Lightweight task management
Local Dev Docker Compose setup Simple onboarding, portable dev setup

Tooling reflects modern workflows and minimizes friction across development.


👨‍💻 Developer Workflow

Category Tool / Practice Reasoning
Version Control Git + GitHub Team collaboration, pull requests, code review
Issue Tracking GitHub Issues / Projects Integrated task tracking, lightweight sprint planning
Documentation GitHub Wiki Centralized internal knowledge base
Code Formatting ESLint + Prettier Consistent code style and readability
Pre-commit Checks (Optional: Husky, lint-staged) Enforces local checks before committing
Local Dev Setup Docker Compose Quick onboarding, replicates production architecture locally
Env Management .env files Easy switching between environments (local, test, etc.)
Branching Strategy Feature branches + PRs Encourages clean commits and peer review
Testing Approach Unit tests (Jest, JUnit), Integration tests Catch regressions, validate behavior early
Code Reviews GitHub Pull Requests Peer feedback, quality assurance, and shared understanding

Focus is on simplicity, team alignment, fast onboarding, and scalable practices.