# Introduction

### **System Architecture**

The landing page consists of these parts:

- **Reverse Proxy (Nginx):**<span style="white-space: pre-wrap;"> Acts as the entry point. It handles SSL termination and routes traffic to the Vue.js static files or the Spring Boot API.</span>
- **Frontend (Vue.js):**<span style="white-space: pre-wrap;"> A Single Page Application (SPA) that handles the UI and user interactions.</span>
- **Backend (Spring Boot):**<span style="white-space: pre-wrap;"> The RESTful API that handles business logic, database transactions, and security checks.</span>
- **Database (PostgreSQL):**<span style="white-space: pre-wrap;"> Persistent storage for news, team members, and configuration.</span>
- **Containerization (Docker):**<span style="white-space: pre-wrap;"> Everything is wrapped in Docker containers</span>

Which is easier to understand with following diagram:  
[![image.png](https://bookstack.roboteamtwente.nl/uploads/images/gallery/2026-04/scaled-1680-/xqMimage.png)](https://bookstack.roboteamtwente.nl/uploads/images/gallery/2026-04/xqMimage.png)

### **Admin Dashboard**

Our system implements a two-tier auth system to log in.

1. **The Super User:**<span style="white-space: pre-wrap;"> One hard-coded or environment-variable-based account used for initial setup or emergency access.</span>
2. **Google OAuth 2.0:**
    - **The Whitelist:**<span style="white-space: pre-wrap;"> Access isn't open to any Google account. Only emails ending with </span>`<span class="editor-theme-code">@roboteamtwente.nl</span>`<span style="white-space: pre-wrap;"> are permitted.</span>
    - **Logic:**<span style="white-space: pre-wrap;"> 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 </span>`<span class="editor-theme-code">403 Forbidden</span>`.

\*Adding new users to authorized list: while everyone is technically allowed to login if they are have a @roboteamtwente.nl email, you still have to add them to website's whitelist. It is done in "User Managing" tab on admin's dashboard. It is possible to have a user listed, though deactivated, for book keeping reasons.  
[![image.png](https://bookstack.roboteamtwente.nl/uploads/images/gallery/2026-04/scaled-1680-/eJ8image.png)](https://bookstack.roboteamtwente.nl/uploads/images/gallery/2026-04/eJ8image.png)

### **Admin Panel &amp; Content Management**

<span style="white-space: pre-wrap;">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. </span>