@@ -76,15 +76,15 @@ When a todo is completed, if this is the first completed todo, an email should b
7676* ** Authentication**
7777* ** Authorization** (Even at the repository level)
7878* ** Automatic JWT renewal**
79- * ** gRPC query caching**
80- * ** Automatic client code generation using gRPC **
79+ * ** gRPC query caching** (deprecated)
80+ * ** Automatic client code generation using OpenAPI **
8181
8282## Technologies Used - Overview
8383Here are listed some of the specific technologies used for the implementation of the project:
8484* ** Authentication** : [ JSON Web Tokens - JWT] ( https://jwt.io/ )
8585* ** Databases - Persistence** : [ MongoDB] ( https://www.mongodb.com/ ) , [ PostgeSQL] ( https://www.postgresql.org/ )
8686* ** Testing** : [ JEST] ( https://jestjs.io/ )
87- * ** External Communication Protocols** : [ REST] ( https://en.wikipedia.org/wiki/Representational_state_transfer ) , [ gRPC] ( https://grpc.io/ )
87+ * ** External Communication Protocols** : [ REST] ( https://en.wikipedia.org/wiki/Representational_state_transfer ) , [ gRPC] ( https://grpc.io/ ) (deprecated)
8888* ** Frameworks** : [ ΝestJS] ( https://nestjs.com/ )
8989* ** PubSub technology** : [ NATS] ( https://nats.io/ )
9090* ** Message Streaming Technology** : [ JetStream] ( https://docs.nats.io/nats-concepts/jetstream ) * by NATS*
@@ -120,14 +120,14 @@ docker compose -p bitloops-todo-app up -d
120120```
121121from the terminal inside the project ** in order to download and run the necessary containers** .
122122
123- Then the ReactJS front-end application will be visible at: ` http://localhost:3000 ` .
123+ Then the ReactJS front-end application will be visible at: ` http://localhost:4173 ` .
124124
125125<p align =" center " style =" margin-bottom : 0px !important ;" >
126126 <img width =" 400 " alt =" image " src =" https://github.com/bitloops/ddd-hexagonal-cqrs-es-eda/assets/1571105/4570473b-4e67-4050-9935-967acfe0b7c6 " alt =" Frontend application " align =" center " >
127127</p >
128128
129129<p align =" center " >
130- Frontend React JS application (new version using MVVM!)
130+ Frontend React JS application (new version using Vite and MVVM!)
131131</p >
132132
133133# IV. Design Process and Decisions
@@ -241,7 +241,7 @@ You may find tutorials on how to use **Postman** for REST and gRPC requests belo
241241* REST ([link](https://hevodata.com/learn/postman-rest-client/))
242242* gRPC ([link](https://learning.postman.com/docs/sending-requests/grpc/first-grpc-request/))
243243
244- To just test the app is app and running you can just invoke ` http://localhost:8082 ` URI with Post request as shown in the picture below:
244+ To just test the app is app and running you can just invoke ` http://localhost:8080 ` URI with Post request as shown in the picture below:
245245
246246< p align=" center" style=" margin-bottom: 0px !important;" >
247247 < img width=" 900" src=" https://storage.googleapis.com/bitloops-github-assets/app-testing-confirmation.png" alt=" App Running Confirmation" align=" center" >
@@ -258,7 +258,7 @@ A faster way to test the app works is to use **[cURL](https://curl.se/)**. In mo
258258
259259To just test the app is app and running you can just run the following command on terminal:
260260
261- ` ` ` curl http://localhost:8082 /` ` `
261+ ` ` ` curl http://localhost:8080 /` ` `
262262
263263The server should respond (in the terminal) with:
264264` ` ` {" statusCode" :404," message" :" Cannot GET /auth/register" ," error" :" Not Found" }` ` `
@@ -420,28 +420,76 @@ Below is a summary of all the software architecture and design patterns used in
420420
421421# # Table of Contents
422422
423- - [Software Architecture](# software-architecture)
424- - [Layered Architecture](# layered-architecture)
425- - [Separation of concerns benefits example](# separation-of-concerns-benefits-example)
426- - [Limitations of the classical layered architecture](# limitations-of-the-classical-layered-architecture)
427- - [Modern Layered Architectures](# modern-layered-architectures)
428- - [The Anti-pattern (beware)](# the-anti-pattern-beware)
429- - [Hexagonal Architecture (or Clean / Onion Architecture)](# hexagonal-architecture-or-clean--onion-architecture)
430- - [Ports And Adapters](# ports-and-adapters)
431- - [Driven Adapters vs Driving Adapters](# driven-adapters-vs-driving-adapters)
432- - [Inversion of Control](# inversion-of-control)
433- - [Domain Driven Design (DDD)](# domain-driven-design-ddd)
434- - [Key advantages of using DDD](# key-advantages-of-using-ddd)
435- - [Strategic and Tactical DDD](# strategic-and-tactical-ddd)
423+ - [ddd-hexagonal-cqrs-es-eda](# ddd-hexagonal-cqrs-es-eda)
424+ - [Table of Contents](# table-of-contents)
425+ - [I. Introduction](# i-introduction)
426+ - [Overview](# overview)
427+ - [Todo application business requirements](# todo-application-business-requirements)
428+ - [II. Technologies and Technical Features](# ii-technologies-and-technical-features)
429+ - [Technical Features](# technical-features)
430+ - [Technologies Used - Overview](# technologies-used---overview)
431+ - [III. Quick start - running the ToDo App](# iii-quick-start---running-the-todo-app)
432+ - [Prerequisites](# prerequisites)
433+ - [Running the app](# running-the-app)
434+ - [IV. Design Process and Decisions](# iv-design-process-and-decisions)
435+ - [Design Process - Event Storming](# design-process---event-storming)
436+ - [Design Decisions](# design-decisions)
437+ - [V. Running in development mode](# v-running-in-development-mode)
438+ - [A. Project Setup](# a-project-setup)
439+ - [Prerequisites](# prerequisites-1)
440+ - [Running the app](# running-the-app-1)
441+ - [B. Application Validation](# b-application-validation)
442+ - [Test the application is running](# test-the-application-is-running)
443+ - [Postman](# postman)
444+ - [cURL (only for initial testing)](# curl-only-for-initial-testing)
445+ - [Running the application tests](# running-the-application-tests)
446+ - [C. Understanding the project structure](# c-understanding-the-project-structure)
447+ - [API Folder](# api-folder)
448+ - [Bounded-Contexts Folder](# bounded-contexts-folder)
449+ - [Config Folder](# config-folder)
450+ - [Lib Folder](# lib-folder)
451+ - [Module Structure](# module-structure)
452+ - [Application Folder](# application-folder)
453+ - [Commands folder](# commands-folder)
454+ - [Queries folder](# queries-folder)
455+ - [Domain folder](# domain-folder)
456+ - [Contracts folder](# contracts-folder)
457+ - [Ports folder](# ports-folder)
458+ - [Tests folder](# tests-folder)
459+ - [proto folder](# proto-folder)
460+ - [VI. Conclusion](# vi-conclusion)
461+ - [❓ Questions](# -questions)
462+ - [📚 Theoretical Review](# -theoretical-review)
463+ - [Table of Contents](# table-of-contents-1)
464+ - [Software Architecture](# software-architecture)
465+ - [Layered Architecture](# layered-architecture)
466+ - [Separation of concerns benefits example](# separation-of-concerns-benefits-example)
467+ - [Limitations of the classical layered architecture](# limitations-of-the-classical-layered-architecture)
468+ - [Modern Layered Architectures](# modern-layered-architectures)
469+ - [The Anti-pattern (beware)](# the-anti-pattern-beware)
470+ - [Hexagonal Architecture (or Clean / Onion Architecture)](# hexagonal-architecture-or-clean--onion-architecture)
471+ - [Ports And Adapters](# ports-and-adapters)
472+ - [Driven Adapters vs Driving Adapters](# driven-adapters-vs-driving-adapters)
473+ - [Inversion of Control](# inversion-of-control)
474+ - [Domain Driven Design (DDD)](# domain-driven-design-ddd)
475+ - [Key advantages of using DDD](# key-advantages-of-using-ddd)
476+ - [Strategic and Tactical DDD](# strategic-and-tactical-ddd)
477+ - [Strategic: Building a Domain Model](# strategic-building-a-domain-model)
478+ - [Tactically: Implementing DDD](# tactically-implementing-ddd)
436479 - [DDD \& Hexagonal Architecture are Complementary](# ddd--hexagonal-architecture-are-complementary)
437- - [Behavior Driven Development (BDD)](# behavior-driven-development-bdd)
438- - [Event-Driven Architecture](# event-driven-architecture)
439- - [Command and Query Responsibility Segregation (CQRS)](# command-and-query-responsibility-segregation-cqrs)
440- - [Event Sourcing (ES)](# event-sourcing-es)
441- - [Eventual Consistency](# eventual-consistency)
442- - [Event Storming](# event-storming)
443- - [🚀 Bringing this all together! ](# -bringing-this-all-together)
444- - [🙌 Contributing](# -contributing)
480+ - [Behavior Driven Development (BDD)](# behavior-driven-development-bdd)
481+ - [Event-Driven Architecture](# event-driven-architecture)
482+ - [Command and Query Responsibility Segregation (CQRS)](# command-and-query-responsibility-segregation-cqrs)
483+ - [Event Sourcing (ES)](# event-sourcing-es)
484+ - [Eventual Consistency](# eventual-consistency)
485+ - [Event Storming](# event-storming)
486+ - [Big Picture Event Storming](# big-picture-event-storming)
487+ - [Process Level Event Storming](# process-level-event-storming)
488+ - [Design Level Event Storming](# design-level-event-storming)
489+ - [Event Storming Syntax](# event-storming-syntax)
490+ - [More on Event Storming](# more-on-event-storming)
491+ - [🚀 Bringing this all together! ](# -bringing-this-all-together)
492+ - [🙌 Contributing](# -contributing)
445493- [👨💻 Additional learning resources](# -additional-learning-resources)
446494 - [Articles](# articles)
447495 - [Blogs](# blogs)
0 commit comments