1.6 KiB
1.6 KiB
HikeBuddy
Hiking assistant app: planning, gear, hike support, tracking. Built for expansion — new features will be added over time.
Tech Stack
- Java 21, Spring Boot 4.0.6
- Thymeleaf for server-side rendered UI
- Maven (wrapper via
mvnw) - Docker + Docker Compose for deployment
Project Structure
src/main/java/de/pitfriedrich/hikebuddy/
HikebuddyApplication.java # Entry point
calculator/ # Hike duration feature
HikeDurationController.java # GET/POST /calculator
HikeDurationService.java # Duration formula logic
HikeDurationForm.java # Form binding (altitudeDifference, distance)
src/main/resources/
templates/calculator.html # Thymeleaf template
application.yaml
Convention: each feature lives in its own sub-package under de.pitfriedrich.hikebuddy.
Build & Run
# Run locally
./mvnw spring-boot:run
# Run tests
./mvnw test
# Build JAR
./mvnw package -DskipTests
# Run via Docker Compose (port 8080)
docker compose up --build
App runs on http://localhost:8080. Root / redirects to /calculator.
Key Business Logic
Hike Duration Formula (HikeDurationService)
v1 = altitudeDifference (m) / 300
v2 = distance (km) / 4
duration (hours) = max(v1, v2) + 0.5 * min(v1, v2)
totalMinutes = round(duration * 60) → displayed as hours + minutes
Adding New Features
- Create sub-package under
de.pitfriedrich.hikebuddy.<feature> - Add Controller, Service, Form/DTO classes
- Add Thymeleaf template under
src/main/resources/templates/ - Update
SPEC.mdchecklist when done