HistoryHike

Explore the world, complete quests, and unlock artefacts by following in history's footsteps!

Java

Java

Spring

Spring

SQL

SQL

Android

Android

HistoryHike is a highly ambitious location-based Android application designed to make exploration fun, interactive, and rewarding. The project is the culmination of my studies, resulting in an innovative, advanced full-stack system. I developed a performant frontend in Java using Android Studio and a versatile Spring Boot REST API powered backend, hosted on a dedicated VPS.

This was my final University project. Both the project itself and my 57-page report on it received an impressive 90% grade, finalising my First-Class Honours (1:1) grade. If you’re interested, you can download my report here.

User Journey

Users begin by creating an account or logging in. The app then presents a map-based interface where nearby historical quests are displayed. Players walk to real-world locations, discovering artefacts and completing challenges tied to historical events. Progress is tracked through a personal museum of collected artefacts.

System Design

The system follows a clean client-server architecture. The Android app communicates with a Spring Boot REST API, which manages user authentication, quest data, artefact tracking, and geolocation validation. The backend uses a MySQL database for persistent storage, with JPA/Hibernate for ORM.

Backend

The Spring Boot backend follows MVC and SOLID principles, providing RESTful endpoints for authentication, quest retrieval, artefact unlocking, and user profile management. Security is handled through token-based authentication, and error handling is managed through custom exception handlers.

Frontend

The Android frontend uses Java with Google Maps integration for the map-based interface. Geolocation services detect proximity to quest locations. The app supports offline caching for areas with poor connectivity, and uses a clean MVVM-like architecture for state management.