Lately I’ve been working on a side project that I want to share with the world. Project Utopia is a public project hosted on GitHub and Azure DevOps that showcases all kinds of cool features of both GitHub and Azure DevOps in an easily accessible way.
I started building Utopia to have a single demo that I could use for all the talks I give. Before, I had a separate demo for things like ChatOps, DevSecOps, Database DevOps etc. Keeping all those demos up to date and making sure they functioned before giving a talk was becoming a hassle. I now have a single demo project that combines all those DevOps features and can be used to demo a variety of stuff.
And I want to share that publicly so everyone can learn from it and hopefully contribute.
The code for the project is on GitHub in a public repository at: https://github.com/WouterDeKort/Utopia. The user stories, pipelines and other resources are all located in Azure DevOps: https://dev.azure.com/Utopia-Demo/Utopia. The application is deployed to Azure.
You can view the deployed application here https://utopia-production-web.azurewebsites.net.
As a public user of Azure DevOps, you can see the pipelines and some other features. If you want to see other details and get access to the Azure Portal to see the result of the pipelines, please drop me an email at email@example.com and I’ll add you as a reader.
What does it do?
The project is a simple ToDo application that I based on the CleanArchitecture ASP.NET Core template from Steve Smith. For now, the app shows a list of ToDo items and allows you to add and remove items.
This is all very basic and that’s the idea. The focus is on the DevOps components, not on a very complex application.
I will try to update the application each time a new version of .NET Core is released. I will add new functionality in the future to the app if I need it to demo an aspect of DevOps. For example, for Database DevOps, I need a more complex database to showcase always on updates. For Feature Flags, I’ll need authentication. And maybe there are even some microservices in the future.
What DevOps features do you already have?
The basics are in place for now:
- Git repository containing the application
- A continuous integration build based on YAML that builds the application, runs unit tests and runs SonarQube and WhiteSource
- A release pipeline that uses ARM templates to deploy the application to a test and production environment
This is a minimal set of functionalities that I want to expand upon in the coming months. I’ve created a second team (Iron Man) that contains user stories for all the things I would like to add.
Can I help?
Yes please! The project is open source and I happily accept pull requests. As you can see, the backlog is long and I’m pretty sure that the list will keep growing since Microsoft is continually releasing new functionality.
My goal is to make sure that Utopia becomes one of the most complete showcases of what DevOps can do for your organization.
If you want to contribute, please open a GitHub issue or send a pull request!