MACHaton2022 project for travelers needs!

Inspiration

The goal is to connect travelers and local people, ideally experienced guides (regardless of if they are professionals or amateurs). We wanted to create an app that would connect local communities and tourists tired of boring, shallow guidebooks. We would create a space where everyone can create their own tailored trip where find a time to sightseeing, dining, and having fun in one go. We believe that interacting with people from different cultural backgrounds, will make our worldview broader. We also wanted to create a way for locals from tourist-y areas to earn money, to be sure that the tourists' money goes into the community, not to foreign big businesses.

What it does

Instead of being focused on excursions designed for the masses, the platform would encourage a very personalized approach where travelers can mix monuments, museums, interesting restaurants, clubs at predefine time and pay for a customized excursion or just for a plan/design of such a trip. The platform also acts as a marketplace where guides share their excursion templates that could be used as a starting point for a more personal touch.

How we built it

TravelGuide is containerized integration platform of SaaS e-commerce solutions, building together tool for better visiting.

We've took a few services from different companies like: CommerceTools, Algolia, Mapbox, Spring (Java backend), Vue 3 (with TypeScript), GraphQL and we used Google Cloud as the hosting.

Vue frontend is communicating with CommerceTools as the main backend that store products, orders, customers, and we’ve used Algolia as the search-engine and filtering. CT handle the order and SendGrid is used to send an email with order details. Cronjob is used to handle re-indexing Algolia index after CommerceTools DB of products is updated.

Frontend

Frontend is built on Vue with TS and GraphQL (as CommerceTools handle it) as SPA. We didn’t use any most-know framework but one of the CT boilerplates, and the power of composable and reusable components. We have pretty much everything connected / integrates with the services we planned to, even the checkout process is mocked.

Deployment

Application was designed minding stateless principals, making it easy to manage by orchestrators like k8s. Whole project is packed inside docker image ready to deploy.

The required infrastructure is as minimal as possible, to run a working solution you need only one properly configured container, doesn't require any additional self-hosted solutions. Under heavier load it's easy to scale up, yet ingress controller must be properly configured.

Challenges we ran into

First an idea! The web is full of amazing ideas that cover to all kinds of people / society needs. Unfortunately, many of these ideas have already been implemented in various ways as applications, which made it difficult to find our niche. Fortunately, thanks to our creativity, we were able to develop an innovative application design that we would like to use ourselves.

Another problem was the software with which we wanted to create our platform. A lot of tools were new to us, among others. CommerceTools, Algolia and GraphQL, so we had to learn how to use them on an ongoing basis. Undoubtedly, this challenge was very educational, as now we are richer in new knowledge

Moreover, we were new to MACH applications provided, so planning and integrating everything was a huge challenge but thanks to the team members' activity, we managed it quite well

What we learned

  • On first stage for sure we've made a big progress with planning and researching skills.
  • We got to know the frameworks and tools better, such as CommerceTools, Algolia, Vue.
  • We learned about their advantages and limitations and how to implement unusual ideas in the e-commerce environment.
  • We learned how to deal with time pressure when developing software and completing a project in a short time.
  • We also learned how to effectively manage our own human resources.

What's next for TravelGuide

  • more components to be done to cover attractions and tour templates
  • extend Algolia functionalities and provide more filters
  • extend details information
  • add option to add additional attraction to premade tour template
  • make the map more interactive with richer information
  • divide tours into self-paced or guided tours
  • make it more responsive
  • developing feature for creating user profile to better match travel ideas
  • personalized notifications to the user based on their interests
  • add analytics and personalized discounts
  • push-notification about new tours templates and special offers
  • mobile app with GPS-tracking which acts as virtual guide
  • building a community by promoting our solution in social-medias
  • ----more and more… :)
Share this project:

Updates