Design Choices
Some of the biggest design choices I made were about leaning into existing frameworks, instead of re-inventing the wheel:
- Defining the entire stack in a series of cloudformation templates
- Defining the possible back-end operations upfront (and making methods work for any type of input eg storing a new article, or updating a quiz question) so I didn't have to keep redeploying lambdas
- Using existing design frameworks (like @mui) instead of doing the CSS myself
Why did I choose to make the entire stack a series of cloudformation templates?
Because the code-first (okay...YML first) approach forced me to visualize how everything fit together, not just how I wanted my API designed, but how I wanted the authorization (via Cognito) to allow access only to specific APIs. While this is by no means a revolutionary design choice it did force me to plan the project up-front- which means that after writing the YML I had a clear idea of what operations the front end would support and how the backend looked.
Useful tips:
To Do:
Done: