# Challenge Task FS 2026

Starting this semester, the challenge task (CT) is **individual work**.  
With generative AI tools, a single student can now design, build, and implement what previously required a group of 2–3.  
This also means **every student must understand the full stack**.

---

## Overview

This semester's challenge task is the design and implementation of a **distributed system (of your choice)** from scratch, where a service instance can fail.

### The system must include:

- **Simple frontend** (e.g., HTML, Vue, React, Svelte)
- **Load balancer** (e.g., Traefik, Nginx, HAProxy, Caddy)
- **Two service instances**
    - One instance will be shut down during presentation
- **JWT-based authentication**
    - Login/registration required
    - API endpoints must be protected
- **Database**
    - Persistent storage
    - No scalability required

---

## Requirements

All requirements must be fulfilled to pass:

- **Load balancing with failover**
- **Containerized setup** (e.g., Docker)
- **Simple frontend**
- **JWT authentication** following OWASP guidelines
- **Persistent storage**
- Use **latest stable versions** of all libraries/frameworks

### Startup requirement

- A **single command startup** (e.g. `docker compose up`)
    - Includes database migration/seeding
    - No manual setup allowed *(except secrets)*

### Load testing

- Perform load testing on a **JWT-protected endpoint**
- Use tools like:
    - `ab`
    - `wrk`
    - `hey`

#### You must document:

- System behavior under load
- Bottlenecks
- Requests per second

---

## Notes

- AI coding tools are **encouraged**
- You must **understand and explain all code**
- Only **open-source libraries/code** allowed
- Any language/framework is allowed

**Recommended stack:**
- Java
- Go
- JavaScript
- Linux

---

## Milestones

### 📅 02.03.2026 — 1st Submission
- Initial plan and project idea
- Invite supervisors to GitHub/GitLab repository

### 📅 30.03.2026 — 2nd Submission
- Initial commit
- Current progress *(does not need to run)*

### 📅 04.05.2026 — 3rd Submission
- Working parts
- Open issues

### 📅 18.05.2026 — Final Submission & Presentation

---

## Presentation Structure (15 min total)

- **5 min** — Architecture, components, design decisions
- **5 min** — Live demo
- **5 min** — Q&A

---

## Additional Notes

- Presentations take place during the week starting **18.05.2026**
- Locations:
    - St. Gallen
    - Rapperswil
- Submit **PDF presentation after your session**