TourPlanner is an application that helps users plan, organize, and track their personal tours such as hiking trips, bike rides, runs, or vacations.
Users can create and manage tours in advance, view route information, and record their experiences through tour logs. Each tour can be enriched with details like distance, duration, and difficulty, making it easy to keep an overview of past activities and compare different tours.
The goal of TourPlanner is to provide a simple and intuitive way to organize outdoor activities and reflect on them afterwards.
- Angular
- TypeScript
- HTML / CSS
- Java (Spring Boot)
- Spring Data JPA
- REST API
- PostgreSQL
- JSON (client-server communication)
- Git (version control)
Angular (Frontend) <--HTTP/JSON--> Spring Boot (Backend) --> PostgreSQL
Backend follows a layered architecture:
- Controller (presentation layer)
- Service (business logic)
- Repository (data access)
- User registration & login
- Create, update, delete tours (CRUD)
- Manage tour logs
- Full-text search
Each tour includes:
- Name
- Description
- Start & destination
- Distance & estimated time
- Transport type
- Route information (map)
Each log includes:
- Date/time
- Comment
- Difficulty
- Distance & time
- Rating
- OpenRouteService (route & distance calculation)
- Leaflet (map visualization)
git clone https://github.com/lukifi1/SWEN2.git
cd SWEN2cd server
./mvnw spring-boot:runBackend runs on:
http://localhost:8080
cd frontend
npm install
ng serveFrontend runs on:
http://localhost:4200
Make sure PostgreSQL is running.
Example configuration (application.yml):
spring:
datasource:
url: jdbc:postgresql://localhost:5432/tourdb
username: postgres
password: yourpassword- Backend: JUnit
- Minimum: 20+ unit tests
Run tests:
./mvnw testtourplanner/
├── server/ # Spring Boot backend
├── frontend/ # Angular frontend
└── README.md
- Configuration is externalized (no secrets in code)
- Git history documents development progress
- Design patterns are applied where appropriate
- Lukas Fink
- Franziska Brandfellner
Work in progress