Queue Controller
Queue Controller is a serverless administration panel for managing business data hosted in a Redis database. I developed it during an internship at Pagination s.r.l. as part of my Bachelor's Thesis.
The REST API for this project is composed of 12 serverless AWS Lambda functions written in Go linked to AWS API Gateway. The Go data structures used to communicate between services or internal packages are generated from Protobuf definitions, according to Pagination s.r.l. requirements. I've used SASS, React.js, Redux, and TypeScript for the web UI. I've made extensive use of React Hooks, which were a novelty in 2019.
The most interesting part of the project is the novel iteration layer I've built to abstract reads from multiple Redis data structures, which also simplified the definition of a client-side caching mechanism.
The project follows the 12-Factor-App methodology and the API is formally described by an Open API 3 schema file. The service configurations are read from the environment, whereas sensible information (such as passwords) is read from AWS Secrets Manager and later cached until the Lambda handler gets disposed of. I've used the Infrastructure-as-a-Code tool Terraform for deploying the project on AWS with just one command.
Queue Controller is widely tested via unit tests and integration tests executed in Docker containers run by Jenkins. In about three months of work, I completed all the features required by the company plus some extra, unplanned features. Pagination s.r.l. CEO Luca Reginato offered me a full-time position as Cloud Engineer after completing the project. However, I decided to turn the offer down to continue my studies.
Unfortunately, I cannot disclose the source code of this project as it is under NDA.