algogrit / yaes-server

Expense Splitting Web App (similar to Splitwise)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

YAES (Yet Another Expense Splitter)

CircleCI

Expense Splitting Web App ( similar to Splitwise):

Primary purpose of the web app is to keep track of your expenses, payables and receivables to individuals.

Docs available at: https://yaes-api-docs.herokuapp.com/docs

Planned Features

  • Add users to your app. You will eventually split expense with them.
  • Add expense and it can be sharable among selected users.
  • Visibility of payables and receivables per user.
  • Visibility of total payables and receivables.
  • Visibility of all the individual expenses involving you at once place.
  • Settle up with any user.
  • Delete any expense.

Clean Architecture by Robert Martin

Clean Architecture

  • Dependency rule: Source code dependencies can only point inwards

Layers

  • Entities (entities)

    Defines all the Models in the application

  • Repository (users/repository, expenses/repository, payables/repository)

    Encapsulates the interaction with the database. This is the lowest layer in the application.

  • Services (users/service, expenses/service, payables/service)

    Orchestrates the interaction with repository and other services.

  • Transport (users/http, expenses/http, payables/http)

    Encapsulates the interaction with application over an http API

  • Binaries (cmd/server, cmd/migration)

    The code in cmd/server ties all the layers together, in order the start the app.

Dev

Setup

go get -u github.com/algogrit/yaes-server/cmd/yaes-server
cd $GOPATH/src/algogrit.com/yaes-server
make setup

Run Server

make run

Dev Run

make dev-setup
make dev-run

Docs

make setup-docs

make docs

Tests

DB_NAME="yaes-test" make setup-db # Only first time
make test

About

Expense Splitting Web App (similar to Splitwise)

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Go 79.1%Language:Shell 13.0%Language:Makefile 5.9%Language:Dockerfile 2.0%