Skip to content

Latest commit

 

History

History
252 lines (174 loc) · 4.29 KB

File metadata and controls

252 lines (174 loc) · 4.29 KB

Backend Engineering Lab Roadmap

This roadmap presents the learning journey and technical progression covered by this repository.

The laboratories are designed to simulate real-world backend engineering scenarios using modern Python technologies, following software engineering best practices and progressively increasing in complexity.


Learning Roadmap

Stage 1 — FastAPI Fundamentals

  • LAB 01 — FastAPI Basics
    • Create the first REST API
    • Interactive Swagger UI
    • Request validation with Pydantic
    • Health check endpoint
    • Version endpoint
    • Basic project structure

Stage 2 — PostgreSQL Fundamentals

  • LAB 02 — PostgreSQL with DBeaver
    • PostgreSQL database
    • Database creation
    • Tables
    • Relationships
    • SQL queries
    • Database inspection using DBeaver

Stage 3 — SQLAlchemy ORM

  • LAB 03 — SQLAlchemy ORM
    • ORM models
    • Sessions
    • CRUD operations
    • Repository pattern
    • Database abstraction

Stage 4 — REST API Development

  • LAB 04 — CRUD API
    • Create
    • Read
    • Update
    • Delete
    • Pagination
    • Filtering
    • Validation
    • Exception handling

Stage 5 — Authentication & Authorization

  • LAB 05 — JWT Authentication
    • User registration
    • Login
    • Password hashing
    • JWT tokens
    • Protected endpoints
    • Basic role-based authorization

Stage 6 — Database Versioning

  • LAB 06 — Alembic
    • Migration creation
    • Upgrade
    • Downgrade
    • Schema versioning
    • Database evolution

Stage 7 — Containerization

  • LAB 07 — Docker
    • Dockerfile
    • Image creation
    • Container execution
    • Environment variables
    • Production-ready images

Stage 8 — Multi-container Applications

  • LAB 08 — Docker Compose
    • API container
    • PostgreSQL container
    • Persistent volumes
    • Networks
    • Service orchestration

Stage 9 — Automated Testing

  • LAB 09 — Automated Testing with Pytest
    • Unit tests
    • Integration tests
    • Fixtures
    • Mocking
    • Code coverage
    • Test organization

Stage 10 — Continuous Integration

  • LAB 10 — GitHub Actions CI
    • Automated testing
    • Linting
    • Build validation
    • Pull Request validation
    • Continuous Integration workflow

Stage 11 — Performance Testing

  • LAB 11 — API Performance Testing
    • Load testing
    • Stress testing
    • Response time analysis
    • Bottleneck identification
    • Performance metrics

Stage 12 — AWS Deployment

  • LAB 12 — Production Deployment on AWS
    • EC2 deployment
    • Docker deployment
    • Nginx Reverse Proxy
    • HTTPS configuration
    • Production environment
    • Logging
    • Basic monitoring

Technology Stack

Programming Language

  • Python

Backend Framework

  • FastAPI

Database

  • PostgreSQL

Database Tools

  • DBeaver

ORM

  • SQLAlchemy

Database Versioning

  • Alembic

Containers

  • Docker
  • Docker Compose

Testing

  • Pytest

Continuous Integration

  • GitHub Actions

Cloud

  • AWS

Web Server

  • Nginx

API Standards

  • REST APIs
  • OpenAPI
  • Swagger UI

Data Validation

  • Pydantic

Version Control

  • Git
  • GitHub

Repository Progress

Stage Status
FastAPI Fundamentals ⏳ Planned
PostgreSQL Fundamentals ⏳ Planned
SQLAlchemy ORM ⏳ Planned
CRUD API ⏳ Planned
Authentication ⏳ Planned
Alembic ⏳ Planned
Docker ⏳ Planned
Docker Compose ⏳ Planned
Automated Testing ⏳ Planned
GitHub Actions CI ⏳ Planned
Performance Testing ⏳ Planned
AWS Deployment ⏳ Planned

Repository Goals

This repository aims to build a production-inspired backend engineering portfolio focused on modern Python backend development.

Throughout the laboratories, the following concepts are progressively introduced:

  • REST API development
  • Relational database design
  • ORM best practices
  • Authentication and authorization
  • Database migrations
  • Containerization
  • Automated testing
  • Continuous Integration (CI)
  • Cloud deployment
  • Production-ready application architecture

The primary objective is to provide practical experience while building a portfolio aligned with the technologies and workflows commonly used by backend engineering teams.