Repositories for the "Tech Challenge" group project (2023 SOAT1 Group 63) from FIAP Pós Tech's Software Architecture course.
The project goal was to study software architecture related topics by creating a self-service and kitchen managment service for a fictional restaurant.
The client may identifiy itself; Checkout an order; Confirm it; Pay it via an external payment service, and the order could be then processed by the kitchen employees.
The project and the course itself are divided in several 'phases' each one covering some software architecture-related topics. Some of these topics required code rewriting, refactoring and repository splitting.
Therefore there are releases in each repo for each phase they were relevant and what topics were covered in them.
Details and diagrams of each phase
- Monolithic Spring Boot application with PostgreSQL
- Hexagonal (Ports and Adapters) architecture
- Domain Driver Design brainstorming
Dockerfile
anddocker-compose.yml
files created
- Replaced
docker-compose.yml
with Kubernetes config - Project rewritten using Clean architecture
- Refactored project for use within AWS
- Created Lambda identification flow (JWT auth)
- Created initial Terraform files, for use with Terraform Cloud
- Set up Github Actions workflows
- Maven build and semver bump
- Push/Deploy to Docker Hub and AWS
- Terraform Cloud remote plan, apply and destroy
- Backend was split into 4 microservices
- Two of them now use DynamoDB instead of PostgreSQL
- Sonarcloud set up. For Maven projects CI-based analysis was used (for Java code coverage via Jacoco)
- Unit and behavior tests were created using Cucumber and JUnit.
- Terraform files modified for use with Vocareum Labs via AWS Academy, provided by the course.
- Use SAGA pattern in payment flow
- Using AWS SQS
- Create OWASP ZAP and LGPD RIPD reports.
The repos in this organization mostly follow semver, but the major version corresponds to the project's target phase at the time of commit. E.g: v4.X.X -> Phase 4
In the course there was a Hackaton, which had a similar but smaller project.
The goal was to develop a system to manage employee's time cards. It could generate reports and send emails, among other requirements. The repositories for this project can also be found in this organization.