This project is a full-stack web application fully containerized that allows user to emulates a Kanban board using the next techstack
-
Backend: Using Fastapi basic setup we build a Graphql server app with Graphene. The server persists data over DynamoDb running locally in a container.
-
Frontend: SPA wiht React and Typescript using with Vite. The graphql interface is handle with Apollo Client. The css is handle by Tailwind. Unit test is implemented with Vitest and React Testing Library.
The whole developer enviroment runs on the next containers:
- server - Runs the graphql backend in watch mode
- ui - Runs vite developer enviroment in watch mode
- dynamodb - Runs DynamoDb locally
- awscli - Runs a container to use aws-cli to run commands agains dynamodb
By using a Make file most common developer operations are stored to expose a easy to use contact surface - most of the operations are executed inside containers - with the following commands:
-
setup - Builds the docker images and install local depenencies to have intellisence on Vscode
-
up - Starts all the container
-
down - Turns off and remove containers
-
aws-cli - Shells into the aws-cli container to execute aws commands
-
create-table - Creates a table on DynamoDb
-
list-tables - Lists all tables created on DynamoDb
-
list-table-items - Lists all items for a table with queried name
-
delete-local-data - Deletes local volume where DynamoDb Container stores data
-
format - Runs Black on Backeend Python code and Runs Prettier on Frontend Typescript code
-
unit-test-dev-watch - Runs Frontend Unit Test and starts a watch state over code
-
unit-test-ci - Runs Frontend Unit Test ones
-
open-grapiql - Opens Graphene Graphql Client app