The challenge of building something within 24 hours. It's our first Hackathon.
What it does
Vicinia allows you to communicate with those around you within a specific radius based upon your geolocation.
How we built it
Vicinia is built upon Flutter, Vue.js, and Azure Functions.
The website takes advantage of the Vue.js Framework, Three.js WebGL Library, and GSAP Animation Library to present the end product (the app) in a practical, clean, and entertaining manner. All of the frameworks except for Vue.js were new and experimental. It was my first time in real implementation.
I encountered plenty of bugs involving packaging errors with the Three.js Library due to some of their packages being separate and not included within the core. This caused plans to shift from using GPU Accelerated Graphics to CPU Power, which caused a change in design dramatically. Nevertheless, Michel and I managed to form a sphere using BufferGeometry and 2D Points successfully. This issue was the longest.
The rest involved tedious work in configuring the GSAP Library to trigger animations correctly and not allow the user to spam events. The built-in functions for the TimelineMax would cause the WebGL to break and not render, so the workaround was to include a switch and trigger in the event.
Hosting is managed with Google Cloud's Firebase and the domain was purchased through domain.com.
It took a total of 15 hours to develop the end product with no errors. This time does not include clean-up in the code. We were tired by then...
This app is written on the Flutter framework entirely in the Dart language. It takes advantage of the BLoC design pattern, to keep the business logic separated from the presentation layer, utilizing asynchronous streams. It also utilizes the repository pattern which helped greatly with testing and UI development. It also incorporates built_value to provide immutable value types.
The back end of this project was written within 12 hours and entirely in C#. We developed a CRUD API that allows the app to create and retrieve messages from the serverless database through Azure Functions. We created a database using Cosmos DB and using the SQL API; we were able to query entries in real time, limiting them by location that we received from the app using GPS coordinates, and sorting them based on the time the message was posted. The limitation radius is scalable, and all math was done by us. The API is based on authenticated HTTP triggers and automatically scales based on traffic and is available globally.
Accomplishments that we're proud of
For our first Hackathon, we are confident with the performance in which we have shown.
What we learned
Don't sleep and don't drink Redbull fast
What's next for Vicinia
Increase the many quality of life improvements and optimization.