-
Backend Fundamentals
- Backend Fundamentals
- Client-server architecture
- HTTP / HTTPS
- Request / response lifecycle
- URLs, routes and endpoints
- HTTP methods
- Status codes
- Headers
- Query parameters
- Path parameters
- Request body
- JSON
- Content types
- REST API principles
- API versioning
- Idempotency
- Stateless vs stateful systems
- WebSockets for real-time applications
-
Python Backend Fundamentals
- Python for backend development
- Virtual environments
- pip / package management
- Project structure
- Configuration and environment variables
- Logging
- Exceptions and error handling
- Type hints
- Pydantic
- Dependency management
- Application settings
-
FastAPI
- FastAPI project structure
- Routes and path operations
- Request validation
- Pydantic models
- Response models
- Dependency injection
- Routers
- Middleware
- Exception handlers
- Authentication
- Authorization
- OpenAPI / Swagger
- API documentation
- File uploads
- Background tasks
- Async endpoints
- Sync endpoints
- ASGI
- Uvicorn
-
Django
- Django project structure
- Apps
- URLs
- Views
- Request / response
- Templates
- Middleware
- Django settings
- Static and media files
- Management commands
- Django Admin
- Authentication
- Permissions
- Sessions
- Django REST Framework
- Serializers
- API views
- ViewSets
- Routers
- API authentication
- Permissions
- Pagination
- Filtering
- API documentation
-
Sync & Async Programming
- Synchronous execution
- Asynchronous execution
- Blocking operations
- Non-blocking operations
- Event loop
- async / await
- Coroutines
- Tasks
- Concurrency vs parallelism
- I/O-bound operations
- CPU-bound operations
- Threads
- Processes
- Async database access
- Async HTTP requests
- When async actually helps
- Common async mistakes
-
Databases Fundamentals
- Relational databases
- Tables
- Rows and columns
- Primary keys
- Foreign keys
- Relationships
- One-to-one
- One-to-many
- Many-to-many
- Constraints
- Indexes
- Transactions
- ACID
- Normalization
- SQL basics
- SELECT / INSERT / UPDATE / DELETE
- JOINs
- Aggregations
- Transactions and isolation
-
SQLite
- SQLite architecture
- Local development databases
- SQLite limitations
- Database files
- Migrations
- When SQLite is appropriate
- When to move to PostgreSQL
-
PostgreSQL
- PostgreSQL architecture
- Schemas
- Roles and permissions
- Data types
- Indexes
- Constraints
- Transactions
- PostgreSQL-specific features
- Query optimization
- Connection management
- Production databases
-
ORM
- Object-relational mapping
- Models
- Fields
- Relationships
- Queries
- Querysets
- Lazy evaluation
- Migrations
- Transactions
- N+1 query problem
- Eager loading
- Raw SQL
- ORM vs SQL
- Django ORM
- SQLAlchemy
- FastAPI + SQLAlchemy
- Database sessions
-
Users & Authentication
- User accounts
- Registration
- Login / logout
- Password hashing
- Password reset
- Sessions
- Cookies
- Secure cookies
- HTTP-only cookies
- SameSite
- CSRF
- JWT
- Access tokens
- Refresh tokens
- Authentication vs authorization
- Roles
- Permissions
- OAuth
- Google / GitHub login
- Account security
-
HTTP & Server Architecture
- Web server
- Application server
- Reverse proxy
- Middleware
- Request lifecycle
- Routing
- Authentication middleware
- CORS
- Rate limiting
- Compression
- Static files
- Error handling
- Global exception handling
- Logging
- Monitoring
- Health checks
- Graceful shutdown
-
API Development
- REST APIs
- Resource-oriented design
- CRUD
- Request validation
- Response serialization
- Error responses
- Pagination
- Filtering
- Sorting
- Search
- File uploads
- Webhooks
- API authentication
- API versioning
- OpenAPI
- Swagger
- Postman / Insomnia
- API testing
-
Background Tasks
- Why background processing exists
- Long-running operations
- Scheduled tasks
- Email sending
- File processing
- Notifications
- Data processing
- Task queues
- Workers
- Retries
- Failed jobs
- Job status
- Scheduling
-
Redis
- In-memory data storage
- Key-value model
- Caching
- TTL
- Sessions
- Rate limiting
- Pub/Sub
- Redis as a queue
- Redis data structures
- Cache invalidation
- Redis in production
-
Message Queues
- Message brokers
- Producer / consumer model
- Queues
- Messages
- Workers
- Acknowledgements
- Retries
- Dead-letter queues
- RabbitMQ
- Redis-based queues
- Celery
- Task queues vs message brokers
- When to use each approach
-
Workers
- Worker processes
- Celery
- Celery workers
- Celery Beat
- Redis / RabbitMQ as brokers
- Background jobs
- Scheduled jobs
- Retries
- Monitoring workers
- Worker scaling
-
Testing Backend Applications
- Unit tests
- Integration tests
- API tests
- Database tests
- Authentication tests
- Mocking
- Fixtures
- Test databases
- Pytest
- Django Test Framework
- FastAPI testing
- Test-driven development basics
-
Docker
- Containers
- Images
- Dockerfile
- Docker Compose
- Environment variables
- Volumes
- Networks
- Port mapping
- Multi-container applications
- Backend + PostgreSQL
- Backend + Redis
- Backend + worker
- Production containers
- Docker image optimization
-
Linux & Server Fundamentals
- Linux filesystem
- Processes
- Users and permissions
- SSH
- Environment variables
- Ports
- Processes and services
- Logs
- System resources
- Networking basics
- DNS
- TCP/IP basics
- HTTP/HTTPS
- Firewall basics
- Reverse proxies
- Nginx
- Systemd
- Cron
-
Deployment Fundamentals
- Development vs production
- Environment configuration
- Secrets
- Production databases
- Build process
- Application startup
- Process management
- Logs
- Health checks
- Domain names
- DNS
- SSL/TLS
- HTTPS
- Reverse proxy
- Backups
- Database migrations
- Deployment strategies
- Zero-downtime deployment
-
Railway
- Railway projects
- Services
- PostgreSQL
- Environment variables
- Deployments
- GitHub integration
- Logs
- Domains
- Custom domains
- Service-to-service communication
- Redis
- Volumes
- Deployment configuration
- Production debugging
-
Cloud Deployment
- Cloud computing concepts
- Virtual machines
- Managed databases
- Object storage
- Networking
- Load balancing
- Containers
- Serverless concepts
- Environment variables
- Secrets
- Monitoring
-
AWS
- AWS fundamentals
- IAM
- EC2
- RDS
- S3
- CloudFront
- Route 53
- Load Balancer
- CloudWatch
- VPC basics
- Security groups
- ECS / containers
- Lambda overview
- Managed services
- Cost awareness
-
Alternative Cloud Platforms
- Railway
- Render
- Fly.io
- DigitalOcean
- Hetzner
- AWS
- Cloudflare
- Vercel
- Choosing the right platform
- Managed vs self-managed infrastructure
-
CI/CD
- Git
- GitHub
- GitHub Actions
- Automated testing
- Build pipelines
- Deployment pipelines
- Environment-specific deployments
- Secrets
- Rollbacks
- Database migrations during deployment
- Continuous integration
- Continuous deployment
-
Security
- OWASP fundamentals
- SQL injection
- XSS
- CSRF
- Authentication security
- Authorization
- Password security
- Secrets management
- CORS
- Rate limiting
- Input validation
- File upload security
- Dependency vulnerabilities
- HTTPS
- Security headers
- Least privilege
- Secure database access
-
Caching & Performance
- Why applications become slow
- Database bottlenecks
- Query optimization
- Indexes
- N+1 queries
- Application caching
- Redis caching
- HTTP caching
- CDN
- Connection pooling
- Async I/O
- Background jobs
- Load testing
- Profiling
-
Microservices
- Monolith architecture
- Modular monolith
- Microservice architecture
- Service boundaries
- Service-to-service communication
- REST between services
- Internal APIs
- Message queues
- Event-driven architecture
- Service discovery
- Independent deployment
- Independent databases
- Distributed transactions
- Eventual consistency
- Failure between services
- Observability
- When NOT to use microservices
-
Architecture & Design
- MVC
- Layered architecture
- Service layer
- Repository pattern
- Dependency injection
- Separation of concerns
- Domain logic
- Application logic
- Infrastructure layer
- SOLID principles
- Design patterns
- Clean Architecture overview
- Modular architecture
- Monolith vs microservices
-
Laravel
- PHP backend fundamentals
- Laravel project structure
- Routing
- Controllers
- Middleware
- Requests / responses
- Validation
- Blade
- Authentication
- Authorization
- Eloquent ORM
- Migrations
- Relationships
- Query Builder
- API development
- Laravel Sanctum
- Queues
- Jobs
- Events
- Listeners
- Scheduling
- Cache
- Redis
- Laravel Artisan
- Laravel deployment
- Laravel vs Django
- Laravel vs FastAPI
-
Production Project
- Design backend architecture
- PostgreSQL database
- Authentication
- REST API
- Django or FastAPI backend
- Redis
- Background worker
- Message queue
- Docker
- Automated tests
- GitHub Actions
- Production deployment
- Domain + HTTPS
- Logging
- Monitoring
- Backups
- Documentation
- Production debugging
- Performance optimization