I've recently been busy upgrading and creating a number of projects written in C# using .NET5 Framework. The projects range in difficulty from intermediate to advanced and cover a broad range of topics including:
- using C# with database tech like Postgres and MongoDB
- API examples for REST, GraphQL, and gRPC
- AWS examples covering services like DynamoDb, Cognito, S3, SNS, and SQS
- working with message brokers like Rabbit MQ
- setting up your development stack using Docker and Docker-Compose
- ASP.NET and ASP.NET Identity
- .NET Entity Framework Core
- working with Redgate Flyway to manage database versioning and migrations
- architecture examples like modular monolith, onion architecture, clean architecture etc
There are 8 projects in total and can be summarised as follows:
- NoteWorx ASP.NET
- Identity Example
- Algorithms and Data Structures
- RabbitMQ for .NET Developers
- AWS for .NET Developers
- MFlix .NET
- Chinook .NET
- Ranker .NET (REST API Guide)
NoteWorx ASP.NET
NoteWorx ASP.NET is a basic note management web application that has been built using ASP.NET Core, ASP.NET Core Identity, Entity Framework Core, and Postgresql.
Highlights:
- .NET5
- ASP.NET application using Identity
- Shows how to use Gulp as an asset manager for javascript, css, and fonts etc
- Uses docker, docker-compose to manage stack (Postgres etc)
Project Page:
Identity Example
Identity Example is a project that shows how to use, customise, and configure Identity on Asp.Net Core with different backend stores (postgresql, mssql, sqlite). If you've ever wondered about how to take complete control over the way the Identity database is generated, then this is a good project to use as a guide.
Highlights:
- .NET5
- Focus on ASP.NET Identity customization
- Includes sample API project that demonstrates how to use ASP.NET Identity and Jwt Bearer Authentication. The API project also demonstrates how to implement refresh tokens.
- Uses docker, docker-compose to manage stack for Postgres, MSSQL
- Uses powershel and bash scripts to automate spinning up and down of various stacks
Project Page:
Algorithms and Data Structures
Algorithms and Data Structures is a compilation of various algorithms and data structures that have been implemented using C# and Javascript.
Highlights:
- .NET5 and Javascript
- Covers Bubble Sort, Shell Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, Singly Linked List, Doubly Linked List
- Accompanied by detailed README explaining various algorithms and data structures
Project Page:
RabbitMQ for .NET Developers
RabbitMQ for .NET Developers is a composition of RabbitMQ examples for C# .NET developers. This project has a specific focus on demonstrating how to use RabbitMQ with C#.NET 5. This is achieved by providing a collection of practical examples (written in C#.NET 5) that highlight a number of messaging patterns.
Highlights:
- .NET5
- Demonstrates the following message patterns:
- Accompanied by detailed README files for each example demonstrating message pattern.
- Accompanied by a "getting started" guide that will help you learn a little more about RabbitMQ
- Manage entire RabbitMQ stack using Docker and Docker-Compose
Project Page:
AWS for .NET Developers
AWS for .NET Developers is a collection of independent .NET projects written in C# .NET 5 that demonstrate how to integrate with various AWS services using the AWS SDK for dotnet.
Highlights:
- .NET5
- Demonstrates the following AWS services:
- Accompanied by detailed README files for each AWS service example demonstrating how to use the .NET AWS SDK.
- Demonstrates how to use .NET Secret Manager by storing AWS config as "secrets"
Project Page:
MFlix .NET
MFlix .NET is a showcase of how to build API's (REST, gRPC, GraphQL) using C# .NET. I have created a contrived use-case that allows me to demonstrate how to build different API's for different needs. The high-level requirements cater to 3 types of developers as illustrated below:
Furthermore, the project is based on the following high-level architectural diagram that highlights
- the type of API's being built
- the way in which different API's will be accessed by different types of applications
- the scope of API's (public or private)
Highlights:
- .NET5
- Error handling
- Logging
- Caching
- Security
- Dependency Injection
- Configuration
- How to do paging, filtering, and sorting via the API
- Developing with MongoDB and C#
- Demonstrates how to seed a MongoDB database as part of docker-compose stack
- Preparing a local development environment using Docker and Docker-Compose
- Working with MongoDB database
- Working with SEQ as a log server
- Accompanied by detailed README that explains the project in more detail and also how to get started.
Project Page:
Chinook .NET
Chinook .NET is project designed to illustrate how to build a Modular Monolith using the Onion Architecture as a guide. The motivation behind this project is to demonstrate an alternative to starting off with Microservices straight away.
The high-level architecture for this Modular Monolith is illustrated as follows:
There are 3 primary modules, where each module has it's own API. Each module should be constrained (though not a hard constraint for practical reasons) to a single schema within a shared database. Each module is based on the Onion Architecture with influences from Clean Architecture. Therefore, each module can be viewed in terms of the following illustration:
Highlights:
- .NET5
- Working example of Modular Monolith
- Working example of Onion Architecture
- Demonstrates how to use MediatR
- Demonstrates how to use Redgate Flyway to manage database versioning and migrations
- Demonstrates how to setup a local development stack using Docker and Docker-Compose
- Accompanied by detailed README that goes into more detail about the project and how to get started
Project Page:
Ranker .NET (REST API Guide)
Ranker .NET (REST API Guide) is a guide with the goal of laying down foundational knowledge that is required when speaking about building REST API's. I decided to backup the theory with a practical example written in C#.NET5.
Highlights:
- REST Constraints
- HATEOAS (Hypermedia As The Engine Of Application State)
- Richardson Maturity Model
- REST in Practice (Some practical guidelines)
- Example project (Written in C# .NET 5) called Ranker
- Demonstrates how to setup a local development stack using Docker and Docker-Compose
- Accompanied by detailed README that goes into more detail about the project and how to get started. The README also forms the basis for the REST API Guide
Project Page:
Conclusion
These projects are very much a labour of love. I create these projects so that I have something to point people to when I am explaining topics. I will continue to build on these projects and improve as I find more time to commit. But I would also like to share knowlege about my other love, namely, javascript/typescript. Therefore, I will most likely be building some React frontends for some of these API projects in the future. I'm also keen on demonstrating how to build a Microservices project by implementing services in both Typescript and C#. Also, people have been asking me if I'd consider producing some online videos about content relating to the aforementioned projects. I'm considering the idea, although my biggest concern is being able to make the time 🤷‍♂️
Top comments (7)
This is great! Kudos for great effort to give such a great collection of various applications for community.
Thanks Douglas
Thanks Branislav!
This type of feedback makes it even more worth while contributing to the community.
That is a huge set of stacks and platforms covered! Well done to you. How long did that take?
Thanks for the feedback Dylan!
In terms of time, I have totally lost track :D
Love this collection.
Thank you for providing it.
These are fantastic. I'll definitely be pulling down your repos.
All of your projects are topics that I'm massively interested in.
Thanks Tom! I'm glad that you find the topics interesting 🙂