Welcome to RiseU Engineering 101! This course is designed to introduce you to the fundamentals of software engineering, covering a wide range of critical topics and best practices in the industry. By the end of this course, you will have hands-on experience with the tools and technologies that power modern software development and deployment.
- Government Related Topics
- Agile Team Collaboration
- Git Version Control
- Continuous Delivery and Deployment
- Testing and Quality Assurance
- Coding Patterns and Architecture
- Containerization
- Databases
- API Design and Networking
- Kubernetes (K8s)
Throughout this course, you will work on developing an LLM Personal Assistant. This project will serve as a practical application of the concepts and technologies you learn.
- Fork this repo.
- Navigate to the
curriculum
folder, where you will find markdown lesson instructions and content for each topic. - The curriculum is structured into sections, each in its own markdown file (e.g.,
chapter 1. Git
,chapter 2. Agile Collaboration
, etc.). Each section builds upon the previous one.
- Start by creating a branch for the current section.
- Initialize your project with Git, including setting up git hooks, repository templates,
.gitignore
files, SSH keys, and Git profile configuration. - Implement security controls for your forked repository and document your branching and naming conventions.
- Your starting point includes an initialized Vite client app and a NestJS backend app. Your tasks will involve containerizing the application, creating Docker and Docker Compose files.
- Begin Continuous Integration/Continuous Deployment (CI/CD) work, focusing on scanning, building, and testing. This may require setting up environments in AWS, GCP, Azure, or Minikube locally.
- Refactor the frontend of the application, introducing concepts of the 12-factor app and adjusting the starter app to adhere to these principles.
- Address code structure by creating data models, services, classes, and view models that follow SOLID principles. Consolidate and remove duplicate code as necessary.
- Pause to discuss different architectures, including Monolith, Microservice, Event-Driven Architectures, and API Gateways.
- Choose and implement a database system, evaluating SQL and document-based options.
- Develop APIs for communication between the client and backend service, along with any necessary external APIs.
- Conclude with the deployment phase of CI/CD, potentially utilizing Minikube for a hands-on experience or a simple cloud-based solution for a more theoretical approach, skipping real CI/CD deployment automation.
To get started with the course, fork this repository and follow the setup instructions in the curriculum
folder. Happy coding!
This format offers a clear, structured overview of what students can expect from the course, the project they'll be working on, and step-by-step instructions on how to proceed.