I have been thinking about this during a while, and I finally decided to go open source for this personal project.
I would love to start this project as open source in order to keep growing with latest technologies. Also I want to start it because I’d enjoy how this application could get our life easier when looking for an apartment.
Imagine yourself after having an appointment to check if you like that apartment you saw on Internet. You probably liked it, but now you have a big question:
“Will it be quiet during the night?”
So, if you can draw yourself in this situation I hope you support this project as much as I do!
To resolve this circumstance an application will be built where you will be able to check the noise history for any area in your city using classified and analyzed data, showing you something similar like the traffic map from Google similar to this (no final UI design yet on my mind, I am a back-end guy :) )
And also you could use this app not only for checking data, you could collaborate providing data through your mobile phone and microphone , covering areas where there aren’t noise-meters! And don’t worry at all, I won’t listen anything you say like Alexa or Instagram do to sell you the best offer gadgets (I swear). I only want people to measure the noise level after calibrating your device!
And if you are still hungry for more, in the future the application could predict the noise is going to be in any area you want after analyzing the acquired data, weather, events, traffic, etc (yeesss AI)
This project will start collecting data from Barcelona city and if everything goes as expected it would grow acquired data from another cities around the world!
And now, leaving behind the product definition let’s move to the techie section. Because you will be reading this asking yourself how I am planning to do this (I do really hope you are asking yourself that right now).
- Project name : UrbanNoise (decided with the best girlfriend of the world like 3 years ago)
- Technologies stack : .NET Core 3.0, Azure, CosmosDB, Serverless, DDD, hexagonal architectures, SOLID, DRY, KISS principles, xUnit, Selenium, etc. And trust me, this is for real. Every commit will be analyzed by SonarQube and during the code review process opening Pull Requests. Of course, testing and code coverage will be mandatory.
- Data import process from the noise-meter devices from Barcelona SmartCity webapp (please do not tell this to Ada Colau, it is for a good cause): Azure Functions with Time Triggers (15 minutes cron jobs), saving all the data in CosmosDB.
- API : Using CQRS and Mediator patterns to split the data from be read or written when an user interacts with the application. And also using serverless Azure Functions with HTTP Triggers (it would be cheaper for me for a first phase of this open source project). We could use Azure API Management as a gateway as well.
- Predictor : To be decided, but I would enjoy using ML.NET together with Spark loading the CosmosDB data. The reason I didn’t decided totally this part of the project is my wallet. I am not sure if I could use the cloud services without spending too much money.
- GIT repositories: All code will be located here https://github.com/urbannoise (avoid current repositories as they were created when I was thinking to create everything with microservices and Kubernetes). I am owner of that open source organization.
- CI/CD: Azure Dev Ops Pipelines. I still have to set up everything here, but at least I created the space to start with here: https://dev.azure.com/davidpereiracostoya/UrbanNoise
- UI/Mobile : Wow, this my weak pain point. I would like to discuss this wieh someone, I was thinking about something like VueJS and Flutter, but I am interested in listening more experienced people.
- Planning/Documentation : Azure Dev Ops will be use mainly for this to have only one place where everything can be checked, but of course some Medium articles will be written to share the effort and possible challenges during the development of the project.
And after reading all this text, maybe you are asking yourself, Why Open-Source?
Well, after thinking about it during a long time I have decided to do it in this way because:
- It is a great opportunity to learn from the community.
- I couldn’t do it alone (you know, office hours drain my energy battery)
- But overall, to share our knowledge and our beautiful work.
And that’s all. So if you like the idea and you want to collaborate feel free to leave a comment here or send me a message to my LinkedIn. And if you can share this article I owe you a coffee!
EXTRA BONUS: We are looking for someone with UX experience in Mobile. If you like the idea and you want to collaborate, feel free to leave a comment or send me a message! Thanks!