Inspiration
We were excited by Ligentia's sponsor challenge, and wanted to explore a new area for all of us. We were interested in working on a subject none of us were familiar with, and saw an opportunity to reach into a more industry-oriented side of computing and technology.
What it does
Mercurial is an Open Source Intelligence Suite that collates and analyses over 20 different data sources of current, real world event. It allows users to enter custom supply chains composed of roads, trains, ship or air travel, and incorporates real-time data to analyse risks to their supply chain. They can then monitor their routes on a map, and will be notified of any potential disruptions that may affect a route. The global map can display a vast array of data about disruptions, including traffic and weather, train delays, shipping lane advisories, air GPS jamming, and trade/travel embargoes. It also features a news monitoring system that automatically scrapes and identifies topics of interest for the user, allowing them to keep abreast of topics that may impact their supply chains and business.
How we built it
The system is built using a React frontend formatted with Tailwind. It interfaces with a Next.js backend, supported by a MongoDBAtlas for data persistence. We have integrated Github for easy OAuth authentication and access control.
The system then collects data from a vast array of different sources, including official government APIs, as well as a dose of web scraping to acquire data through more traditional OSINT methods. The entire system is written in TypeScript, making broad usage of strict typing to formalise and federating data passing between the front and backend.
Challenges we ran into
Finding relevant and usable open-source data sources was a challenge. Maritime and Aviation data is typically confined to extremely expensive and specialised tooling; as such we had to take some unorthodox approaches to data collection.
Furthermore, cooperative programming proved challenging at points due to the small code base. The system features few features, but each feature contains a lot of depth. As such this resulted in us frequently using the same files, making merge conflicts common.
Accomplishments that we're proud of
We're glad to have implemented an attractive front-end, explored and implemented a diverse range of unique data sources, and getting to grips with unfamiliar frameworks and languages in a limited time frame.
What we learned
It is essential to make frequent smaller Git commits to avoid significant headaches and make sure we didn't overwrite each other. We learnt how to balance making quick decisions with planning ahead and keeping the project easy to modify. We've also learnt a lot more about the data and considerations that have to be taken into account when working on supply chains.
Built With
- mongodbatlas
- next.js
- react
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.