in-fin-neat / in-fin-neat-core

Personal Finances tool
1 stars 0 forks source link

[Epic] Transform features into a service with proper API #6

Open diegotsutsumi opened 1 year ago

diegotsutsumi commented 1 year ago

As an organizer of my personal finances, I don't want to have to download the source-code locally to run commands, I want a web service serving API requests to get my data and reports.

Acceptance Criteria

diegotsutsumi commented 9 months ago

This is the next issue on the priority queue

diegotsutsumi commented 9 months ago

One first solution is to bring only the authentication endpoint to the cloud, enabling the user to authenticate through the mobile, and leave all commands in a local machine. These commands will stop authenticating and will ask a token to the cloud.

diegotsutsumi commented 9 months ago
  1. Deployment infrastructure
  2. Choose Python API technologies
  3. API endpoint design
diegotsutsumi commented 6 months ago

Design Decisions

  1. API specifications are described using Smithy in this package: https://github.com/in-fin-neat/in-fin-neat-api
  2. We're deploying at AWS using CDK
  3. We're going as serverless as possible, possibly the classic APIGW, Lambda, DynamoDB.

Decisions 2 and 3 are facilitating the cloud deployment, but also making it hard to move to another cloud in the future, which is part of this trade-off.

Roll out Plan

The high level final picture of the cloud deployment is described here https://github.com/in-fin-neat/in-fin-neat-core/pull/34. The order of cloud migration would be:

  1. UserAPI without CRUD: Access management at first, with temporary tokens
  2. AuthAPI: facilitating mobile authentication, and storing bank tokens in the cloud
  3. TransactionsAPI
  4. ReportAPI
  5. UserAPI CRUD