All Projects → MarcelMichau → fake-survey-generator

MarcelMichau / fake-survey-generator

Licence: MIT license
A slightly more-than-trivial full-stack application built with DDD & CQRS concepts

Programming Languages

C#
18002 projects
typescript
32286 projects
Bicep
55 projects
Mustache
554 projects
Dockerfile
14818 projects
HTML
75241 projects

Projects that are alternatives of or similar to fake-survey-generator

ddd-net-ef-core
Self study: DDD, .net core, entity framework core
Stars: ✭ 41 (-16.33%)
Mutual labels:  cqrs, domain-driven-design, entity-framework-core, mediatr
RCM
RCM is a simple CRM application designed for Auto Parts Store made with ASP.NET Core based on DDD, CQRS and SOLID Principles.
Stars: ✭ 29 (-40.82%)
Mutual labels:  cqrs, entity-framework-core, mediatr
MonolithicArchitecture
This repository presents an approach on how to build an application using Monolithic architecture, ASP.NET Core, EntityFrameworkCore, Identity Server, CQRS, DDD
Stars: ✭ 18 (-63.27%)
Mutual labels:  cqrs, domain-driven-design, entity-framework-core
Run Aspnetcore
A starter kit for your next ASP.NET Core web application. Boilerplate for ASP.NET Core reference application, demonstrating a layered application architecture with applying Clean Architecture and DDD best practices. Download 100+ page eBook PDF from here ->
Stars: ✭ 227 (+363.27%)
Mutual labels:  domain-driven-design, entity-framework-core, aspnet-core
Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+2497.96%)
Mutual labels:  cqrs, domain-driven-design, entity-framework-core
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+10348.98%)
Mutual labels:  cqrs, aspnet-core, mediatr
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+12573.47%)
Mutual labels:  cqrs, domain-driven-design, entity-framework-core
Revo
Event Sourcing, CQRS and DDD framework for C#/.NET Core.
Stars: ✭ 162 (+230.61%)
Mutual labels:  cqrs, domain-driven-design, aspnet-core
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+263.27%)
Mutual labels:  cqrs, domain-driven-design
microservice-template
📖 Nest.js based microservice repository template
Stars: ✭ 131 (+167.35%)
Mutual labels:  cqrs, domain-driven-design
financial
POC de uma aplicação de domínio financeiro.
Stars: ✭ 62 (+26.53%)
Mutual labels:  cqrs, domain-driven-design
eda
eda is a library for implementing event-driven architectures.
Stars: ✭ 31 (-36.73%)
Mutual labels:  cqrs, domain-driven-design
aks-agic
This sample shows how to deploy an AKS cluster with Application Gateway, Application Gateway Ingress Controller, Azure Container Registry, Log Analytics and Key Vault.
Stars: ✭ 36 (-26.53%)
Mutual labels:  azure-key-vault, azure-kubernetes-service
domain
A dependency-free package to help building a business domain layer
Stars: ✭ 33 (-32.65%)
Mutual labels:  cqrs, domain-driven-design
nest-convoy
[WIP] An opinionated framework for building distributed domain driven systems using microservices architecture
Stars: ✭ 20 (-59.18%)
Mutual labels:  cqrs, domain-driven-design
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (-2.04%)
Mutual labels:  cqrs, domain-driven-design
node-cqrs-saga
Node-cqrs-saga is a node.js module that helps to implement the sagas in cqrs. It can be very useful as domain component if you work with (d)ddd, cqrs, eventdenormalizer, host, etc.
Stars: ✭ 59 (+20.41%)
Mutual labels:  cqrs, domain-driven-design
MsCoreOne
MsCoreOne is a simple Ecommerce with using many technologies such as .NET 5, Entity Framework Core 5, React 16.13 with modern Clean Architecture, Domain-Driven Design, CQRS, SOLID, Identity Server 4, Blazor. It will focus on resolving the problems always see in the process to develop projects.
Stars: ✭ 77 (+57.14%)
Mutual labels:  entity-framework-core, mediatr
fullstack-jobs
Real(ish) demo using Angular with ASP.NET Core GraphQL and IdentityServer.
Stars: ✭ 84 (+71.43%)
Mutual labels:  entity-framework-core, aspnet-core
educational-platform
Modular Monolith Java application with DDD
Stars: ✭ 124 (+153.06%)
Mutual labels:  cqrs, domain-driven-design
Logo by Undraw

Fake Survey Generator

This is an app. That generates surveys. Fake ones. For fun. That is all.

Component(s) Build Status
Fake Survey Generator API Build Status
Fake Survey Generator UI Build Status
Azure Infrastructure Build Status

Open in Visual Studio Code

Screenshot

Screenshot

What is this?

This is a .NET | C# | React | TypeScript full-stack application of moderate complexity (not just a to-do app), used as a playground for experimentation. Simply put: This is where I mess around with code. It is heavily inspired by the .NET Microservices: Architecture for Containerized .NET Applications book, as well as its companion reference application eShopOnContainers. It also incorporates various elements from different repos & blog posts which served as inspiration.

It is built using Clean Architecture principles with CQRS (Command Query Responsibility Segregation) and DDD (Domain-Driven Design) thrown into the mix. It doesn't follow these principles to the letter, but provides a decent example of how to apply the basics of these principles.

It is heavily centered around the Microsoft .NET + Azure technology stacks as these are what I have the most experience in & just like building things with. 😀

Here are some of the features incorporated into this project:

Application Features

Infrastructure Features

Some of the above features are relatively straightforward to implement, others have some intricacies that require some Googling in order to set up. I just like to have them placed in the context of a complete working application to refer back to when necessary.

Why is this here?

I wanted something to try new things out on, without the risk of substantially endangering an actual production environment used by actual people.

It was for this reason that I built the Fake Survey Generator (FSG) app as a way to test out tools, libraries, patterns, frameworks & various other stuff.

It has a very simple domain: it generates surveys. Fake ones. They can be used as a tool for helping you decide what to have for dinner, which book you should read next, where you should go for your next team lunch, or anything that tickles your fancy.

This application is also used as a reference for configuring/wiring up some common things I sometimes forget how to do. Living Documentation if you will. You know the culprits: How do I wire up that database again? What is the syntax for that logging configuration? How do I make thing A talk to thing B?

The domain is kept relatively simple such that it doesn't overwhelm the app with unnecessary complexity. It should be quite easy to wrap your head around without requiring a degree in Computer Science.

I also felt that a lot of reference/demo/boilerplate projects out there cover the core application domain & don't go into much detail around the building/deployment/hosting of final application. So this project aims to cover both. It contains application code, configuration, CI/CD pipelines, infrastructure-as-code needed to run the application, as well as a live, running version of the application (as long as budget allows 😁). So this repo hopefully may contain something for everyone & fill in the potential gaps across the whole spectrum of application development. It falls somewhere between a template/boilerplate project & a real-world production open-source application.

How is this thing structured?

FSG consists of two parts:

Server

The server side consists of the following main components:

  • Fake Survey Generator API
    • Domain Project
    • Domain Unit Tests Project
    • Infrastructure Project
    • Application Project
    • Application Tests Project
    • API Integration Tests Project
    • EF Design Project (used purely for EF Core design-time tooling)
    • Data Project (helpers for test data used across test projects)
  • Fake Survey Generator Worker

The server side makes use of the following tools, libraries & frameworks:

Client

The client side consists of the following main components:

  • UI

The client side makes use of the following tools, libraries & frameworks:

Common

The application is built for Docker, Docker Compose & Kubernetes with Helm. For local development, Docker Compose is used when debugging the application with Visual Studio, and Skaffold is used to package the application into a Helm chart to deploy to a local Kubernetes cluster for running locally.

The hosted version of the application is deployed here: https://aks.fakesurveygenerator.mysecondarydomain.com

The following endpoints are accessible:

  • /swagger - The Swagger documentation page for the API
  • /health/live - Health Checks endpoint used by Kubernetes liveness probe
  • /health/ready - Health Checks endpoint used by Kubernetes readiness probe

The hosted version utilizes the following infrastructure:

Authentication

The application makes use of OpenID Connect for authentication which is implemented by Auth0. Currently supported connections are:

  • Auth0
  • Google
  • Microsoft

Initially, this project used IdentityServer for authentication, but I didn't feel like maintaining the separate IdentityServer project as well as the Fake Survey Generator, so I switched it out for Auth0 because authn/authz is hard and I prefer to delegate that responsibility to the people who know how to do it properly. 😁

How do I run this thing?

In order to run FSG on your local machine, you will need the following prerequisites:

To run with Docker Compose:

  1. After installing mkcert, run: mkcert localhost in the certs directory to create the localhost development certificates. If successful, the following will be printed:

    The certificate is at "./localhost.pem" and the key at "./localhost-key.pem"

  2. In a Terminal/Command Prompt/PowerShell window in the project root, run:

    docker-compose up

  3. In a browser, navigate to https://localhost:3000 to open up the Fake Survey Generator UI

or

  1. Open FakeSurveyGenerator.sln in Visual Studio:

  2. Make sure that the docker-compose project is selected as the startup project

  3. Hit F5 to debug the application, or Ctrl + F5 to run without debugging

  4. In a browser, navigate to https://localhost:3000 to open up the Fake Survey Generator UI

To run on local Kubernetes:

To deploy to a local Kubernetes cluster:

  1. Create an entry in your hosts file as follows:

    127.0.0.1 k8s.local

  2. In a Terminal/Command Prompt/PowerShell window in the project root, run:

    skaffold run

  3. In a browser, navigate to https://k8s.local to open up the Fake Survey Generator UI

How do I contribute?

If you find a bug, want to add a feature, or want to improve the documentation, open up a PR!

References

My deepest thanks to all the people who provided these resources as reference:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].