Introduction
System Architecture
The landing page consists of these parts:
- Reverse Proxy (Nginx): Acts as the entry point. It handles SSL termination and routes traffic to the Vue.js static files or the Spring Boot API.
- Frontend (Vue.js): A Single Page Application (SPA) that handles the UI and user interactions.
- Backend (Spring Boot): The RESTful API that handles business logic, database transactions, and security checks.
- Database (PostgreSQL): Persistent storage for news, team members, and configuration.
- Containerization (Docker): Everything is wrapped in Docker containers
Admin Dashboard
Our system implements a two-tier auth system to log in.
- The Super User: One hard-coded or environment-variable-based account used for initial setup or emergency access.
- Google OAuth 2.0:
- The Whitelist: Access isn't open to any Google account.
AnOnlyemailemailsmustendingbe explicitly added to thewithGoogle@roboteamtwente.nlCloudareConsole/OAuth Dashboard.permitted. - Logic: When a user logs in, the backend checks if the returned Google email exists in the authorized list. If it’s not there, the Spring Boot Security filter returns a
403 Forbidden.
- The Whitelist: Access isn't open to any Google account.
Admin Panel & Content Management
The website isn't just a static landing page; it’s a dynamic CMS. Almost all pages hold content that you are able to edit and manage through the admin panel.