Objective
In this year’s computer projects, I’ll be developing a complete eCommerce application (like Amazon’s).
The goal of these projects is to select, learn, and use the necessary technologies in practice,
then demonstrate the results as a realistic and operational application example.
The development should be done using automated and reusable CI/CD pipelines.
I will ultimately run the eCommerce application in a Kubernetes environment and make it publicly available.
I will then equip the entire application and its infrastructure with monitoring and a notification system for problem reporting.
Application development and operations will be automated as much as possible and made reusable for other future applications.
In this first delivery, I want to achieve the following:
- Design a real-world eCommerce application,
and create the corresponding application documentation with diagrams - Create schema migration and (test) data migration scripts for the database
- Develop the core of the full-stack web application with the following stack:
Go, Templ, AlpineJs, Tailwind CSS, DaisyUI, SQLc, and LibSQL/SQLite database - Provide the application with external configuration and logging
- Develop a web service that uses REST (vs. gRPC, GraphQL) as the API protocol
(synchronously invoked external dependencies) - Create functional unit tests
(no application runtime environment required) - Create the first, rapid build part of a CI pipeline (Continuous Integration),
with compile, unit tests, code coverage checks, and static code analysis checks
(“secret scanner”, SCA = “software composition analysis”, and SAST = “static application security testing”)
and “Software Bill of Materials” (SBOM) generation - This rapid build portion of a CI pipeline should be executed automatically
(possibly after review by other developers)
before a feature branch is merged into the master branch of the source code repository;
even better, these static code analysis checks can also be performed locally before each commit - Manual testing by individual developers
(a separate application runtime environment “devappserver” is required for each developer)
This project therefore ensures the implementation of the following parts of the pipelines:
Result
