Objective
This is the first delivery in a series of interconnected computer projects.
In these projects/posts, I will attempt to develop a complete eCommerce application (like Amazon’s) within a year.
The goal of these projects is to select, learn, and integrate the necessary technologies into a software factory.
With this software factory, which I am building in practice, I am developing a realistic and operational application prototype.
Development must be carried out using automated and reusable CI/CD pipelines.
The resulting eCommerce application will eventually run in a Kubernetes environment and also be publicly accessible.
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, 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
