Skip to content
HMU Navigation screenshot

HMU Navigation

TypeScript React Native Node.js PostgreSQL PostGIS Redux

2022 - 2023

Built a cross-platform campus navigation app as my thesis project at Hellenic Mediterranean University, enabling 5,000+ students to locate 200+ rooms with indoor/outdoor mapping and live class schedules.

About

When I started at HMU, there was no digital map of the campus. New students wandered hallways looking for rooms, and the university’s floor plans existed only as scanned PDFs in a drawer. This app was my answer to that, the first time a Greek university campus had a navigable indoor map on a phone.

Architecture

The app has three layers: a React Native mobile client, a Node.js/Express API, and a PostgreSQL + PostGIS database storing all geospatial campus data.

The backend follows a clean layered architecture (Presenter → Domain → Data) with DAOs for data access, DTOs for API responses, and a custom error hierarchy. All spatial queries use PostGIS functions like ST_DistanceSphere and ST_AsGeoJSON, and every geospatial endpoint returns standard GeoJSON FeatureCollections. The API also integrates with the university’s MRBS (Meeting Room Booking System) to pull live class schedules and room reservations.

On the mobile side, indoor maps are rendered as polygon overlays on Google Maps via react-native-maps. Each floor of each building has digitized room polygons mapped to real-world coordinates. Pathfinding runs a custom Dijkstra’s algorithm over a graph of navigation points and connections, with support for multi-floor transitions (stairs and elevators) and accessibility-aware routing. State management uses Redux Toolkit with 11 slices (6 persisted via Redux Persist) to handle everything from map regions to search history. Turf.js handles point-in-polygon detection to identify which building and room the user is interacting with.

My Role

I built the entire app solo: the backend API, the PostGIS database schema, the MRBS schedule integration, the pathfinding algorithm, the indoor mapping system, and the full React Native mobile client.

What I Learned

This was the first project that really made me think in a production way. One big lesson was about data that doesn’t exist yet. There was no digital indoor map data for the campus, just paper floor plans. Turning those into navigable, coordinate-mapped room polygons required close collaboration with the university’s facilities department. It taught me that sometimes the hardest engineering problem isn’t code, it’s getting the right data in the right format.

The other lesson was about presenting complex data in a way that feels obvious. A campus has hundreds of rooms, overlapping schedules, and multi-floor buildings. Making all of that feel simple and intuitive on a phone screen forced me to think deeply about information hierarchy, map interactions, and how users actually navigate space. It shaped how I approach UI work to this day.