Daruma Backend

screenshot of Daruma Backend
express
nestjs

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

Overview

The Daruma shared expenses management system is an innovative project developed using the NestJS framework, showcasing a comprehensive approach to managing shared finances among groups. Designed during the final year at the University of Córdoba, it applies advanced software design principles, including Domain-Driven Design and Event Sourcing. The system is particularly useful for managing both one-time and recurring expenses, like subscriptions to Netflix or HBO, making it a versatile tool for friends or family looking to track their shared financial commitments.

This project stands out not just for its functionality, but also for its commitment to modern development practices, featuring solid testing protocols to ensure reliability. With its combination of powerful architecture and user-centric design, Daruma has the potential to simplify the often-complicated task of managing shared expenses.

Features

  • Event Modeling: Employs structured event modeling to accurately track and manage financial transactions between users.
  • Hexagonal Architecture: Follows a robust hexagonal architecture that aligns with Domain-Driven Design concepts, promoting flexibility and scalability.
  • Database Management: Utilizes CQRS and Event Sourcing patterns for efficient data handling and state management.
  • Read Model: Implements MongoDB for seamless data retrieval, offering quick access to shared expense information.
  • Write Model: Features an Event Store to track and record all financial transactions securely and reliably.
  • Unit and Integration Testing: Ensures software quality and functionality through comprehensive unit and integration tests using Jest.
  • End-to-End Testing: Incorporates Cypress for thorough end-to-end testing, enhancing overall user experience and reliability.
express
Express

Express.js is a simple Node.js framework for single, multi-page, and hybrid web applications.

nestjs
Nest

A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript.

eslint
Eslint

ESLint is a linter for JavaScript that analyzes code to detect and report on potential problems and errors, as well as enforce consistent code style and best practices, helping developers to write cleaner, more maintainable code.

typescript
Typescript

TypeScript is a superset of JavaScript, providing optional static typing, classes, interfaces, and other features that help developers write more maintainable and scalable code. TypeScript's static typing system can catch errors at compile-time, making it easier to build and maintain large applications.