Made by Team Escaped Characters
Seamless Itineraries for Unforgettable UK Journeys.
Introduction ExploreUK is a travel planning app designed to help users create seamless, personalised itineraries for exploring cities across the UK. Whether you’re a tourist visiting for the first time or a local looking to discover hidden gems, ExploreUK simplifies the process by integrating powerful APIs, intuitive design, and user-friendly features. The Idea Behind ExploreUK The inspiration for ExploreUK came from the frustration of planning efficient and enjoyable trips. Many travel apps focus on generic recommendations without considering individual preferences, real-time logistics, or ease of access. Our goal was to create an app that goes beyond simple list-making and actively helps users build an optimised itinerary based on their interests, available time, and real-time travel data. We wanted to make travel planning effortless, integrating APIs like Google Places and Google Route to offer tailored recommendations and efficient route mapping. The idea was also driven by the need for a convenient way to save and manage itineraries, ensuring travellers can access their plans anytime, anywhere. User Experience Overview Onboarding & User Profiles New users sign up via email or Google OAuth and select whether they are a tourist or a tour guide (for future expanded features). The profile saves user preferences, such as interests (historical sites, nature, food spots, cultural experiences, etc.), so recommendations are tailored from the start. Planning an Itinerary Users enter a city and date for their trip. They select preferences such as sightseeing, dining, outdoor activities, or historical landmarks. The app fetches recommendations using Google Places API, presenting top-rated attractions, restaurants, and experiences that match their interests. Optimised Route Planning After selecting places to visit, the Google Route API organises them in an efficient order to minimise travel time. Users can reorder stops manually or allow the app to suggest the best route. Saving & Exporting Itineraries Users can save itineraries to their profile and access them later. If logged out, users are prompted to sign in before exporting itineraries or saving to their calendar. Itineraries can be exported as PDFs or synced with a calendar for easy access during travel. Real-Time Interaction & Customisation The app allows users to edit their itineraries on the go. Real-time weather updates and travel alerts help users adjust their plans. The app will eventually support reviews and recommendations from locals for a more authentic experience. Seamless Navigation & User-Friendly Design The interface is clean and intuitive, making itinerary planning fast and enjoyable. A personalised dashboard shows saved itineraries, suggested destinations, and upcoming trips.
The Team
Imran Hussain
Imran, from Birmingham, has a background in biology and…
previously worked as a logistics coordinator for five years before transitioning into software development. He enjoys problem-solving and building practical solutions that make a difference. Outside of tech, Imran is passionate about family, financial markets, chess, and DIY projects. He values continuous learning, exploring new ideas, and finding ways to apply his skills to real-world challenges.
Alex Schubert
After five years working in fast-paced kitchens, Alex…
decided to trade his chef’s knife for a keyboard, and I hasn’t looked back since! He’s definitely the guy with the burning questions. He also holds degree in Shrekology (First-class Honours). Leeds, UK
Shams Ali
10-year career in accountancy & tax consultancy, from…
bootcamp probably back to book-keeping. Enjoy sport shooting, hockey and dessert.
Josh Faichney
Has a degree in Google Maps
Braima Djassi
A future crypto millionnaire
Nicolas Traver
Dreams to make it in Silicon Valley!
Tech Stack

We used: React, React Router, PSQL, Express.js, Supabase, Google Places API, Google Route API, Jest/Supertest, React We chose React because it allows us to build a fast, interactive, and reusable component-based UI. It also has a large ecosystem and excellent community support. React Router Used to handle navigation within the app, ensuring seamless transitions between pages without full-page reloads. Express.js A lightweight and flexible Node.js framework that makes it easy to set up API endpoints, handle requests, and interact with the database. PostgreSQL (PSQL) A powerful, relational database used to store user profiles, saved itineraries, and location-based data efficiently. Supabase Chosen for authentication (Google OAuth & email login) and database management. It provides a PostgreSQL-backed solution with built-in authentication, reducing the need for a custom auth setup. Google Places API Used to fetch location-based recommendations for attractions, restaurants, and experiences based on user preferences. Google Route API Helps optimise travel routes by calculating the most efficient way to visit selected locations. Jest / Supertest Used for unit and integration testing of the backend. Supertest ensures that our API endpoints function as expected before deployment.
Challenges Faced
Managing Authentication & User Roles Challenge: Implementing authentication with Supabase while ensuring users could log in via email/password and Google OAuth. Additionally, differentiating between tourists and tour guides in user profiles. Solution: We used Supabase Auth for authentication and stored user roles in our PostgreSQL database. This allowed us to dynamically control access to certain features based on the user’s role. Fetching and Handling Google API Data Challenge: The Google Places API provides a vast amount of data, but not all of it was structured in a way that fit our use case. Filtering relevant locations while avoiding unnecessary API calls was tricky. Solution: We set up query parameters to filter out unnecessary data, reducing API usage costs and improving performance. We also cached API responses where possible to limit redundant calls. Optimising Route Planning Challenge: The Google Route API provides multiple route options, but ensuring we optimised the order of locations efficiently without overly complex logic was a hurdle. Solution: We used the optimisation feature within the API, which calculates the most efficient order of stops, minimising travel time. Additionally, we allowed users to manually reorder stops if they preferred a different route. State Management & Navigation Challenge: Managing user-selected locations and preferences across multiple pages while ensuring a smooth user experience. Solution: Initially, we considered Redux, but it felt like overkill for this project. Instead, we used React Context API. Handling Backend & Database Queries Challenge: Querying and storing user itineraries efficiently while ensuring the database structure allowed for easy retrieval. Solution: We structured our PostgreSQL database with relational tables, ensuring indexed queries for faster lookup times. We also optimised our Supabase queries to return only necessary data, reducing backend load.