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...
- 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.
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.
This software uses the following packages:
Daruma - Frontend - Frontend part of Daruma.
GNU Affero General Public License v3 (AGPL)
GitHub - @AdrianLopezGue LinkedIn - Adrián López Guerrero