-
Notifications
You must be signed in to change notification settings - Fork 0
Technical 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.
| 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 |
| 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.
| 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.
| 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 |
- 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-composefor local development
✅ PostgreSQL chosen for flexibility, maturity, and robust relational support.
| 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.
| 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.