top of page
  • Writer's picturePete

Finding Our Way: O-Tools First Year

Like many people, I get satisfaction from being productive; getting stuff done; ticking-off that todo list. As a software engineer, I’m motivated by solving problems & seeing people use the software I’ve built.


So a year after creating O-Tools (https://otools.uk) it’s cool to see fellow orienteers using it on a daily basis, and complete strangers signing up with zero marketing effort - I guess they call that organic growth or virality.


The Seeds of an Idea


I didn’t really plan to build the site - it sort of just happened. I was entered into a Guildford Orienteers National event at Waggoner’s Wells, and being the competitive type I wanted to see who I was racing against. Looking through the entry list, to be honest I didn’t recognise many names. I hacked together a quick script to match the entries with British Orienteering Rankings and listed the competitors in seeded order. Now I could see who I was trying to beat & the first O-Tool was born!


Navigating the Features


The seeding functionality has resonated strongly with orienteers due to the competitive nature of the sport. It fosters a sense of camaraderie and healthy competition within the orienteering community, prompting many fun discussions at events and online. Users appreciate being able to see who they're up against and can look back once the results are published to evaluate their performance.

In addition to the Event Seeding functionality, O-Tools now offers a range of features tailored to the needs of UK orienteers:


  • Eeny, Meeny, Miny, O: Compare details of different events taking place on the same day, helping you decide which event to enter. This idea came about when I noticed a seemingly random event in Scotland that had all the top orienteers in the UK entered. Eeny displays a Ranking Profile for each event (along with location, travel time, available courses & last entry date) so users can easily see where “the place to be” is!

  • My Events: Track the events you, your family, and friends have entered. You can see event listings and decide whether to "watch" an event if you might enter it later or "hide" an event if you're not interested.If you’re the family member who is responsible for entering everyone into events, you’ll recognise the on-the-way-there question, “which course am I running again?”. I built My Events to quickly list the events & courses entered, and it’s been extended so that users can also keep track of upcoming events they might like to enter.

  • Map Finder: Quickly search for orienteering maps of a given area, making pre-event geeking a breeze.


Under the Covers


From a technical perspective, O-Tools is built with minimal running costs by leveraging free, open-source and low-cost technologies & services. Here’s a glimpse into the technical stack:

  • Azure Static Web Apps hosts the frontend, which is built using plain old HTML, CSS, JavaScript (with Bootstrap), while TypeScript Managed Functions handle interactions in a serverless architecture.

  • MongoDB Atlas serves as the database, providing scalability and reliability for storing event and user data.

  • Auth0 handles user management, ensuring secure authentication and authorization for O-Tools users.

  • Google Maps is used for features like travel times & distances, and location display, enhancing the overall user experience.

  • SendGrid is used for sending transactional emails, keeping users informed about their events and account activities.

  • GitHub provides the code repository, with GitHub Actions acting as the CI/CD pipeline and handling additional nightly processes.


All of these technologies have generous free-tiers, demonstrating that building a robust platform doesn’t have to break the bank.


The Route Ahead


There’s a long list of new tools and features I have in mind, so I think this project will keep me busy for a while yet. 


Thank you to everyone who has helped along the way, even when it’s just to point out when something is wrong or not working!


bottom of page