- Relational Databases - Creating, Altering, Dropping Tables - Primary and Secondary Keys - Adding Relationships Between Two Tables using Foreign Key - UNIQUE, DEFAULT, NOT NULL constraints - Inserting, Updating, Deleting Rows in a Table - Fetching data with SELECT queries - Filtering and Sorting - Aggregations - Optimizations using * - Combining Data from Two Different Tables using JOINs - Design a Database Schema for a Real-World Use-Case - Every small thing needs to be captured. - When to create a new column vs a new table? - Handling Scale using Indexes - Developing APIs + Writing Tests - CRUD operations on the database - Using ORMs like Sequelize for abstraction - Uploading Files - Handling errors - in input parameters - in processing data - Returning Status Codes - with error messages - API Naming Conventions - REST vs GraphQL APIs - Unit Testing - Integration Testing - e2e Testing - Refactor Ruthlessly towards Cleaner Code - Access Management - Basic HTTP Authentication - Authentication vs Authorization - OAuth 2.0 - JSON Web Tokens - Deployment Pipeline - Setting up a project at professional level for a team - Continuous Integration - Pre Commit Hooks - Linting - commitlint - Post Commit Hooks - Testing - Continuous Delivery - Approval Workflows - Manual Approval - Rollback Option? - Continuous Deployment - Staging/QA Environments - Handling Scale - Logging - Calculating Storage Required for 1000s of requests - Caching - Code Maintainability - Automations in MySQL using Triggers - API Versioning - Visual Testing - Distributed Servers