pet-bank

module
v0.0.0-...-e6e2e8d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2023 License: GPL-3.0

README

Description

Key skills practiced

Clean Architecture; REST API (inc. OpenAPI, API design guide); Unit and Integration tests; Go Style Best Practices (inc. Google Go Style, Standard Go Project Layout); CI/CD (Run tests, linters and deploy the containerized app to Amazon Elastic Container Registry (ECR))

Features

This bank service provides APIs for the frontend to do the following things:

  1. Create and login users
  2. Create, get and list users own accounts of different currencies
  3. Transfer money between two accounts with recording all balance changes in account entries

Authorization rules

  1. Users can create an account only for themselves
  2. Users can get accounts that only they own
  3. Users can list accounts that only belong to them
  4. Users can send money only from their own account
  5. Users can only refresh their own access token

Data model

OpenAPI Specification

https://go-petr.github.io/pet-bank/

How to run

Locally

docker-compose -f deployments/docker-compose.yaml up

Directories

Path Synopsis
cmd
Package bankapi provides the API to mange users, accounts and money transfers.
Package bankapi provides the API to mange users, accounts and money transfers.
httpserver
Package httpserver manages server creation and api routing.
Package httpserver manages server creation and api routing.
internal
accountdelivery
Package accountdelivery manages delivery layer of accounts.
Package accountdelivery manages delivery layer of accounts.
accountrepo
Package accountrepo manages repository layer of accounts.
Package accountrepo manages repository layer of accounts.
accountservice
Package accountservice manages business logic layer of accounts.
Package accountservice manages business logic layer of accounts.
domain
Package domain provides defenitions of all entities.
Package domain provides defenitions of all entities.
entryrepo
Package entryrepo manages repository layer of entries.
Package entryrepo manages repository layer of entries.
integrationtest
Package integrationtest provides db helpers used in integration tests.
Package integrationtest provides db helpers used in integration tests.
integrationtest/helpers
Package helpers provides shared test helpers.
Package helpers provides shared test helpers.
middleware
Package middleware implements common middlewares for http handlers.
Package middleware implements common middlewares for http handlers.
sessiondelivery
Package sessiondelivery manages delivery layer of sessions.
Package sessiondelivery manages delivery layer of sessions.
sessionrepo
Package sessionrepo manages repository layer of entries.
Package sessionrepo manages repository layer of entries.
sessionservice
Package sessionservice manages business logic layer of sessions.
Package sessionservice manages business logic layer of sessions.
transferdelivery
Package transferdelivery manages delivery layer of transfers.
Package transferdelivery manages delivery layer of transfers.
transferrepo
Package transferrepo manages repository layer of transfers.
Package transferrepo manages repository layer of transfers.
transferservice
Package transferservice manages business logic layer of transfers.
Package transferservice manages business logic layer of transfers.
userdelivery
Package userdelivery manages delivery layer of users.
Package userdelivery manages delivery layer of users.
userrepo
Package userrepo manages repository layer of users.
Package userrepo manages repository layer of users.
userservice
Package userservice manages business logic layer of users.
Package userservice manages business logic layer of users.
pkg
configpkg
Package configpkg provides parsing functionality for environment variables.
Package configpkg provides parsing functionality for environment variables.
currencypkg
Package currencypkg provides common currency related functionality for apps.
Package currencypkg provides common currency related functionality for apps.
dbpkg
Package dbpkg provides helpers to make db initialization and testing easier.
Package dbpkg provides helpers to make db initialization and testing easier.
errorspkg
Package errorspkg provides common app errors.
Package errorspkg provides common app errors.
passpkg
Package passpkg helps hash and verify passwords.
Package passpkg helps hash and verify passwords.
randompkg
Package randompkg provides functionality gor generating random applications common items.
Package randompkg provides functionality gor generating random applications common items.
tokenpkg
Package tokenpkg implements common token makers.
Package tokenpkg implements common token makers.
web
Package web defines common components for a web application.
Package web defines common components for a web application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL