Objective
This is the first in a series of interconnected computer projects spanning a year.
In these projects, I will attempt to develop a complete and realistic eCommerce application “demo-shop”.
At the same time, I also intend to build a software factory in the form of automated CI/CD pipelines,
for which the necessary technologies are being selected, learned, and integrated.
The resulting application will be deployed in a Kubernetes environment and made publicly accessible.
The application and the infrastructure used will also be equipped with monitoring and a notification system for reporting issues.
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, Htmx, AlpineJs, Tailwind CSS, DaisyUI, SQLx, and MariaDB 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 “local-devappserver” is required for each developer)
This project therefore ensures the implementation of the following parts of the pipelines:
Result
