/daruma-backend

🎎 Shared Expense Manager (Backend) - NestJS+DDD+CQRS+Event Sourcing 🎎

Primary LanguageTypeScriptOtherNOASSERTION


Daruma Logo
🎎 Daruma - Backend 🎎

Shared expenses management system built on top of NestJS and Flutter.

Table of Contents

About the project

This repository holds my final year project during my time at the University of CΓ³rdoba titled "Daruma, shared expenses management system" built with NestJS framework.

The purpose of this project is to learn new technologies like NestJS and Flutter and apply concepts about Software Desing like Domain-Driven-Desing, CQRS, Event Sourcing, Clean code, unit, integration and End-to-End testing, etc.

Daruma allows users to easily manage shared expenses made in a group, including the management of recurring expenses like Netflix, HBO, etc...

Key Features

  • Design: Event modeling.
  • Arquitecture: Hexagonal Arquitecture following Domain-Driven-Design concepts.
  • Database management: CQRS and Event Sourcing patterns.
    • Read model: MongoDB.
    • Write model: Event Store.
  • Unit and integration testing: Jest.
  • End-to-End testing: Cypress.

Install, build and run!

To clone and run this application, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line:

# Clone this repository
$ git clone git@github.com:AdrianLopezGue/daruma-backend.git

# Go into the repository
$ cd daruma-backend

# Install dependencies
$ npm install

# Start docker containers (MongoDB and Event Store)
$ docker-compose up  -d

# Run the server app
$ npm run start:prod

Note: If you're using Linux Bash for Windows, see this guide or use node from the command prompt.

Built With

This software uses the following packages:

Related

Daruma - Frontend - Frontend part of Daruma.

License

GNU Affero General Public License v3 (AGPL)

Contact

GitHub - @AdrianLopezGue LinkedIn - AdriΓ‘n LΓ³pez Guerrero