- Day 1
- Day 2
- Day 3
- Day 4
- Day 5
- Day 6
- Day 7
- Day 8
- Day 9
- Day 10
- Day 11
- Day 12
- Day 13
- Day 14
- Day 15
- Day 16
- Day 17
- Day 18
- Day 19
- Day 20
- Day 21
- Day 22
- Day 23
- Day 24
- Day 25
- Day 26
- Day 27
- Day 28
- Day 29
- Day 30
- Day 31
- Day 32
- Day 33
- Day 34
- Day 35
- Day 36
- Day 37
- Day 38
- Day 39
- Day 40
- Day 41
- Day 42
- Day 43
- Day 44
- Day 45
- Day 46
- Day 47
- Day 48
- Day 49
- Day 50
- Day 51
- Day 52
- Day 53
- Day 54
- Day 55
- Day 56
- Day 57
- Day 58
- Day 59
- Day 60
- Day 61
- Day 62
- Day 63
- Day 64
- Day 65
- Day 66
- Day 67
- Day 68
- Day 69
- Day 70
- Day 71
- Day 72
- Day 73
- Day 74
- Day 75
- Day 76
- Day 77
- Day 78
- Day 79
- Day 80
- Day 81
- Day 82
- Day 83
- Day 84
Navigate to Day 1
- What is Web Development?
- How does the Web works
- What is a URL
- What is DNS
- Three Key Programming Languages
- Creating very First HTML Page
Navigate to Day 2
- Setting up the environment for Web Development.
- HTML Element, Tags and Attributes.
- Started with CSS (Inline styling)
Navigate to Day 3
- Colors in CSS
- Code Formatting
- Developer Tools
- Adding Links to external resources
- Nesting Elements
- CSS Rules
- Structure of HTML
- History of HTML (versions)
Navigate to Day 4
- Overwriting Default CSS Rules
- Using CSS Pseudo Selector
- External CSS File
- Void Elements
- How Browser Handles Multiple Requests
- Using CSS ID Selectors
- Different Size Units in CSS
- Using External Fonts
Navigate to Day 5
- Adding images to the webpage.
- Styling Images.
- Adding Background Overlay.
- Linking different pages.
- Sharing the CSS files across multiple pages.
- Organizing your project.
Navigate to Day 6
- Using Lists.
- Types of Lists.
- Comments.
- Ordering of CSS Rules.
- Inheritance.
- Cascading.
- Specificity.
Navigate to Day 7
- CSS Box Model
- Content
- Padding
- Border
- Margin
- Adding Structure to a Web Page
- Header
- Main
- Footer
- Selectors
- Type Selector
- ID Selector
- Class Selector
- Group Selector
- Combinators
- Descendant Combinator
- Child Combinator
- Block Elements
- Inline Elements
Navigate to Day 8
- Limitations with Inline Elements
- Display Property
- Block
- Margin Collapsing
- Inline-Block
- Block
- Box Shadow Property
- Non Semantic Elements
- Span
- Div
- Inline Element Types
- Replaced Inline Elements
- Non Replace Inline Elements
Navigate to Day 9
- Refer to an image and create an identical webpage.
Navigate to Day 10
- Refer to an image and create an identical webpage.
- Target Attribute of the Anchor tag
- Making Text Bold
- Using CSS
- B tag
- EM tag
- Strong tag
Navigate to Day 11
- Deploying
- Hosting
- Hosting a Static Site
- Favicon
- Generating a Favicon
- Adding a Favicon
- Paths
- Relative Paths
- Absolute Paths
- What is Version Management/Control?
- Git
- GitHub
- Interaction with Computers
- GUI
- CLI
Navigate to Day 12
- Interacting with CLI (Command Line Interface)
- MacOS
- Show the current directory path
- Show All files in a directory
- Changing the directory
- Clearing your Terminal output
- Creating a Folder/Directory
- Creating a File
- Deleting Files and Folders
- Windows
- Show All files in a directory
- Changing the directory
- Clearing your Terminal output
- Creating a Folder/Directory
- Creating a File
- Read a File
- Deleting Files and Folders
- MacOS
- Installing Git
- MacOS
- Windows
- Git Basics
- Repository
- Initializing Git
- Status
- Staging
- Individual files
- Multiple files
- Commit
- First Commit
- Commit after modification & creation of file
- Git Config
- Edit Git Configs for a System
- Getting User Name
- Updating User Name
- Getting Email
- Updating Email
- Git Logs
- Branch
- Repository
Navigate to Day 13
- Branch
- Get the current branch
- Get all the branches
- Rename a branch
- Creating a branch
- Merging branches
- Merge Conflict
- Deleting files
- Manual deletion
- Delete by Git
- Deleting Branches
- Deleting Commits
- Revert Staged Changes
- Revert Un-staged Changes
- Why to use GitHub?
- As a Single User
- As a Team
- Creating a GitHub Account
- Connecting Git with GitHub
- Create a New Remote Repository
- Adding your Local Repository to the Remote Repository.
Navigate to Day 14
- Local Repository => Remote Repository
- Creating Personal Access Token
- Using the token
- Push Local Repo to GitHub
- Erasing the GitHub Credentials
- Pre-requisite for Cloning Repository
- Remote Repository => Local Repository
- Cloning a remote repository
- Modifying Repository
- Collaboration
- Create a Private Repository
- Adding a Collaborator
- Collaborator Side
- Fetching Updated Repository
- Contribution
- Pre-requisite
- Contributing to Someone's Project
- Owner's side
- Summary
Navigate to Day 15
- Nav
- Text Properties
- Text Align
- Text Decoration
- Text Transform
- Text Shadow
- CSS Flexbox
- Display
- Flex Direction
- Flex Wrap
- Flex Flow
- Align Items
- Justify Content
Navigate to Day 16
- Background Properties
- Background Image
- Background Position
- Background Size
- Document Positioning
- Static
- Relative
- Absolute
- Fixed
Navigate to Day 17
- CSS Unit
- Percentage
- Box Sizing
- Content Box
- Border Box
- Object Fit
- Fill
- Contain
- Cover
Navigate to Day 18
- CSS Function
- Linear Gradient
Navigate to Day 19
- Overflow
- Visible
- Hidden
- CSS Grid
- Display Grid
- Grid Template Columns
- Using Pixels
- Using Fraction
- Gap
- Grid Column
- CSS Pseudo Selector
- First of Type
- Nth Type
Navigate to Day 20
- Working with Unicode
- Unicode
- UTF-8
- Adding a Character
- Responsive Design
Navigate to Day 21
- Responsive Design
- CSS Units
- Pixels (px)
- Percentages (%)
- Emphemeral Unit (em)
- Root Emphemeral Unit (rem)
- Difference Between Units
Navigate to Day 22
- Percentage vs EM vs REM
- Percentage
- EM
- REM
- Desktop First Design vs Mobile First Design
- Desktop First Design
- Mobile First Design
- Media Query
- Common Breakpoints
- Portrait
- Landscape
- Common Breakpoints
Navigate to Day 23
- Media Queries
- Side Drawer
- Structure
- Internal Links
- Target Selector
Navigate to Day 24
- Things to Remember
- Step-by-step Features
- Think the Core Information
- Less is More
- Sizing & Spacing
- Right Font
- Font Family
- Font Size
- Font Weight
- Colors
- Grey
- Primary Color
- Accent
Navigate to Day 25
- CSS Variables / Custom Properties
- Root vs Html vs Selectors
- html
- :root
- *
- CSS Transformation
- CSS Transition
- Using SVGs
Navigate to Day 26
- Forms
- What & Why?
- Examples of Forms
- HTML Elements
- Input
- Textarea
- Select
- Button
- Using Forms
- Types of Requests
- GET
- POST
Navigate to Day 27
- Styling Inputs
- Label
- Types of Inputs
- Text
- Number
- Password
- Date
- Radio
- Checkbox
- File
- Other Types of Inputs
Navigate to Day 28
- More on Inputs
- Checkbox
- Single Select
- Multi-select
- Text Area
- Dropdown
- Checkbox
- Adding Semantics to the Form
- Buttons
- Validation Attributes
- Excluding Form Validations
- Required Field
- Length
- Min Length
- Max Length
- Value
- Min
- Max
- Other Attributes
- Placeholder
- Rows
- Resizing Textarea
Navigate to Day 29
- HTML Form Challenge with Validation
- What is JavaScript
- Why JavaScript
- JavaScript Applications & Use-Cases
- Core Features
- Values
- String (Text)
- Numbers
- Other types
- Variables
- Values
Navigate to Day 30
- Adding JavaScript to HTML
- Inside Head
- Inside Body
- External JavaScript File
- Values
- Strings
- Numbers
- Arrays
- Objects
- Variables
- let
- Syntax & Conventions
Navigate to Day 31
- Operations
- Addition
- Subtraction
- Multiplication
- Division
- Function
- Scope
- Return
- Parameters
- Exercise
Navigate to Day 32
- Console Log
- Methods
- Math Operations
- Addition
- Subtracting
- Multiplication
- Division
- Modulus
- Rules
- Shorthand Operations
- Increment
- Decrement
- Addition
- Subtraction
- Multiplication
- Division
- String Operations
- Concatenation
- Length
- Upper Case
- Lower Case
- Character At
Navigate to Day 33
- Array Operations
- Global Objects
- Window
- Document
- DOM
- Traversing Document Tree
- HTML Document
- DOM Tree Structure
- JavaScript
- Drilling into Elements
- Query Elements
Navigate to Day 34
- Selecting first child element
- Index
- firstChild
- firstElementChild
- Child Node
- Ways of Selecting Elements
- getElementById
- querySelector
- querySelectorAll
- Exercise
- Adding an Element
- Create a New Element
- Getting a parent element
- Appending the new element to the parent
Navigate to Day 35
- Remove an Element
- Move an Element
- InnerHTML
- Events
- Click Event
- Input Event
- Other Events
- Event Object
Navigate to Day 36
- Variables
- Constants
- Styling with JavaScript
- Text Align
- Font Size
- Color
- Background Color
- Class Name
- Class List
Navigate to Day 37
- Exercise on DOM
- Control Structures
- Boolean Values
- Types of Operators
- Math
- Concatenation
- Comparison
- Equality
- Greater/Lesser
- Negation
- Logical
- &&
- ||
- Types of Control Structures
- Conditions
- If
- Loops
- Conditions
Navigate to Day 38
- Types of Control Structures
- Conditions
- If
- If Else
- If Else If
- Loops
- For
- For of
- For in
- While
- Conditions
- Truthy & Falsy Value
- String
- Numeric
- Boolean
Navigate to Day 39
- For Loop
- For In Loop
- For Of Loop
- While Loop
- Select Elements using Query Selectors and IDs
- Event Listeners
- Accessing Input Values
- Working with Arrays and Objects
- Checking Conditions
- Creating and Adding HTML elements
- Using Math Object
- Modifying Styles using JavaScript
Navigate to Day 40
- Started with Tic-Tac-Toe as a Milestone Project
- Completed the UI
Navigate to Day 41
- Toggling the config overlay form.
Navigate to Day 42
- Preventing Default behavior of form submission.
- Using FormData object.
- Working with data properties.
- Completed player configuration section.
Navigate to Day 43
- Verify if usernames are valid before starting a new game.
- Displaying game board only after starting a game.
- Switching turns and notifying the user.
- Avoid selecting a selected block.
- Storing the game progress.
- Working with two-dimensional arrays.
Navigate to Day 44
- Adding winning and draw logic.
- Checking for the winning player.
- Displaying a message for winning and draw state.
- Ending the current game.
- Adding Reset Logic.
- Avoid selection after the game has ended.
Navigate to Day 45
- Third Party Packages
- What?
- When & Why?
- Third Party Package Example
- CSS
- JavaScript
- Third-Party vs Custom Code
- Bootstrap
- Starting with Bootstrap
- Parallax
- Adding Parallax Effect
Navigate to Day 46
- Backend
- What?
- Why?
- Browser Instructions
- Frontend vs Backend
- Frontend
- Backend
- Languages
- NodeJS
Navigate to Day 47
- Command Line
- NodeJS
- What is NodeJS
- Installing NodeJS
- Writing NodeJS Code
- Custom NodeJS Server
- Different responses based on Routes
Navigate to Day 48
- NPM
- ExpressJS
- Installing Express
- NodeJS vs ExpressJS Code
- Parsing User Data
- File Manipulation
Navigate to Day 49
- Dynamic HTML Pages with NodeJS
- NODEMON
- Migrating Static HTML to Express Pages
- Serve Static Pages
- Adding Styles and Scripts to our Pages
Navigate to Day 50
- Handling Form Inputs
- HTML Templates
- Installing EJS
- Adding EJS to your Express app
- Converting HTML to EJS
- Adding Dynamic Data to EJS files
- Passing Data to inject in Template
- Conditional Rendering
Navigate to Day 51
- Partial Includes
- Static Data
- Dynamic Data
- Dynamic Routes
- Adding Unique IDs
- Passing Dynamic Data
- Accessing Data
Navigate to Day 52
- Error Handling (Routes/Middleware)
- 404
- Specific Use case
- General Use case (Custom Middleware)
- 500
- 404
- Refactoring Code
Navigate to Day 53
- Splitting Routes
- Using Query Parameters
Navigate to Day 54
- Functions
- No Parameter
- With Parameter
- Default Parameter
- Operators
- Rest
- Spread
- Functions are Objects
- Template Literal
- Primitive vs Reference Values
- Primitive Values
- Reference Values
Navigate to Day 55
- Error Handling
- Scoping & Shadowing
- Scoping
- Shadowing
- Classes and Objects
- Destructuring
- Array
- Object
Navigate to Day 56
- Synchronous
- Asynchronous
- Callback Hell
- Promise
- Error Handling
- Async-Await
- Database
- Need?
- Types
Navigate to Day 57
- Introduction
- SQL Databases
- NoSQL Databases
- SQL vs NoSQL
- SQL Databases
- What?
- Setting Up
- Installation
- Start/Stop the Server
- Usage
- Database Systems vs Databases
- Creating Schema
Navigate to Day 58
- Tables
- Create Table
- Adding Fields
- Inserting Data
- Display Data
- Select All
- Select specific Columns
- Select Conditionally
- Update Data
- Delete Data
- Delete Table
- Aggregate Functions
- Count
- Sum
- Average
- Complex Structure
Navigate to Day 59
- Foreign Key
- Default Values
- Inserting Related Data
- Joining Related Data
- Alias
- Relation Types
- One to One
- One to Many
- Many to Many
Navigate to Day 60
- Why Connect the Database on the Backend?
- Using MySQL with NodeJS: Blog
- Creating Database Schema
- Inserting Initial Sample Data
- Creating Routes
Navigate to Day 61
- Connecting With Database
- Installing Package
- Database Connectivity
- Getting Data
- Storing Data
Navigate to Day 62
- Displaying Data
- Format Data
- Update Data
- Deleted Data
Navigate to Day 63
- NoSQL Introduction
- Installation
- MongoDB Server
- Testing the Installation
- MongoDB Shell
- Using MongoDB
- Creating Database
- Inserting Data
Navigate to Day 64
- Reading
- All Documents
- Filter Documents
- Specific Field
- One Document
- Updating
- One Document
- All Documents
- Delete
- One Document
- All Documents
- Operators
- Arithmetic Operators
- Logical Operator
- Database Planning
- Types
- Restaurants
- Reviews
Navigate to Day 65
- Creating Blogs Website
- Planning Database
- Creating Database Structure
- Connecting to Database
- Fetching Data
- Inserting Data
Navigate to Day 66
- Creating Blogs Website
- Fetching Posts
- Fetch Individual Post
- Updating Post
- Delete Post
- Error Handling
Navigate to Day 67
- Two Sides of File Uploading
- Client-Side
- Input Type
- Form
- Server-Side
- Parsing Incoming File
- Storing Files
- File Storage with Custom Config
- Client-Side
Navigate to Day 68
- File Uploading
- Server-Side
- Storing File Path
- Serving Files
- Client-Side
- Adding File Preview
- Server-Side
- XML
- JSON
- Ajax
- What?
- XMLHttpRequest
- fetch()
- Why?
- Without AJAX
- With AJAX
- What?
Navigate to Day 69
- AJAX Requests
- Server-Side Changes
- GET Request
- POST Request
- Error Handling
- Server-Side Error
- Client-Side Error
- HTTP Methods
- GET
- POST
- PUT
- PATCH
- DELETE
Navigate to Day 70
- What is Authentication?
- User Sign Up
- Encrypting Passwords
Navigate to Day 71
- User Sign In
- Adding Sign Up Validation
- Sessions & Cookies
Navigate to Day 72
- Storing Sessions
- Checking Session
- Clear Session
- Storing Data Temporary in Sessions
Navigate to Day 73
- Authentication
- Authorization
- Adding Authorization
- Passing Data Globally
Navigate to Day 74
- Authentication vs Security
- Attack Patters
- CSRF Attacks
- Implementation
- Same-Site Cookie
- Protection
- XSS Attacks
- Implementation
- Protection
- Escaping
- Sanitizing
- CSRF Attacks
Navigate to Day 75
- SQL Injection
- Implementation
- Protection
- NoSQL Injection
- Server-side mistakes to avoid
- Static Files
- Errors
- Refactoring
Navigate to Day 76
- Clean Code
- MVC Pattern
- Model
- View
- Controller
- Creating Model
Navigate to Day 77
- Adding Controller
- Refactoring Controllers
- Problems with Asynchronous Functions
- Route Protection
Navigate to Day 78
- Project Planning
- Views
- Models
- Project Structure
- Installing Dependencies
Navigate to Day 79
- Installing EJS
- Creating Views
- Importing EJS in Express App
- Serving EJS files as response
- Serving Static Content
- Defining CSS Variables
Navigate to Day 80
- Using CSS Variables
- Styling Form Elements
- Setting Database Connection
Navigate to Day 81
- User SignUp
- CSRF Protection
- Error Handling
- Configuring Session
Navigate to Day 82
- User Authentication (Login, Logout)
- Error Handling with Asynchronous Code
- User Input Validation
Navigate to Day 83
- Flashing Error Messages
- Admin Authentication with Nav Protection
- Navigation Bar with Base Styling
Navigate to Day 84
- Responsive Navbar UI
- Hamburger Menu for Mobile Navbar
- Views for Admin-side Product Management and Adding Products