This repository contains my submissions for the course Programmentwicklung 2 (3rd semester Software Engineering, University of Stuttgart, 3 ECTS). The goal was to implement a full-stack Todo Planner with a Vue.js frontend, a Spring Boot backend, and MariaDB as the relational database.
api/: Spring Boot backend service.frontend/: Vue 3 + Vite single-page frontend.docker-compose.yml: Helper definition for a local MariaDB instance.
Backend
- Java 17 or later (developed and tested with JDK 21)
- Maven Wrapper (shipped as
./mvnw) or Maven 3.9+ - MariaDB 10.6+ running on
localhost:3306(or adjustspring.datasource.*inapi/src/main/resources/application.properties)
Frontend
- Node.js 18 LTS or newer (Vite recommends the current LTS release)
-
Clone the repository
git clone https://github.com/MaximilianRau2004/Todo-App.git cd Program-Development-2 -
Start MariaDB
- If you already have MariaDB installed, make sure a database named
todo_appexists and that the credentials inapplication.propertiesmatch your setup (defaults: userroot, passwordroot). - Alternatively use the bundled Docker Compose file:
This exposes MariaDB on
docker compose up -d database
localhost:3306with the sameroot/rootcredentials.
- If you already have MariaDB installed, make sure a database named
-
Run the backend
cd api ./mvnw clean verify # optional but ensures dependencies/tests are ok ./mvnw spring-boot:run
The API becomes available on
http://localhost:8080/api/v1. -
Run the frontend
cd frontend npm install npm run devVite serves the SPA on
http://localhost:5173. If your backend runs on a different host/port, updatefrontend/src/config.ts(apiBaseUrl). -
Build commands (optional)
- Backend production JAR:
cd api && ./mvnw clean package - Frontend static build:
cd frontend && npm run build
- Backend production JAR:
- Database resets: The backend currently uses
spring.jpa.hibernate.ddl-auto=create-drop, so the schema is recreated on each run. Switch toupdateinapplication.propertiesif you need persistence across restarts. - Ports already in use: Stop other services bound to
8080or5173, or change the ports viaapplication.properties(backend) or thenpm run dev -- --port <port>flag (frontend).
Maximilian Rau
maxi.rau2004@gmail.com