small-business-cc

Public Architecture Documents

We will use Ravenbill, LLC and the domain ravenbill.com for the project.

C4 Architecture

We will be visualizing the application architecture using C4 model

Context diagram

diagram Separate file: Context diagram

Containers diagram

diagram Separate file Containers diagram

Components diagram

  if you’re working with more granular microservices, the component
  diagrams are likely wasted effort, as the majority of the useful information
  can be understood from the container diagram, with the microservice itself
  containing minimum meaningful components.

                  Ashley Peacock
                  "Creating software diagrams with modern diagramming techniques"

PeriodicTasks components diagram

TBD

Code

Code changes so frequently that, if created manually, the code diagram would likely be
out of date within days or hours of it being written.

                                    Ashley Peacock
                                    "Creating software diagrams with modern diagramming techniques"

I will later include complex parts of code (Approval logic, Clearing logic, Fraught Protection, and some of the Periodic Tasks).

Database Schema

We will try to follow the process described in “Database Design for Mere Mortals” by Michael J Hernandez, 4th edition. Instead of interviews we will use C4 architectural diagrams and Mastercard transaction processing rules.

Database mission statement

The purpose of the Ravenbill Database is to maintain data for the full credit line lifecycle.

Database mission objectives

Pipeline, Deployment, and Tools

The AWS serverless architecture will be used for backend implementation. Lambda’s, Queues and Notification services will be used as much as possible. Data will be kept in Dynamo DB and S3.

The Dynamo DB keeps the original data, Graph DB keeps a subset for the approval process and fraught protection. S3 keeps archives, statements, images, customization styles etc. I might find a usage for AWS RDS PostgreSQL (?).

React and AWS Amplify are used for Web. Authentication and Authorization are Cognito (we use a Cognito hook to embed some info into the JWT token). We use SNS to send notifications back to the user.

I will try to find a way to convert the React web app to an Android/IOs App.

AWS CDK v2 will be used to describe and for the stack - including the Amplify app and hosting.

The backend will follow DDD (including tactical patterns - Entities, Value Objects, Aggregates, Services, Domain Events). Most of the code will be in the Golang, some may be in Python.

I will be using AWS API Gateway to connect and authenticate calls to lambdas. I might come up with GraphQL, but currently, I do not possess the knowledge to build client parts.

Code will be kept in the github. I may find usage for github actions.