All Projects → ThreeDotsLabs → Wild Workouts Go Ddd Example

ThreeDotsLabs / Wild Workouts Go Ddd Example

Complete application to show how to apply DDD, Clean Architecture, and CQRS by practical refactoring of a Go project.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Wild Workouts Go Ddd Example

Awesome Firebase
🔥 List of Firebase talks, tools, examples & articles! Translations in 🇬🇧 🇷🇺 Contributions welcome!
Stars: ✭ 448 (-40.74%)
Mutual labels:  serverless, google-cloud, firebase, firestore
Integrify
🤝 Enforce referential and data integrity in Cloud Firestore using triggers
Stars: ✭ 74 (-90.21%)
Mutual labels:  serverless, firebase, firestore
Firegraph
GraphQL Superpowers for Google Cloud Firestore
Stars: ✭ 80 (-89.42%)
Mutual labels:  google-cloud, firebase, firestore
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (-76.46%)
Mutual labels:  cqrs, ddd, clean-architecture
Cqrs Clean Eventual Consistency
CQRS, using Clean Architecture, multiple databases and Eventual Consistency
Stars: ✭ 247 (-67.33%)
Mutual labels:  clean-architecture, ddd, cqrs
Ipoli Android
Fun & Motivational Todo List with Calendar for Android written in Kotlin. Using Redux, coroutines, Firebase and Clean Architecture.
Stars: ✭ 234 (-69.05%)
Mutual labels:  firebase, firestore, clean-architecture
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+721.43%)
Mutual labels:  clean-architecture, ddd, cqrs
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-91.01%)
Mutual labels:  clean-architecture, ddd, cqrs
firebase-event-sourcing
Event Sourcing + CQRS + DDD for Firebase
Stars: ✭ 14 (-98.15%)
Mutual labels:  cqrs, ddd, firestore
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 (-97.62%)
Mutual labels:  cqrs, ddd, clean-architecture
Clean-Architecture-Template
Configurable Clean Architecture template containing the DDD + CQRS approach for .NET Core applications.
Stars: ✭ 14 (-98.15%)
Mutual labels:  cqrs, ddd, clean-architecture
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (-69.84%)
Mutual labels:  clean-architecture, ddd, cqrs
Dev Stuff
😎 Programming stuff for everyone. Collection of articles, videos about architecture, Domain Driven Design, microservices, testing etc.
Stars: ✭ 105 (-86.11%)
Mutual labels:  clean-architecture, ddd, cqrs
Eventhorizon
CQRS/ES toolkit for Go
Stars: ✭ 961 (+27.12%)
Mutual labels:  google-cloud, ddd, cqrs
Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+68.39%)
Mutual labels:  clean-architecture, ddd, cqrs
nbb
.Net Building Blocks
Stars: ✭ 98 (-87.04%)
Mutual labels:  cqrs, ddd, clean-architecture
Practical Clean Ddd
A simplified and effortless approach to get started with Domain-driven Design, Clean Architecture, CQRS, and Microservices patterns
Stars: ✭ 28 (-96.3%)
Mutual labels:  clean-architecture, ddd, cqrs
educational-platform
Modular Monolith Java application with DDD
Stars: ✭ 124 (-83.6%)
Mutual labels:  cqrs, ddd, clean-architecture
Plastic
This project provides encapsulation of things like Domain, Application Rules, Business Rules or Business Logic in Application.
Stars: ✭ 30 (-96.03%)
Mutual labels:  cqrs, ddd, clean-architecture
React Firebase Starter
Boilerplate (seed) project for creating web apps with React.js, GraphQL.js and Relay
Stars: ✭ 4,366 (+477.51%)
Mutual labels:  serverless, firebase, firestore

Wild Workouts

The idea for this series, is to apply DDD by refactoring. This process is in progress! Please check articles, to know the current progress.

Wild Workouts is an example project that we created to show how to build Go applications that are easy to develop, maintain, and fun to work with, especially in the long term!

No application is perfect from the beginning. With over a dozen coming articles, we will uncover what issues you can find in the current implementation. We will also show how to fix these issues and achieve clean implementation by refactoring.

Articles

"Too modern" application

  1. Too modern Go application? Building a serverless application with Google Cloud Run and Firebase [v1.0]
  2. A complete Terraform setup of a serverless application on Google Cloud Run and Firebase [v1.1]
  3. Robust gRPC communication on Google Cloud Run (but not only!) [v1.2]
  4. You should not build your own authentication. Let Firebase do it for you. [v1.3]

Refactoring

  1. Business Applications in Go: Things to know about DRY [v2.0]
  2. When microservices in Go are not enough: introduction to DDD Lite [v2.1]
  3. Repository pattern: painless way to simplify your Go service logic [v2.2]
  4. 4 practical principles of high-quality database integration tests in Go [v2.3]
  5. Introducing Clean Architecture by refactoring a Go project [v2.4]
  6. Introducing basic CQRS by refactoring [v2.5]
  7. Combining DDD, CQRS, and Clean Architecture
  8. Microservices test architecture. Can you sleep well without end-to-end tests? [v2.6]
  9. More articles are on the way!

Directories

  • api OpenAPI and gRPC definitions
  • docker Dockerfiles
  • internal application code
  • scripts deployment and development scripts
  • terraform - infrastructure definition
  • web - frontend JavaScript code

Live Demo

The example application is available at https://threedotslabs-wildworkouts.web.app/.

Running locally

> docker-compose up

# ...

web_1             |  INFO  Starting development server...
web_1             |  DONE  Compiled successfully in 6315ms11:18:26 AM
web_1             |
web_1             |
web_1             |   App running at:
web_1             |   - Local:   http://localhost:8080/
web_1             |
web_1             |   It seems you are running Vue CLI inside a container.
web_1             |   Access the dev server via http://localhost:<your container's external mapped port>/
web_1             |
web_1             |   Note that the development build is not optimized.
web_1             |   To create a production build, run yarn build.

Google Cloud Deployment

> cd terraform/
> make

Fill all required parameters:
	project [current: wild-workouts project]:       # <----- put your Wild Workouts Google Cloud project name here (it will be created) 
	user [current: email@gmail.com]:                # <----- put your Google (Gmail, G-suite etc.) e-mail here
	billing_account [current: My billing account]:  # <----- your billing account name, can be found here https://console.cloud.google.com/billing
	region [current: europe-west1]: 
	firebase_location [current: europe-west]: 

# it may take a couple of minutes...

The setup is almost done!

Now you need to enable Email/Password provider in the Firebase console.
To do this, visit https://console.firebase.google.com/u/0/project/[your-project]/authentication/providers

You can also downgrade the subscription plan to Spark (it's set to Blaze by default).
The Spark plan is completely free and has all features needed for running this project.

Congratulations! Your project should be available at: https://[your-project].web.app

If it's not, check if the build finished successfully: https://console.cloud.google.com/cloud-build/builds?project=[your-project]

If you need help, feel free to contact us at https://threedots.tech

Screenshots

Wild Workouts login Wild Workouts trainer's schedule Wild Workouts schedule training

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].