JavaScript

30 JavaScript Project Ideas
from Beginner to Advanced

Curated JS projects with specific tools, honest time estimates, and what you'll actually learn — not generic tutorial fodder.

Beginner — Vanilla JS Intermediate — React/Vue Advanced — Node / Full-Stack

How to use this list

Each project includes the specific library or tooling you should use (not just "build a React app"), a realistic time estimate, and what concrete skills it teaches. The estimates assume you already know the level's prerequisites — add 50% if you're learning the concepts while building.

The real rule: pick something just above your comfort zone and build it without following a tutorial. Use the docs. Get stuck. Debug it. That's when the learning sticks. Finishing a project you built with friction beats finishing a tutorial you followed without thinking.

Beginner

Vanilla JavaScript Projects

No build tools, no frameworks — just HTML, CSS, and JavaScript. Each project teaches a core browser API or pattern. Prerequisites: basic HTML/CSS, JavaScript syntax basics.

1. To-Do List App

The classic CRUD app — add, complete, and delete tasks. Persist the list in localStorage so it survives page refreshes.

vanilla JS localStorage 4–6 hrs
You'll learn: DOM manipulation, event handling, localStorage read/write, basic CRUD patterns
2. Pomodoro Timer

25-minute work sessions with 5-minute breaks. Animated countdown ring, sound alert, session counter. Pause and reset controls.

vanilla JS setInterval SVG 5–7 hrs
You'll learn: Timer logic with setInterval, SVG animation, state machines (idle/running/paused/break), CSS transitions
3. Weather App

Search any city and show current weather + 5-day forecast. Use Open-Meteo (free, no API key needed) with geocoding.

vanilla JS fetch API Open-Meteo 6–8 hrs
You'll learn: async/await, fetch API, JSON parsing, error handling, chained API calls (geocoding → weather)
4. Expense Tracker

Add income and expenses with categories. Show running balance, totals by category, and a simple bar chart drawn with CSS.

vanilla JS localStorage 6–8 hrs
You'll learn: Array filter/reduce, data aggregation, dynamic DOM rendering, data visualization with pure CSS
5. Quiz App

Multiple-choice quiz with 10+ questions, shuffled order, timed questions (optional), and a final score screen with correct answers shown.

vanilla JS JSON 5–7 hrs
You'll learn: Array shuffle (Fisher-Yates), multi-step UI state, object destructuring, dynamic rendering from data
6. Random Quote Generator

Fetch quotes from a free API (quotable.io), display one with author, add copy-to-clipboard and Twitter share buttons.

vanilla JS Clipboard API 3–4 hrs
You'll learn: Fetch API, loading states, Clipboard API, building URL-encoded share links
7. Image Carousel

Smooth image slider — no library. Arrow navigation, dot indicators, auto-advance with pause on hover, keyboard arrow support.

vanilla JS CSS transitions 5–7 hrs
You'll learn: CSS transform/transition, modular arithmetic (wrap-around index), keyboard event handling, accessibility (aria-label)
8. Calculator

A working calculator with proper operator precedence, chained operations, and edge-case handling (divide by zero, multiple decimals).

vanilla JS string parsing 5–7 hrs
You'll learn: String parsing, floating point quirks, state machine design, keyboard event support
9. Color Palette Generator

Click to generate 5-color harmonious palettes (complementary, triadic, etc.). Show HEX, RGB, and HSL values. Copy on click.

vanilla JS HSL color math 5–7 hrs
You'll learn: HSL/RGB/HEX color conversions, color theory (hue rotation), Clipboard API, URL params for shareable palettes
10. Typing Speed Test

Display a random passage and measure typing speed (WPM) and accuracy in real time. Show a results screen with stats at the end.

vanilla JS Performance API 6–8 hrs
You'll learn: Real-time string comparison, Performance.now() for high-res timing, character-level diff rendering, input event handling
Intermediate

React / Modern JS Projects

Component-based apps with real APIs, state management, and modern tooling. Use Vite for dev setup. Prerequisites: React basics (hooks, props, state), npm, fetch API.

11. GitHub Profile Viewer

Search any GitHub username and display their profile, top repos, stars, and contribution language stats using the public GitHub API.

React GitHub API Vite 8–10 hrs
You'll learn: React hooks (useState, useEffect), API pagination, loading + error states, debounced search input
12. Live Markdown Editor

Two-pane editor: raw markdown on the left, rendered preview on the right. Sync scroll, syntax highlighting, export to HTML.

React marked.js highlight.js 8–10 hrs
You'll learn: Controlled inputs at scale, dangerouslySetInnerHTML safely, synchronized scroll, localStorage autosave
13. Recipe Finder

Search recipes by ingredient or name using TheMealDB API (free, no auth). Filter by cuisine, category. Save favorites locally.

React TheMealDB API 8–12 hrs
You'll learn: Multi-param API queries, client-side filtering/sorting, custom hooks (useFavorites), grid layout
14. Budget Dashboard

Full CRUD budget tracker with income/expense categories, monthly totals, and interactive bar + pie charts using Recharts.

React Recharts Zustand 14–18 hrs
You'll learn: Recharts data format, Zustand for global state, date filtering, data aggregation patterns
15. Kanban Board

Drag-and-drop task board with multiple columns. Add/edit/delete cards and columns. Persist to localStorage. Use @dnd-kit.

React @dnd-kit Zustand 14–20 hrs
You'll learn: @dnd-kit sensors/modifiers, complex state with immutable updates, optimistic UI, inline editing
16. Movie Watchlist App

Search movies via OMDB API (free key), view details, add to watchlist, sort by rating or year. Filter by genre.

React OMDB API 8–12 hrs
You'll learn: Debounced API search, multi-filter UI, React Router for movie detail pages, URL params
17. Countdown Timer App

Create multiple named countdowns simultaneously. Add event name, date, color. Show days/hours/minutes/seconds for each. Alert on completion.

React date-fns Zustand 8–10 hrs
You'll learn: setInterval with cleanup in useEffect, date-fns duration math, concurrent timer management, Notification API
18. Portfolio with Theme Switcher

Animated personal portfolio with 3+ color themes, smooth section transitions, a projects grid, and a working contact form (Formspree).

React CSS variables Framer Motion 14–18 hrs
You'll learn: CSS custom property theming, Framer Motion animations, form submission without a backend, responsive design
19. Infinite Scroll Feed

Paginated content feed that loads more items as you scroll. Use IntersectionObserver — no scroll event listeners. Works with any paginated API.

React IntersectionObserver React Query 8–12 hrs
You'll learn: IntersectionObserver API, React Query infinite queries, skeleton loading, cursor-based pagination
20. Multi-Step Form with Validation

4-step form wizard (account → profile → preferences → review). Real-time validation, progress bar, back/forward navigation, submit confirmation.

React React Hook Form Zod 10–14 hrs
You'll learn: React Hook Form multi-step patterns, Zod schema validation, form state persistence between steps, accessibility
Advanced

Node.js, TypeScript & Full-Stack Projects

Backend APIs, real-time systems, desktop apps, and production-grade patterns. Prerequisites: React proficiency, Node.js basics, comfort with terminal and npm.

21. REST API + React Dashboard

Build a full REST API with Express + better-sqlite3, then a React frontend that uses it. CRUD operations, pagination, filtering, sorting.

Node.js Express SQLite React 20–30 hrs
You'll learn: REST API design, SQL queries, CORS, JSON middleware, connecting a React frontend to a local API, environment variables
22. Real-Time Chat App

WebSocket-based group chat with named rooms. Node.js + Socket.io backend, React frontend. Show who's online, typing indicators.

Node.js Socket.io React 16–24 hrs
You'll learn: WebSocket events, Socket.io rooms/namespaces, real-time UI updates, deploy Node.js to Railway or Render
23. Browser Extension

Build a real Chrome/Firefox extension — tab manager, reading time estimator, or custom new tab page. Publish to the Chrome Web Store.

vanilla JS Chrome Extension API Manifest V3 10–18 hrs
You'll learn: Extension manifest, background service workers, content scripts, chrome.storage API, cross-origin messaging
24. TypeScript CLI Tool

Build a useful command-line tool (project scaffolder, file organizer, log parser) in TypeScript. Test it. Publish to npm.

TypeScript Node.js Commander.js 10–16 hrs
You'll learn: TypeScript configuration, Commander.js argument parsing, Node.js fs/path APIs, npm package publishing, bin scripts
25. Progressive Web App (PWA)

Take an existing React app and make it installable with full offline support. Implement a cache-first strategy with Workbox.

React Workbox Service Workers 10–14 hrs
You'll learn: Service worker lifecycle, Workbox caching strategies, Web App Manifest, installability requirements, background sync
26. GraphQL API

Build a GraphQL API with Apollo Server 4, TypeScript, and a SQLite database. Include queries, mutations, subscriptions, and a React client.

TypeScript Apollo Server Apollo Client 18–26 hrs
You'll learn: GraphQL schema-first design, resolvers, DataLoader for N+1 prevention, subscriptions with WebSockets, code-first vs schema-first tradeoffs
27. Authentication System

Complete auth flow: signup, login, JWT access tokens + refresh tokens, password reset via email, protected routes. No auth library shortcuts.

Node.js Express PostgreSQL JWT 20–30 hrs
You'll learn: JWT signing/verification, refresh token rotation, bcrypt password hashing, httpOnly cookie security, rate limiting
28. Electron Desktop App

Cross-platform desktop app with Electron + React. Ideas: local markdown editor, clipboard manager, habit tracker, screen time monitor.

Electron React TypeScript 16–24 hrs
You'll learn: Electron IPC (main ↔ renderer), native OS APIs, auto-updater, code signing for distribution, electron-builder packaging
29. Next.js Full-Stack App

Production-grade full-stack app with Next.js App Router, Prisma ORM, PostgreSQL (Neon.tech free tier), and NextAuth for authentication.

Next.js Prisma NextAuth TypeScript 30–50 hrs
You'll learn: Next.js App Router, React Server Components, Prisma schema migrations, NextAuth session management, Vercel deployment
30. Open Source Contribution

Find a "good first issue" in a major JS project (React, Vite, Next.js, TypeScript, or an npm package you use). Make a real, merged PR.

TypeScript / JS Any major repo variable
You'll learn: Reading large codebases, contribution guidelines, real code review, working with maintainers, git branching conventions

Frequently Asked Questions

What JavaScript project should I build first as a beginner?

Start with the To-Do List or Pomodoro Timer. They're small enough to finish in a weekend but teach the four core skills every JS developer needs: DOM manipulation, event handling, managing UI state, and persisting data with localStorage. Don't start with a weather app or API project until you can build a working to-do list from memory.

What are the best JavaScript projects for a portfolio?

For employers, the best portfolio projects show you can finish things and make real technical decisions. Strong choices from this list: the GitHub Profile Viewer (React + real API), the Kanban Board (complex state management with drag-and-drop), and the REST API + Dashboard (full-stack thinking). Avoid cloning Netflix or Spotify — they're overbuilt and underfinished. One genuinely working CRUD app beats three abandoned clones.

Should I learn React or stay with vanilla JS?

Build your first two or three projects in vanilla JS. You'll understand WHY React exists the moment you try to maintain complex UI state without it. After that, React is the pragmatic choice: most jobs require it, the ecosystem is excellent (Vite, React Query, Zustand), and the component model scales well. Learn Vue or Svelte after React if you're curious — the concepts transfer.

How realistic are the time estimates?

They assume you know the prerequisites and spend most of your time building, not learning fundamentals. If you're learning while building, multiply by 1.5–2x. If you're copying from a tutorial, divide by 4 — but then you haven't actually built it. The estimates are for "build from scratch with docs open, no tutorial."

Which free APIs work best for JavaScript projects?

Open-Meteo (weather, no API key), GitHub API (repos, users, no key for public data), TheMealDB (recipes, free), quotable.io (quotes, free), and OMDB (movies, free key). For the beginner and intermediate projects on this list, you won't need to pay for any API access.

How do I avoid getting stuck halfway through a project?

Scope it smaller. If you're stuck after 2 days, the project is too big for your current skill level — cut 50% of the features and finish the core. Done and deployed beats ambitious and abandoned. Ship a working v1, then add features in v2. The ability to finish is more valuable than the ability to plan ambitiously.

Need a randomized idea?

Use the Ship This Weekend generator for a unique side project concept — different every time, with a shareable permalink.

Try the Generator Python Projects