Coding Challenges

Full-stack coding challenges — JavaScript, HTML, CSS, React, Node, MongoDB & more. Keep learning, keep solving.

Create a Semantic Portfolio Page Layout

Easy
HTML

Build a basic portfolio page using semantic tags like <header>, <main>, <section>, <article>, and <footer>.

Example:
Input: Structure of the page
Output: Header, hero section, projects section, about section, footer

Build a Blog Layout Using <article> and <section>

Easy
HTML

Create a simple blog page with a main article and related posts using <article> and <section> tags.

Example:
Input: Blog main content + related posts
Output: One main article and a section of 3 related post teasers

Design a Contact Form with Proper Labels

Easy
HTML

Build a contact form with fields for name, email, subject, and message using proper <label> and input associations.

Example:
Input: Name, Email, Subject, Message
Output: Accessible form with labeled fields

Create a FAQ Page Using <details> and <summary>

Easy
HTML

Create an FAQ section where each question can be expanded/collapsed using <details> and <summary>.

Example:
Input: List of 5 questions
Output: All questions shown as clickable summaries with hidden answers

Make a Product Landing Page Hero Section

Easy
HTML

Build a hero section for a product with a headline, subheading, image placeholder, and call-to-action button.

Example:
Input: Product title, description, CTA button
Output: Hero with structured promotional content

Build a Pricing Table with Multiple Plans

Medium
HTML

Create a pricing section with at least three pricing plans displayed side-by-side using semantic HTML.

Example:
Input: Basic, Pro, Premium plans
Output: Three structured pricing blocks with name, price, features, and button

Create an Image Gallery with Captions

Easy
HTML

Build an image gallery with at least six images, each having a caption using <figure> and <figcaption>.

Example:
Input: 6 image URLs
Output: Grid of images with textual captions under each

Create a Navigation Menu with Anchor Links

Easy
HTML

Build a top navigation bar that scrolls to different sections of the same page using anchor links.

Example:
Input: Sections: Home, About, Services, Contact
Output: Nav with links that jump to each section

Build a Resume Page Using Lists and Headings

Easy
HTML

Create a resume-style page that lists education, experience, skills, and projects using headings and lists.

Example:
Input: Name + sections like Education and Skills
Output: A single-page resume structure with listed items

Create a Multi-Step Form Structure (No JS)

Medium
HTML

Design the HTML structure for a multi-step form (personal info, address, review) without adding actual step logic.

Example:
Input: Sections: Step 1, Step 2, Step 3
Output: Form divided visually into multiple blocks

Build a Terms & Conditions Page Layout

Easy
HTML

Create a long text-based Terms & Conditions page with proper headings, paragraphs, and internal links.

Example:
Input: Legal text sections
Output: Multi-heading structured document

Create a Documentation Page with Table of Contents

Medium
HTML

Build a documentation-style page with a table of contents at the top linking to different sections below.

Example:
Input: Sections: Getting Started, Installation, Usage, API, FAQ
Output: Clickable TOC at top + content below

Build a 404 Not Found Page

Easy
HTML

Create a simple 404 page with an error message, short explanation, and a link back to the homepage.

Example:
Input: User visits unknown URL
Output: Shows 404 page with 'Go to Home' link

Create an Accessibility-Friendly Form

Medium
HTML

Build a form with labels, aria attributes where needed, and proper error message markup.

Example:
Input: Form with name/email + error states
Output: Form that screen readers can interpret clearly

Make a Simple Newsletter Subscription Section

Easy
HTML

Create a small newsletter block with a title, short text, email input, and subscribe button.

Example:
Input: Title + Email input + Button
Output: Compact email subscription section

Design a Multi-Column Footer

Easy
HTML

Create a footer with 3–4 columns: links, social icons placeholder, and a small about text.

Example:
Input: Links: About, Contact, Social placeholders
Output: Footer with different grouped link sections

Create a Feature List Using Definition Lists

Easy
HTML

Use <dl>, <dt>, and <dd> to create a feature list that explains terms and their descriptions.

Example:
Input: Feature names and descriptions
Output: Clean feature list using definition list tags

Build a Simple Image + Text Media Object

Easy
HTML

Create a layout where an image is on the left and text content is on the right, like a typical media object.

Example:
Input: Image + Text
Output: Horizontal layout with clear separation of media and text

Create a Simple Table for Product Comparison

Medium
HTML

Build a table comparing at least three products with rows for features and columns for each product.

Example:
Input: 3 products, 5 features
Output: Comparison table with clear headings and values

Make a Multi-Language Page Skeleton

Medium
HTML

Create a simple page structure that shows content in two languages with proper lang attributes.

Example:
Input: Same paragraph in EN + another language
Output: Two clearly separated language sections

Center a Card Using Flexbox

Easy
CSS

Center a card both vertically and horizontally on the page using Flexbox.

Example:
Input: One card
Output: Screen-centered card

Build a 3-Column Flexbox Layout

Easy
CSS

Create a 3-column responsive layout using Flexbox.

Example:
Input: 3 content columns
Output: Equal width layout that stacks on mobile

Create a Responsive Navigation Header

Medium
CSS

Build a top navbar that collapses into a hamburger menu on small screens (no JS logic required).

Example:
Input: Desktop nav becomes a menu icon
Output: Responsive navbar

Design a Hero Section with Background Image

Easy
CSS

Build a hero banner with background image, title, subtitle, and a call-to-action button.

Example:
Input: Hero with CTA
Output: Center-aligned text over image

Style a Login Form

Easy
CSS

Style a login form with proper spacing, inputs and button styles.

Example:
Input: Email + Password + Button
Output: Clean styled form

Create Card Hover Elevation Effect

Easy
CSS

Create a card that lifts with a shadow on hover.

Example:
Input: UI card
Output: Hover effect

Make Image Hover Zoom Effect

Medium
CSS

Zoom image slightly on hover with smooth transition.

Example:
Input: Photo gallery
Output: Zoom on hover

Build a Responsive Image Grid

Easy
CSS

Create an image grid layout that adjusts column count based on screen width.

Example:
Input: 6 images
Output: Responsive gallery

Create a Fullscreen Split-Screen Layout

Medium
CSS

Divide a full screen into two equal vertical halves with distinct content.

Create a Glassmorphism Card

Medium
CSS

Build a card with frosted glass effect using backdrop-filter.

Create a Pure CSS Tooltip

Medium
CSS

Show a tooltip on hover using only CSS pseudo-elements.

Create a CSS-Only Dropdown

Medium
CSS

Show/hide dropdown content on hover using pure CSS.

Build an Animated Loading Spinner

Easy
CSS

Create a circular loading spinner animation using @keyframes.

Make a Timeline UI

Medium
CSS

Build a vertical timeline UI using pseudo-elements.

Build a Testimonial Card Section

Easy
CSS

Build a testimonial section with avatar, comment, and name.

Create a Pricing Grid with Highlighted Plan

Medium
CSS

Highlight one plan visually using a different background or border.

Style a Product Card with Price Tag

Medium
CSS

Include product image, title, price badge and button.

Create a Badge / Chip UI

Easy
CSS

Build tag-style UI used for categories or labels.

Build a Sidebar + Content Dashboard Layout

Medium
CSS

Create a dashboard layout with fixed sidebar and scrollable main content.

Build a CSS Grid Dashboard

Medium
CSS

Create grid cards layout like analytics dashboard

Reverse a String

Easy
JavaScript

Given a string, return a new string with the characters in reverse order.

Example:
Input: "hello"
Output: "olleh"

Check if String is Palindrome

Easy
JavaScript

Check whether a given string reads the same forwards and backwards. Ignore case and non-alphanumeric characters.

Example:
Input: "madam"
Output: true

Find Maximum in an Array

Easy
JavaScript

Return the maximum number from a given non-empty array of numbers.

Example:
Input: [1, 5, 3, 9, 2]
Output: 9

Remove Duplicates from Array

Easy
JavaScript

Given an array, return a new array with all duplicate values removed.

Example:
Input: [1, 1, 2, 3, 3]
Output: [1, 2, 3]

Count Vowels in a String

Easy
JavaScript

Count the number of vowels (a, e, i, o, u) present in a given string.

Example:
Input: "happy"
Output: 1

Implement FizzBuzz

Easy
JavaScript

Print numbers from 1 to n. For multiples of 3 print 'Fizz', for multiples of 5 print 'Buzz', and for multiples of both print 'FizzBuzz'.

Example:
Input: 5
Output: "1, 2, Fizz, 4, Buzz"

Sum of Array Elements

Easy
JavaScript

Return the sum of all numbers in an array.

Example:
Input: [1, 2, 3, 4]
Output: 10

Factorial of a Number

Easy
JavaScript

Given a non-negative integer n, return n! (n factorial).

Example:
Input: 5
Output: 120

Generate Fibonacci Sequence

Medium
JavaScript

Return an array containing the first n numbers of the Fibonacci sequence.

Example:
Input: 5
Output: [0, 1, 1, 2, 3]

Find First Non-Repeating Character

Medium
JavaScript

Given a string, return the first character that does not repeat. If none exists, return null.

Example:
Input: "aabbcde"
Output: "c"

Check if Two Strings Are Anagrams

Medium
JavaScript

Check if two given strings are anagrams of each other (same characters with same frequency).

Example:
Input: "listen", "silent"
Output: true

Flatten a Nested Array (One Level)

Medium
JavaScript

Given an array that may contain nested arrays one level deep, return a new flattened array.

Example:
Input: [1, [2, 3], 4, [5]]
Output: [1, 2, 3, 4, 5]

Find Intersection of Two Arrays

Medium
JavaScript

Return an array containing the unique intersection of two arrays (values present in both).

Example:
Input: [1,2,2,3], [2,3,4]
Output: [2,3]

Convert String to Title Case

Easy
JavaScript

Convert a sentence so that the first letter of each word is uppercase and the rest are lowercase.

Example:
Input: "hello world from codewithhappy"
Output: "Hello World From Codewithhappy"

Find the Longest Word in a Sentence

Easy
JavaScript

Given a sentence, return the longest word. If there are multiple, return any one.

Example:
Input: "I love JavaScript"
Output: "JavaScript"

Implement a Debounce Function

Medium
JavaScript

Implement a debounce function that delays invoking a callback until after a certain wait time has elapsed since the last call.

Example:
Input: debounce(fn, 300)
Output: fn runs only once after user stops triggering for 300ms

Implement a Throttle Function

Medium
JavaScript

Implement a throttle function that ensures a callback is called at most once in a given interval.

Example:
Input: throttle(fn, 500)
Output: fn can execute at most every 500ms

Implement Custom Array.map

Medium
JavaScript

Implement a custom map function called myMap that works similarly to Array.prototype.map.

Example:
Input: [1,2,3].myMap(x => x * 2)
Output: [2,4,6]

Implement Custom Array.filter

Medium
JavaScript

Implement a custom filter function called myFilter that works similarly to Array.prototype.filter.

Example:
Input: [1,2,3,4].myFilter(x => x % 2 === 0)
Output: [2,4]

Implement a Simple Event Emitter

Medium
JavaScript

Implement a simple EventEmitter with on, off and emit methods to subscribe and trigger events.

Example:
Input: em.on("data", fn); em.emit("data", 123);
Output: fn called with 123

Define a Basic User Type

Easy
TypeScript

Create a User type with id, name, email, and isAdmin fields and use it to type a user object.

Example:
Input: User with id, name, email, isAdmin
Output: Well-typed user object

Make Some User Fields Optional

Easy
TypeScript

Extend the User type so that 'isAdmin' and 'phone' fields are optional.

Example:
Input: User with no phone or isAdmin
Output: Valid typed user object

Create a Readonly User Type

Easy
TypeScript

Create a ReadonlyUser type in which all properties from User are readonly.

Example:
Input: Try reassigning user.id
Output: Type error

Make a Partial User Update Type

Easy
TypeScript

Create a UserUpdate type where all User fields are optional using Partial.

Example:
Input: { email?: string }
Output: Valid UserUpdate

Combine Readonly and Partial for User

Medium
TypeScript

Create a type that is both Partial and Readonly version of User.

Example:
Input: Read-only partial update
Output: Cannot reassign, all fields optional

Create a Union Type for Button Variant

Easy
TypeScript

Define a ButtonVariant type that only allows 'primary', 'secondary', or 'ghost'.

Example:
Input: "primary"
Output: Valid

Create a Discriminated Union for API Status

Medium
TypeScript

Create a discriminated union type representing loading, success, and error states of an API request.

Example:
Input: status: 'success', data: T
Output: Valid success state

Write a Generic Identity Function

Easy
TypeScript

Implement a generic identity function that returns whatever value it receives with the correct type.

Example:
Input: identity<string>('hello')
Output: string

Create a Generic Array Wrapper Type

Easy
TypeScript

Define a generic type that wraps any type T as an array of T.

Example:
Input: List<string>
Output: string[]

Define a Generic API Result Type

Medium
TypeScript

Create a generic ApiResult<T> type that has success, data, and optional error message.

Example:
Input: ApiResult<User[]>
Output: Typed response for array of users

Use Pick to Select Specific Fields

Easy
TypeScript

Create a PublicUser type that only has 'id' and 'name' from User.

Example:
Input: PublicUser
Output: { id: number; name: string }

Use Omit to Hide Sensitive Fields

Easy
TypeScript

Create a SafeUser type that removes 'password' and 'token' from the User type.

Example:
Input: SafeUser
Output: User without password and token

Use Record to Map Strings to Numbers

Easy
TypeScript

Create a type alias ScoreMap that maps string keys to number values using Record.

Example:
Input: ScoreMap
Output: { [key: string]: number }

Define a Function Type for Async API Call

Medium
TypeScript

Define a type alias ApiCaller that represents a function returning a Promise of generic type T.

Example:
Input: ApiCaller<User[]>
Output: () => Promise<User[]>

Create a Discriminated Shape Union

Medium
TypeScript

Create a Shape union type for 'circle' and 'rectangle', each with appropriate fields.

Example:
Input: Shape
Output: Circle or Rectangle with strong typing

Write a Function to Compute Shape Area

Medium
TypeScript

Using the Shape type, implement a function that returns the area of either a circle or a rectangle.

Example:
Input: { kind: "circle", radius: 2 }
Output: 12.566...

Use keyof to Get Object Keys Type

Medium
TypeScript

Create a function that takes an object and a key (restricted to the object's keys) and returns the value.

Example:
Input: getProp(user, 'name')
Output: string

Create a Readonly Array Type

Easy
TypeScript

Define a type ReadonlyStringList that is a readonly array of strings.

Example:
Input: push on ReadonlyStringList
Output: Type error

Add Types to a Fetch Wrapper Function

Medium
TypeScript

Write a generic fetchJson<T> function that fetches a URL and returns Promise<T>.

Example:
Input: fetchJson<User[]>('/api/users')
Output: Promise<User[]>

Type React Component Props with TypeScript

Medium
TypeScriptReact

Define a Props type for a Button component with label (string), onClick (function), and optional variant.

Example:
Input: <Button label='Save' onClick={...} />
Output: Type-safe props

Build a Counter Component

Easy
ReactJavaScript

Create a counter with + and - buttons and show the current value.

Example:
Input: Click + three times
Output: Counter shows 3

Create a Todo List with Add & Toggle

Easy
ReactJavaScript

Build a todo list where users can add items and mark them as completed.

Example:
Input: Add 'Learn React', click it
Output: Todo appears and toggles completed style

Filter a List with Search Input

Easy
ReactJavaScript

Create a search box that filters a list of items in real-time.

Example:
Input: Type 'js' in search
Output: Only items containing 'js' shown

Create a Tabs Component

Medium
ReactJavaScript

Build a Tabs component that switches visible content when a tab is clicked.

Example:
Input: Click 'Profile' tab
Output: Profile content visible

Build an Accordion Component

Medium
ReactJavaScript

Create an accordion with multiple sections where clicking a header toggles its content.

Example:
Input: Click a question
Output: Answer toggles open/closed

Create a Modal Dialog

Medium
ReactJavaScript

Build a modal dialog that opens on button click and closes via close button or backdrop click.

Example:
Input: Click 'Open Modal'
Output: Overlay and dialog appear

Implement Dark/Light Theme Toggle

Medium
ReactJavaScript

Create a toggle that switches between dark and light theme and applies a class to the body.

Example:
Input: Toggle theme
Output: Body class toggles between light and dark

Build a Custom useLocalStorage Hook

Medium
ReactJavaScript

Create a custom hook useLocalStorage that syncs state with localStorage.

Example:
Input: useLocalStorage("theme", "light")
Output: Persists theme across refresh

Create a Debounced Search Input

Medium
ReactJavaScript

Implement a search input that only triggers filter/API logic after the user stops typing for some time.

Example:
Input: Type quickly 'react'
Output: Search only fires once after typing stops

Fetch Data with Loading & Error States

Medium
ReactJavaScript

Build a component that fetches data from an API and shows loading, error, or data UI.

Example:
Input: Component mounts
Output: Shows loading then data or error

Build a Pagination Component

Medium
ReactJavaScript

Create a simple pagination component that lets you navigate through pages of items.

Example:
Input: 50 items, pageSize 10
Output: 5 pages with navigation controls

Create a Multi-Step Form (Stepper)

Medium
ReactJavaScript

Build a multi-step form with next/previous buttons and a final review step.

Example:
Input: 3 steps: personal, address, review
Output: Stepper with navigation

Build a Toast / Notification System

Medium
ReactJavaScript

Create a simple toast system where messages appear at the corner and disappear after a timeout.

Example:
Input: Click 'Show Toast'
Output: Toast appears and fades after a few seconds

Create a Tag Input Component

Medium
ReactJavaScript

Build an input where user can type a value and press Enter to create a tag, with ability to remove tags.

Example:
Input: Type "React" + Enter
Output: Tag 'React' appears

Implement Infinite Scroll for a List

Medium
ReactJavaScript

Load more items when the user scrolls near the bottom of the list.

Example:
Input: Scroll down
Output: More items auto-append

Build a File Upload Preview (No Backend)

Medium
ReactJavaScript

Create a file input that shows a preview of an image file selected by the user.

Example:
Input: Select image file
Output: Preview image displayed

Create a Star Rating Component

Medium
ReactJavaScript

Build a 1–5 star rating component that allows user to select a rating.

Example:
Input: Click 4th star
Output: Rating set to 4

Build a Simple Kanban Board

Medium
ReactJavaScript

Create a Kanban board with three columns: Todo, In Progress, Done. Allow moving tasks between columns.

Example:
Input: Move task from Todo to Done
Output: Status updated, appears in Done column

Build a Responsive Navbar with Active Link

Easy
ReactJavaScript

Create a navbar with multiple links and highlight the active one based on current state.

Example:
Input: Click 'Projects'
Output: 'Projects' looks active

Build a Simple Form with Validation Messages

Medium
ReactJavaScript

Create a signup form with name, email and password, showing simple validation messages before submit.

Example:
Input: Empty email
Output: Shows 'Email is required'

Create a Basic Next.js Page

Easy
Next.jsReactJavaScript

Create a simple Next.js page that renders a heading and a short description.

Example:
Input: /about
Output: About page renders with heading

Create a Shared Layout Component

Easy
Next.jsReactJavaScript

Create a layout component that wraps pages with a navbar and footer.

Example:
Input: Wrap /about & /contact
Output: Both share same navbar/footer

Set Up a Root Layout in App Router

Easy
Next.jsReactJavaScript

Create a root layout in the app directory with shared HTML structure and metadata.

Example:
Input: app/layout.tsx
Output: All pages share same shell

Create Static Routes for Blog List & Detail

Medium
Next.jsReactJavaScript

Create a /blog page that lists posts and a dynamic [slug] route that shows blog details.

Example:
Input: /blog/hello-next
Output: Shows 'hello-next' post

Read Dynamic Route Params (App Router)

Medium
Next.jsReactJavaScript

Use dynamic route segments and read params in a page component.

Example:
Input: /products/laptop
Output: Slug is 'laptop'

Pre-generate Dynamic Routes with generateStaticParams

Medium
Next.jsReactJavaScript

Use generateStaticParams to statically generate multiple dynamic pages at build time.

Example:
Input: 3 products
Output: 3 statically generated pages

Add Static Metadata to a Page

Easy
Next.jsReactJavaScript

Add static title and description metadata for a page using the metadata export.

Example:
Input: Page /resources
Output: Custom tab title

Generate Dynamic Metadata per Page

Medium
Next.jsReactJavaScript

Use generateMetadata to set page title and description based on dynamic route params.

Example:
Input: /blog/next-routing
Output: Title 'Blog - next-routing'

Create API Route for JSON Data

Easy
Next.jsNode.jsJavaScript

Create a basic API route that returns a JSON response.

Example:
Input: /api/status
Output: { ok: true }

Create Dynamic API Route

Medium
Next.jsNode.jsJavaScript

Build a dynamic API route that reads an id from the URL and returns fake data.

Example:
Input: /api/users/123
Output: { id: '123' }

Use Server Components to Fetch Data

Medium
Next.jsReactJavaScript

Create a server component that fetches data on the server and passes it to the client.

Example:
Input: /users
Output: Initial HTML already contains user data

Convert Component to Client Component

Easy
Next.jsReactJavaScript

Turn a component into a client component to allow hooks like useState and useEffect.

Example:
Input: add counter to server page
Output: mark child as client

Create a Loading State with loading.tsx

Easy
Next.jsReactJavaScript

Add a loading.tsx file to show a loading UI while a route segment is fetching data.

Example:
Input: navigate to /users
Output: Loading UI before data appears

Handle Errors with error.tsx

Medium
Next.jsReactJavaScript

Add an error.tsx file to handle rendering when a route throws an error.

Example:
Input: fetch fails
Output: Error UI with retry button

Create a Catch-All Route

Medium
Next.jsReactJavaScript

Create a catch-all route that matches any nested path segments and prints them.

Example:
Input: /docs/guide/getting-started
Output: ['docs','guide','getting-started']

Create an Optional Catch-All Route

Medium
Next.jsReactJavaScript

Create an optional catch-all route that works both with and without additional segments.

Example:
Input: /docs
Output: base view

Use Middleware for Simple Auth Redirect

Medium
Next.jsJavaScript

Use middleware.ts to protect a dashboard route and redirect to login if no cookie is set.

Example:
Input: visit /dashboard without auth cookie
Output: redirect to /login

Create a Simple Sitemap Route

Medium
Next.jsJavaScript

Create a route that returns a simple XML sitemap listing a few URLs.

Example:
Input: /sitemap.xml
Output: XML response

Create a robots.txt Route

Easy
Next.jsJavaScript

Create a route that returns a robots.txt response for your site.

Example:
Input: /robots.txt
Output: User-agent: *

Create a Resources Page from Local Data

Medium
Next.jsReactJavaScript

Import a local JSON or JS data file and render a resources list in a Next.js page.

Example:
Input: 5 resource items
Output: Resources page lists all items

Create a Basic HTTP Server (No Express)

Easy
Node.js

Create a basic HTTP server using Node's built-in http module that responds with plain text.

Example:
Input: GET /
Output: Hello from Node server

Build a CLI Tool to Count Words in a File

Medium
Node.js

Create a Node CLI script that takes a file path from command line arguments and prints the word count.

Example:
Input: node wc.js notes.txt
Output: Words: 120

Read & Write JSON File

Easy
Node.js

Read a JSON file, update a field, and write it back to disk.

Example:
Input: config.json with {"visits": 1}
Output: Updated to {"visits": 2}

Log System Information to Console

Easy
Node.js

Write a script that logs OS platform, total memory, free memory, and CPU count.

Example:
Input: node sysinfo.js
Output: Platform: win32, CPUs: 8, ...

Create a Simple Logger Module

Medium
Node.js

Create a logger module that logs messages with timestamps and levels (info, warn, error).

Example:
Input: logger.info("Server started")
Output: [INFO] 2025-01-01T... Server started

Create a Countdown Timer Script

Easy
Node.js

Create a CLI script that counts down from N seconds to 0 and logs each second.

Example:
Input: node timer.js 5
Output: 5 4 3 2 1 0

Parse CLI Arguments into an Object

Medium
Node.js

Build a simple command-line arguments parser that supports flags like --port=3000 --mode=dev.

Example:
Input: node app.js --port=3000 --mode=dev
Output: { port: '3000', mode: 'dev' }

Read Environment Variables Safely

Easy
Node.js

Create a small config helper that reads required environment variables and throws error if missing.

Example:
Input: getEnv('PORT')
Output: Returns port or throws

Implement a Simple EventEmitter

Medium
Node.js

Implement a minimal EventEmitter class with on, off, and emit methods (without using built-in events module).

Example:
Input: em.on("data", fn); em.emit("data", 123);
Output: fn called with 123

Rename All Files in a Folder with Prefix

Medium
Node.js

Write a script that adds a prefix to all file names in a given folder.

Example:
Input: node rename.js ./images img_
Output: image1.png -> img_image1.png

Build a Simple Todo CLI (JSON Storage)

Medium
Node.js

Create a todo CLI where you can add and list todos stored in a JSON file.

Example:
Input: node todo.js add "Learn Node"
Output: Added: Learn Node

Design URL Shortener Core Logic

Medium
Node.js

Implement the in-memory logic for a URL shortener: createShortUrl(longUrl) and getLongUrl(shortCode).

Example:
Input: createShortUrl('https://example.com')
Output: abc123

Implement In-Memory Rate Limiter

Medium
Node.js

Implement a basic in-memory rate limiter that allows only N requests per IP in a time window.

Example:
Input: 5 requests within 1 minute
Output: Allowed, then blocked

Schedule a Repeating Task

Easy
Node.js

Create a script that logs a heartbeat message every minute, and stops after 5 runs.

Example:
Input: run script
Output: Heartbeat #1 ... Heartbeat #5 then exit

Create a Simple File Backup Script

Medium
Node.js

Write a script that copies all files from a source directory to a backup directory with a timestamped folder.

Example:
Input: node backup.js ./data
Output: ./backups/2025-01-01T.../file1.json

Validate JSON and Print Errors

Medium
Node.js

Create a script that tries to parse a JSON file and reports whether it is valid or prints the parse error.

Example:
Input: node validate.js broken.json
Output: Invalid JSON: Unexpected token ...

Implement a Simple Task Queue

Medium
Node.js

Implement a simple in-memory queue that processes async tasks one by one.

Example:
Input: addTask(async () => wait 1s)
Output: Tasks run sequentially

Convert Markdown File to HTML

Medium
Node.js

Build a script that reads a markdown (.md) file and outputs HTML (you may assume a simple library like marked is available).

Example:
Input: node md2html.js README.md
Output: README.html created

Wrap Fetch with Retry Logic in Node

Medium
Node.js

Implement a fetchWithRetry(url, options, maxRetries) helper that retries on network errors or 5xx responses.

Example:
Input: fetchWithRetry('https://api', {}, 3)
Output: Attempts up to 3 times

Implement a Config Loader with Defaults

Medium
Node.js

Create a config loader that merges default config, JSON file config, and environment variables (env has highest priority).

Example:
Input: PORT default 3000, env PORT=5000
Output: Final port 5000

Create Basic Express Server

Easy
Express.jsNode.js

Set up a basic Express server with a single GET / route that returns a JSON welcome message.

Example:
Input: GET /
Output: { "message": "Welcome to Express API" }

Create JSON CRUD Endpoints for In-Memory Items

Medium
Express.jsNode.js

Build /items endpoints: GET all, GET by id, POST create, PUT update, DELETE remove using an in-memory array.

Example:
Input: POST /items {name:'Pen'}
Output: 201 + created item with id

Add Centralized Request Logging Middleware

Easy
Express.jsNode.js

Create a custom middleware that logs method, URL, and response time for each request.

Example:
Input: GET /items
Output: LOG: GET /items 200 - 15ms

Implement Centralized Error Handling Middleware

Medium
Express.jsNode.js

Add an error-handling middleware that catches thrown errors and returns a standardized JSON error response.

Example:
Input: Route throws error
Output: { "error": "Something failed" }

Create Async Wrapper for Express Route Handlers

Medium
Express.jsNode.js

Create a helper function wrapAsync that wraps async route handlers and forwards errors to next.

Example:
Input: app.get('/users', wrapAsync(async..))
Output: Errors go to error handler

Add Basic Request Validation Middleware

Medium
Express.jsNode.js

Create a middleware validateCreateItem that ensures POST /items has a non-empty 'name' field.

Example:
Input: POST /items {}
Output: 400 { "error": "name is required" }

Implement Simple API Key Authentication

Medium
Express.jsNode.js

Create middleware that checks for an API key in headers (x-api-key) and rejects requests if it's missing or incorrect.

Example:
Input: No x-api-key header
Output: 401 Unauthorized

Add JWT Authentication Middleware

Medium
Express.jsNode.js

Add middleware that verifies a JWT from Authorization: Bearer <token>, decodes user, and attaches it to req.user.

Example:
Input: GET /me with valid token
Output: { id, email }

Implement Pagination on a List Endpoint

Medium
Express.jsNode.js

Add pagination support to GET /items using query params page and limit.

Example:
Input: GET /items?page=2&limit=5
Output: 5 items from index 5–9

Filter & Search Items via Query Params

Medium
Express.jsNode.js

Enhance GET /items to support search by name (?q=) and filter by minPrice/maxPrice query params.

Example:
Input: GET /items?q=pen
Output: Only items with 'pen' in name

Create Versioned API Routes (/api/v1, /api/v2)

Medium
Express.jsNode.js

Organize routes into versioned routers for /api/v1 and /api/v2, each returning slightly different responses.

Example:
Input: GET /api/v1/status
Output: { version: 'v1' }

Serve Static Files from Public Folder

Easy
Express.jsNode.js

Configure Express to serve static files like images, CSS, and client-side JS from a /public directory.

Example:
Input: GET /static/logo.png
Output: Serves /public/logo.png

Add CORS Support to API

Easy
Express.jsNode.js

Enable CORS for your API so it can be consumed from a different origin (e.g., React frontend).

Example:
Input: Browser fetch from different origin
Output: No CORS error

Handle 404 Not Found for Unknown Routes

Easy
Express.jsNode.js

Add a catch-all middleware that returns a JSON 404 error for unknown routes.

Example:
Input: GET /unknown
Output: 404 { error: 'Not found' }

Implement Request Rate Limiting Middleware

Medium
Express.jsNode.js

Create simple in-memory rate-limiting middleware limiting each IP to N requests per minute.

Example:
Input: 20 requests in a minute with limit=10
Output: First 10 OK, then 429

Group Routes Using Express Router

Easy
Express.jsNode.js

Move /items routes into a separate router module and mount it under /api/items.

Example:
Input: GET /api/items
Output: Handled by router

Add Health Check & Metrics Endpoint

Medium
Express.jsNode.js

Add GET /health and GET /metrics endpoints for monitoring status and basic stats (uptime, request count).

Example:
Input: GET /metrics
Output: { uptime: 123.4, requests: 42 }

Implement File Upload Endpoint (multer)

Medium
Express.jsNode.js

Create a POST /upload endpoint that accepts a single file field 'file' and stores it in an uploads/ folder.

Example:
Input: POST /upload with image
Output: { originalName, filename }

Implement Soft Delete vs Hard Delete

Medium
Express.jsNode.js

Implement DELETE /items/:id as soft delete (mark isDeleted) and add /admin/items endpoint to include deleted ones.

Example:
Input: DELETE /items/1
Output: Item marked isDeleted=true

Document API with OpenAPI/Swagger JSON

Medium
Express.jsNode.js

Expose a /openapi.json endpoint that returns a basic OpenAPI specification for your items API.

Example:
Input: GET /openapi.json
Output: JSON schema describing /items

Design Basic User Collection Schema

Easy
MongoDBNode.js

Design a basic user document structure for MongoDB including name, email, passwordHash, roles, createdAt.

Example:
Input: User signup
Output: { name, email, passwordHash, roles: ['user'], createdAt }

Insert Multiple Users into Collection

Easy
MongoDB

Insert multiple user documents into a users collection in a single operation.

Example:
Input: 3 user objects
Output: Acknowledged insert with insertedIds

Find Users by Role

Easy
MongoDB

Query all users that have 'admin' in their roles array.

Example:
Input: role = admin
Output: List of admin users

Use Projection to Limit Returned Fields

Easy
MongoDB

Query users but return only name and email, excluding _id if needed.

Example:
Input: Find all users
Output: { name, email } only

Ensure Unique Index on Email

Medium
MongoDB

Create a unique index on the email field of users collection so duplicate emails are not allowed.

Example:
Input: insert user with existing email
Output: Duplicate key error

Create Text Search Index on Article Title & Body

Medium
MongoDB

Create a text index on articles collection covering title and body, then run a search query.

Example:
Input: query: 'mongodb indexing'
Output: Articles that match those words

Use Text Score for Sorting Search Results

Medium
MongoDB

Perform a text search on articles and sort results by relevance score.

Example:
Input: search 'node mongodb'
Output: Most relevant article first

Find Users Registered in Last N Days

Medium
MongoDB

Query users whose createdAt is within the last 7 days.

Example:
Input: N = 7 days
Output: List of recent signups

Aggregate User Signups Per Day

Medium
MongoDB

Use aggregation pipeline to count number of users registered per day.

Example:
Input: users collection
Output: [{ _id:'2025-01-01', count:10 }, ...]

Store Embedded Address in User Document

Easy
MongoDB

Add an embedded address object inside user documents instead of separate collection.

Example:
Input: User with address
Output: { name, email, address: { city, country } }

Reference Author from Post Document

Medium
MongoDB

Design blog posts collection where each post stores a reference (userId) to the author in users collection.

Example:
Input: New post
Output: { title, body, userId:ObjectId, createdAt }

Join Posts with Author Details Using $lookup

Medium
MongoDB

Use aggregation pipeline with $lookup to fetch posts along with author name and email from users.

Example:
Input: posts + users
Output: { title, body, author: { name, email } }

Add Pagination to MongoDB Query

Medium
MongoDB

Implement pagination using skip and limit for a products collection.

Example:
Input: page=2, limit=10
Output: Documents 11–20

Use Compound Index for Query Optimization

Medium
MongoDB

Create a compound index on products price and category to speed up queries filtering both.

Example:
Input: find { category:'books', price: { $gt: 500 } }
Output: Uses compound index

Update Nested Field in Embedded Document

Medium
MongoDB

Update a user's address.city field without replacing the entire address object.

Example:
Input: user email = a@b.com
Output: address.city updated

Increment a Counter Field Atomically

Easy
MongoDB

Increment a product's views count by 1 every time it is viewed.

Example:
Input: view product
Output: views: previous+1

Track Page Views Per Day per Article

Medium
MongoDB

Design a schema & update pattern to track number of views per day for each article.

Example:
Input: view article X on date D
Output: count for that date increments

Use $in and $or to Filter Products

Easy
MongoDB

Query products that are either in categories ['laptop', 'mobile'] OR have price less than 5000.

Example:
Input: categories = laptop/mobile, price < 5000
Output: All matching products

Implement Soft Delete for Documents

Medium
MongoDB

Mark a document as deleted using isDeleted flag instead of physically removing it, and update queries to ignore deleted docs.

Example:
Input: soft delete user
Output: isDeleted:true but user still in DB

Model One-to-Many Comments for a Post

Medium
MongoDB

Design how to store comments for posts: either embedded array of comments or separate comments collection with postId, and explain tradeoffs.

Example:
Input: post with 3 comments
Output: Either embedded or referenced structure

Select All Columns from a Table

Easy
SQL

Write a SQL query to select all columns from the users table.

Example:
Input: users table
Output: All rows with all columns

Select Specific Columns with WHERE Filter

Easy
SQL

Select only name and email from users table where is_active = true.

Example:
Input: users where is_active = 1
Output: name, email only

Filter Using Multiple Conditions (AND/OR)

Easy
SQL

Write a query to fetch users who are active AND from country = 'India', OR have role = 'admin'.

Example:
Input: active + India, plus all admins
Output: Filtered list of users

Search Using LIKE and Wildcards

Easy
SQL

Write a query to find all users whose name starts with 'Ha' and email contains 'gmail'.

Example:
Input: pattern Ha% and %gmail%
Output: Matching users

Sort & Limit Results

Easy
SQL

Select the 10 most recently created users ordered by created_at descending.

Example:
Input: users table
Output: Latest 10 users

Aggregate: Count Users Per Country

Easy
SQL

Write a query to count how many users are there in each country.

Example:
Input: users
Output: { country:'India', user_count:120 } etc.

Use HAVING to Filter Aggregated Results

Medium
SQL

Count users per country but only show countries having more than 100 users.

Example:
Input: users per country > 100
Output: Filtered list of countries

Inner Join Users with Orders

Medium
SQL

Write a query to list each order with the user's name and email who placed the order.

Example:
Input: orders + users
Output: order_id, user_name, user_email

Left Join to Include Users Without Orders

Medium
SQL

List all users and their total order_count, including users who have never placed an order.

Example:
Input: users + orders
Output: { user, order_count } (including zeros)

Calculate Total Revenue Per User

Medium
SQL

Using users and orders tables, compute total revenue per user and show only users with revenue > 1000.

Example:
Input: orders + users
Output: { user_id, total_revenue > 1000 }

Find Users Who Never Placed an Order

Medium
SQL

Write a query to find all users that have no orders in orders table.

Example:
Input: users and orders
Output: users without any orders

Use Subquery to Filter by Aggregate

Medium
SQL

Select all orders whose total_amount is greater than the average order total for all orders.

Example:
Input: orders table
Output: Orders above average value

Use Window Function for Running Total

Medium
SQL

For each user's orders, compute a running total (cumulative sum) of total_amount ordered by created_at.

Example:
Input: user orders
Output: Each row has running_total column

Add Primary Key & Not Null Constraints

Easy
SQL

Write a CREATE TABLE statement for users with id primary key, email NOT NULL and UNIQUE, created_at NOT NULL.

Example:
Input: users
Output: table with strong constraints

Normalize Orders & Order Items

Medium
SQL

Design relational schema for orders and order_items tables to avoid data duplication and support multiple items per order.

Example:
Input: order with 3 products
Output: 1 row in orders, 3 in order_items

Update Records Safely with WHERE

Easy
SQL

Write an UPDATE query to set is_active = 0 for users who haven't logged in since 1 year ago.

Example:
Input: last_login < '2024-01-01'
Output: Those users become inactive

Delete Records with Condition

Easy
SQL

Delete all rows from password_reset_tokens table where created_at is older than 30 days.

Example:
Input: tokens older than 30 days
Output: Cleaned up tokens

Calculate Daily Revenue from Orders

Medium
SQL

Group orders by date and calculate total revenue per day, sorted by date ascending.

Example:
Input: orders table
Output: { day:'2025-01-01', revenue:12345.67 }

Find Top N Products by Sales

Medium
SQL

Using order_items and products, find top 5 products by total revenue (quantity * price).

Example:
Input: order_items + products
Output: Top 5 products

Wrap Multiple Statements in a Transaction

Medium
SQL

Demonstrate how to transfer money between two accounts: deduct from one, add to another, safely inside a transaction.

Example:
Input: transfer 500 from A to B
Output: Either both balances updated or none

Create a Centered Card with Tailwind

Easy
Tailwind CSS

Make a card centered vertically & horizontally with padding, rounded corners, and drop shadow.

Example:
Input: Card layout
Output: Centered card with content visible

Build a Responsive Grid Gallery

Easy
Tailwind CSS

Create an image gallery using responsive grid columns (2 → 3 → 4 on larger screens).

Example:
Input: 6 images
Output: Responsive gallery layout

Create a Modern Button Style

Easy
Tailwind CSS

Style a primary button with hover transition, rounded-full, and focus ring.

Example:
Input: button
Output: Smooth interaction states

Create Sticky Navbar with Blur

Medium
Tailwind CSS

Build a sticky top navbar with backdrop blur and shadow on scroll.

Example:
Input: scroll page
Output: Navbar stays at top with blur

Create a Full Responsive Hero Section

Medium
Tailwind CSS

Hero with big heading, supporting text, CTA buttons & image — mobile first.

Example:
Input: Hero block
Output: Responsive split hero

Dark/Light Mode Using Tailwind Classes

Medium
Tailwind CSS

Use Tailwind's dark: modifier to support light/dark UI switch.

Example:
Input: toggle theme
Output: UI flips theme

Create Mobile Menu Slide Panel

Medium
Tailwind CSS

Mobile hamburger menu that reveals sidebar panel with animation.

Example:
Input: hamburger click
Output: Slide panel open/close

Create Pricing Table with Highlighted Plan

Medium
Tailwind CSS

Three pricing cards where middle one visually highlighted.

Example:
Input: pricing grid
Output: Professional layout

Create Notification Toast Alert

Medium
Tailwind CSS

Create sliding toast message top-right with fade animations.

Example:
Input: notify()
Output: Toast slides in/out

Animate Hover Scale on Cards

Easy
Tailwind CSS

Cards scale up slightly on hover for visual feedback.

Example:
Input: hover card
Output: Smooth scale animation

Hover Overlay on Image Cards

Medium
Tailwind CSS

Image darkens with text appearing centered on hover.

Example:
Input: hover
Output: Overlay visible

Form UI: Stylish Inputs + Error Message

Medium
Tailwind CSS

Styled input with focus ring and error state under it.

Example:
Input: validation
Output: Error appears

Avatar with Status Indicator

Easy
Tailwind CSS

Circular avatar image with a green dot for online presence.

Example:
Input: user online
Output: Avatar + green ping

Build Dashboard Stats Cards

Medium
Tailwind CSS

4 responsive stat cards in grid with icons & growth badges.

Example:
Input: cards
Output: Admin dashboard metrics

Glassmorphism UI Card

Medium
Tailwind CSS

Glass effect card with backdrop blur and soft border light.

Example:
Input: frosted background
Output: Glass UI look

Animated Skeleton Loader

Medium
Tailwind CSS

Grey placeholder skeleton shimmer animation for loading cards.

Example:
Input: loading card
Output: Pulse animation

Tooltip on Hover

Easy
Tailwind CSS

Show hidden text bubble above icon on hover.

Example:
Input: hover info
Output: Tooltip visible

Responsive 2-Column Blog Layout

Medium
Tailwind CSS

Main content + sidebar layout that stacks vertically on mobile.

Example:
Input: page layout
Output: Perfect blog UI

Tabs UI Switching (No JS for Layout)

Medium
Tailwind CSS

Horizontal tabs with active styling; content panel hidden via tailwind utilities toggled by JS.

Example:
Input: tab click
Output: UI switches

Create Footer with Social Icons

Easy
Tailwind CSS

Fixed footer with 3–4 social links styled as icon-only buttons.

Example:
Input: footer icons
Output: Clean footer UI

Setup Basic Bootstrap Page

Easy
Bootstrap

Create a basic HTML page that correctly includes Bootstrap CSS and JS and shows a 'Hello Bootstrap' heading.

Example:
Input: open index.html
Output: Properly styled heading

Create Two-Column Responsive Layout

Easy
Bootstrap

Create a layout where on mobile content stacks, and on md+ screens it becomes 2 equal columns.

Example:
Input: mobile view
Output: single column

Build Three Card Layout with Equal Height

Easy
Bootstrap

Create a row with 3 cards in columns that are equal height on desktop and stack on mobile.

Example:
Input: 3 features
Output: 3 clean feature cards

Create Navbar with Brand & Nav Links

Easy
Bootstrap

Build a responsive navbar with brand logo on left and nav links on right that collapse into hamburger on mobile.

Example:
Input: mobile view
Output: collapsed menu

Highlight Active Link in Navbar

Easy
Bootstrap

Use .active class to highlight the current page link in the navbar and ensure it looks visually different.

Example:
Input: Home page
Output: Home link looks active

Create Dismissible Alert Messages

Easy
Bootstrap

Create success/error Bootstrap alerts that can be closed (dismissed) by the user.

Example:
Input: click close icon
Output: Alert smoothly disappears

Create Modal with Form Inside

Medium
Bootstrap

Build a modal that opens from a button, contains a simple login form (email/password), and closes with buttons or backdrop.

Example:
Input: click 'Login' button
Output: Modal with form appears

Build Responsive Table with Striped Rows

Easy
Bootstrap

Create a table that has striped rows, hover effect, and scrolls horizontally on small screens.

Example:
Input: mobile view
Output: Scrollable table

Create Custom Styled Buttons with Variants

Easy
Bootstrap

Use Bootstrap button variants like primary, outline, danger, and size (sm/lg) for different actions.

Example:
Input: primary & outline
Output: Different visual hierarchy

Build Responsive Login Form with Validation Styles

Medium
Bootstrap

Create a centered login card with email/password inputs, using .is-invalid & .invalid-feedback for validation messages.

Example:
Input: invalid email
Output: red border + error text

Create Hero Section Using Bootstrap Utilities

Medium
Bootstrap

Design a hero with heading, text, CTA button, and illustrative image using grid and spacing utilities.

Example:
Input: desktop
Output: image + text side by side

Use Bootstrap Utility Classes for Spacing & Typography

Easy
Bootstrap

Refine a section by using margin, padding, font-size, and text color utilities instead of custom CSS.

Example:
Input: raw HTML
Output: cleaner layout using utilities

Implement Tabs Component Using Nav & Tab Content

Medium
Bootstrap

Create tabbed content using Bootstrap nav tabs and tab-content sections with fade animations.

Example:
Input: click 'Profile' tab
Output: Profile pane visible

Use Carousel for Testimonials

Medium
Bootstrap

Build a testimonial slider using Bootstrap carousel with indicators and controls.

Example:
Input: click next
Output: show next testimonial

Add Pagination Component for Blog List

Easy
Bootstrap

Use Bootstrap pagination component to display page numbers with active state and disabled previous/next.

Example:
Input: page 2
Output: 2 active, prev enabled

Create Toast Notifications Using Bootstrap JS

Medium
Bootstrap

Implement a toast that appears at bottom-right when a button is clicked, using Bootstrap toast component.

Example:
Input: click 'Save'
Output: Toast appears 'Saved successfully'

Use Offcanvas Sidebar for Mobile Navigation

Medium
Bootstrap

Create an offcanvas sidebar menu that appears from the left when clicking a burger icon.

Example:
Input: click menu icon
Output: Sidebar overlays from left

Create Badge & Pill Styles for Tags

Easy
Bootstrap

Show tags or category labels using Bootstrap badges and pill style.

Example:
Input: multi tags
Output: pill badges with spacing

Build Simple Dashboard Layout with Sidebar

Medium
Bootstrap

Create a layout with fixed vertical sidebar (left) and scrollable content area (right) using Bootstrap grid & utilities.

Example:
Input: desktop view
Output: sidebar + content layout

Create Contact Form Section with Responsive Columns

Medium
Bootstrap

Build a contact section with text on left and form on right; on mobile, they stack vertically.

Example:
Input: desktop
Output: two-column contact section

Initialize Git Repo & First Commit

Easy
Git & GitHub

Create a new project folder, initialize a Git repository, add a README.md, and make the first commit.

Example:
Input: git status after commit
Output: nothing to commit, working tree clean

Stage & Unstage Changes Correctly

Easy
Git & GitHub

Modify multiple files, then stage only specific ones, unstage one file, and finally commit selectively.

Example:
Input: git status
Output: some files staged, some not

Write Meaningful Commit Messages

Easy
Git & GitHub

Follow a simple convention like 'type: short summary' (feat, fix, chore, docs) and write 3 example commits.

Example:
Input: implement login
Output: feat: add basic login form

View & Filter Commit History

Easy
Git & GitHub

Use git log with different options to see compact one-line history, graph view, and filter by author.

Example:
Input: git log --oneline -5
Output: last 5 commits in one line

Understand git reflog vs git log

Medium
Git & GitHub

Experiment with commit, reset, and checkout, then observe the difference between git log and git reflog.

Example:
Input: git reflog
Output: HEAD@{0}, HEAD@{1} ... history of actions

Undo a Commit Safely (Without Losing Work)

Medium
Git & GitHub

Practice undoing last commit using git reset --soft, and git revert for already pushed commits.

Example:
Input: bad commit pushed
Output: use git revert <hash>

Create & Switch Branches

Easy
Git & GitHub

Create a new feature branch from main, switch to it, make a commit, then switch back.

Example:
Input: git branch
Output: * feature/navbar and main listed

Merge Feature Branch into Main

Medium
Git & GitHub

Create a feature branch, add a commit, then merge it into main and delete the branch.

Example:
Input: git log --oneline --graph
Output: merge visible in history

Resolve a Simple Merge Conflict

Medium
Git & GitHub

Intentionally create a merge conflict by editing the same line on two branches, then resolve it and complete the merge.

Example:
Input: git status
Output: both modified: file.js (unmerged paths)

Compare git merge vs git rebase

Medium
Git & GitHub

Create two branches, make separate commits, and then once integrate using merge, and another time using rebase to see the difference in history.

Example:
Input: log after merge vs rebase
Output: one has merge node, other is linear

Use .gitignore to Exclude Files

Easy
Git & GitHub

Create a .gitignore file to ignore node_modules, build artifacts, and environment files like .env.

Example:
Input: git status
Output: node_modules not listed

Connect Local Repo to GitHub Remote

Easy
Git & GitHub

Create an empty repo on GitHub, then add it as a remote, push local main branch, and verify remote is linked.

Example:
Input: git remote -v
Output: origin https://github.com/... (fetch/push)

Clone Existing GitHub Repository

Easy
Git & GitHub

Clone a public GitHub repository to your machine and run git commands inside it.

Example:
Input: git clone repo-url
Output: folder created with repo content

GitHub Fork → Branch → PR Workflow

Medium
Git & GitHub

Fork an open-source repo on GitHub, clone your fork, create a branch, make a change, push, and open a Pull Request.

Example:
Input: PR view
Output: diff + conversation on GitHub

Sync Your Fork with Upstream Repository

Medium
Git & GitHub

Add original repo as upstream remote, fetch changes, and update your main branch to match upstream/main.

Example:
Input: git remote -v
Output: origin + upstream remotes

Use Git Stash to Save WIP Changes

Medium
Git & GitHub

Make some changes without committing, stash them, switch branches, then later re-apply the stash.

Example:
Input: git stash list
Output: stash@{0}: On main: message

Tag a Release Version & Push Tags

Medium
Git & GitHub

Create an annotated tag for a release (v1.0.0), list tags, and push tags to GitHub.

Example:
Input: git tag
Output: v1.0.0 listed

Blame & Diff to Find Who Broke What

Medium
Git & GitHub

Use git blame to see who last changed each line in a file, and git diff to compare versions.

Example:
Input: git blame src/index.js
Output: commit hash + author + line

Create a Simple GitHub Actions CI Workflow

Medium
Git & GitHub

Set up a basic GitHub Actions workflow that runs npm test on every push and pull request to main.

Example:
Input: open PR
Output: CI job runs tests automatically

Design a Simple Git Branching Strategy

Medium
Git & GitHub

Define a branching strategy using main, develop (optional), and feature/* branches, and document rules for where to commit and how to merge.

Example:
Input: team onboarding
Output: they follow clear branching rules

MERN User Authentication System

Medium
FullstackReactNode.jsExpress.jsMongoDBAPI / REST

Create signup + login + logout + protected routes using JWT and hashed passwords.

Example:
Input: invalid token
Output: 401 Unauthorized

Refresh Token Authentication with Expiry

Hard
FullstackAuthReactNode.jsMongoDB

Implement access + refresh tokens with expiration & rotation for maximum security.

Role-Based Access Control (Admin/User)

Hard
FullstackReactNode.jsMongoDB

Add admin role that can manage all users, while normal users can manage only themselves.

Admin Dashboard with Stats Overview

Medium
FullstackReactChart.jsNode.js

Build dashboard cards showing total users, active users, recent signups using charts.

Full CRUD Product Management

Medium
FullstackNode.jsExpress.jsMongoDBReact

Add Product create, read, update, delete with images & categories.

Image Upload with Cloud Storage

Hard
FullstackNode.jsAWSCloudinary

Upload product images to Cloud storage and store URL in DB.

Next.js App Router Contact Form Email

Medium
Next.jsFullstackNode.js

Send email from Next.js API using SMTP / Resend / EmailJS.

Forgot Password + Email OTP Verification

Hard
FullstackAuthMongoDBNode.js

Send OTP to email + allow user to reset password securely.

Multi-Factor Authentication (MFA)

Expert
FullstackSecurity

Add 2FA using TOTP (Google Authenticator) or email OTP.

Infinite Scroll Blog Feed

Medium
ReactNext.jsMongoDB

Fetch more posts on scroll instead of pagination controls.

Next.js Blog with Markdown Support

Medium
Next.jsFullstack

Support Markdown files as blog posts + dynamic routing.

SEO Optimization + Sitemap + Robots.txt

Medium
Next.jsSEO

Add SEO improvements including sitemap generation and meta tags.

WebSockets Live Chat System

Hard
Node.jsSocket.IO

Allow real-time messaging with typing indicator & online users list.

Real-Time Notifications System

Hard
WebSocketsMongoDBExpress.js

Push notification alerts to users on new message & events.

Stripe Checkout Payments Integration

Hard
StripeFullstackExpress.jsReact

Add checkout, success page, order history saved in DB.

SQL + Prisma User CRUD App

Medium
SQLPrismaFullstackNode.js

Create full CRUD user system in SQL DB using Prisma ORM.

Display Data with Relational Joins

Hard
SQLPrisma

Join users and their posts + show total posts count.

Dockerize Fullstack App for Deployment

Hard
DockerFullstack

Containerize backend + frontend with Docker + docker-compose.

Next.js Incremental Static Regeneration (ISR)

Medium
Next.js

Generate pages at build time + revalidate automatically.

Fullstack Todo App

Easy
ReactNode.jsMongoDB

Create Todo app with login + user-specific tasks