Git Product home page Git Product logo

expense-tracker's Introduction

Expense Tracker

License: MIT example workflow

Description

Expense Tracker is a .NET WebAPI project built on Clean Architecture and Domain-Driven Design (DDD) principles. It provides a platform for managing expenses, allowing users to track their spending efficiently.

Introduction

Expense Tracker is built on top of DDD principles. Thus, it is divided into bounded-contexts, aggregates, entities and value objects.

Currently, only one bounded context is explored, which covers the end-user modeling and use cases. It can be modeled as:

Expense Tracker C4 diagram

Currently, it covers:

  • Expense: creating new expenses to track spending.
  • Budgets: create budget to track maximum spendings, being able to attach multiple types of alerts to this budgets. Expenses will automatically be included into every active Budget.
  • Groups: track shared spendings with multiple dividing options like percentages, equally and multi-currency.

Technologies

  • .NET 8.0
  • EntityFramework 8.0
  • CQRS:
    • MediatR
    • FluentValidations
    • Mapster
  • Testing
    • xUnit
    • FluentAssertions
    • Moq
    • AutoMock
  • CI/CD:
    • Docker
    • GitHub Actions

Installation

To set up the project, make sure you have .NET 8.0 SDK installed. Also, install Makefile by:

# Windows
choco install make

# macOS
brew install make

# Linux
apt install make

Then, run the following commands:

make install

Usage

Expense Tracker can be easily set up using Docker Compose. Follow these steps:

  1. Make sure you have Docker installed on your system.

  2. In the root directory of the project, run the following command to build and start the containers:

make start

Now you can access the OpenAPI Specification on http://localhost:5001/swagger

You can take a look at all the available commands by running make or make help at the root directory.

Contributing

This project uses conventional-commits as contributing standard. It enables ease of tracking changes as well as automatic SemVer and CHANGELOG.md generation. For all this purposes, it is using Versionize .NET Tool.

To enable automatic CHANGELOG and versioning generation, follow the following format:

<type>(<scope>): <message>

Where <type> can be one of the following:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation changes
  • style: Code style changes (e.g., formatting)
  • refactor: Code refactoring
  • test: Adding or modifying tests
  • chore: Routine tasks, maintenance, etc.

Type any breaking change by adding a ! after (<scope>) and before semicolon:

<type>(<scope>)!: <message>

Author:

expense-tracker's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.