Languages · project ideas
JavaScript Project Ideas
Build real JavaScript projects from DOM basics to full async apps, covering core language features, browser APIs, and modern ES6+ patterns.
Interactive To-Do List
beginner
Build a to-do app that lets users add, complete, and delete tasks with data persisted in localStorage.
Requirements
- Add tasks via input field and Enter key or button click
- Mark tasks complete with a strikethrough toggle
- Delete individual tasks
- Filter tasks by All / Active / Completed
- Persist tasks to localStorage so they survive page refresh
DOM manipulationEvent listenerslocalStorage APIArray methods
Live Weather Dashboard
beginner
Fetch and display current weather for any city using the OpenWeatherMap API with dynamic UI updates.
Requirements
- Accept a city name input and fetch weather on submit
- Display temperature, humidity, wind speed, and weather icon
- Show a loading spinner while fetching
- Handle and display errors for invalid cities
- Toggle between Celsius and Fahrenheit
Fetch APIPromisesJSON parsingDOM updatesError handling
Quiz Game with Timer
beginner
Create a multiple-choice quiz that tracks scores, enforces a per-question countdown timer, and shows a results screen.
Requirements
- Load at least 10 questions from a local JSON file
- Display a countdown timer per question that auto-advances on expiry
- Highlight correct and incorrect answers after selection
- Track and display current score in real time
- Show a final score screen with a restart button
setInterval / clearIntervalJSON data handlingEvent delegationState managementDOM rendering
Drag-and-Drop Kanban Board
intermediate
Build a Trello-style board with columns and cards that can be reordered via drag-and-drop.
Requirements
- Create, rename, and delete columns dynamically
- Add and delete cards within any column
- Drag cards between columns and reorder within a column using the HTML5 Drag and Drop API
- Persist board state to localStorage
- Animate card movement with CSS transitions triggered via JS
HTML5 Drag and Drop APICSS class manipulationComplex state managementlocalStorage serializationEvent delegation
Real-Time Chat UI with WebSockets
intermediate
Build a browser chat client that connects to a public WebSocket echo server and simulates a live chat experience.
Requirements
- Connect to a WebSocket server on page load and display connection status
- Send messages on Enter key or button click
- Display sent and received messages in a scrolling thread with timestamps
- Show a typing indicator that disappears after 2 seconds of inactivity
- Gracefully handle disconnections with automatic reconnect attempts
WebSocket APIAsync event handlingDebouncingUI state feedbacksetInterval / setTimeout
Infinite Scroll Image Gallery
intermediate
Build a photo gallery that lazily fetches images from the Unsplash API as the user scrolls near the bottom.
Requirements
- Fetch and render an initial batch of photos on load
- Detect scroll position using IntersectionObserver to trigger next page fetch
- Show skeleton loaders while fetching
- Support a search input to filter photos by keyword
- Debounce the search input to limit API calls
IntersectionObserver APIDebouncingPagination logicFetch APICSS skeleton loaders
Browser-Based Markdown Editor
intermediate
Create a split-pane editor that renders a live HTML preview of Markdown as the user types.
Requirements
- Two-pane layout: raw Markdown input on left, rendered HTML preview on right
- Parse and render Markdown in real time using a library like marked.js
- Support syntax-highlighted code blocks via highlight.js
- Export the rendered content as a downloadable HTML file
- Save editor content to localStorage automatically
Third-party library integrationBlob / URL API for file downloadInput eventsString parsinglocalStorage
JavaScript Runtime Performance Profiler
advanced
Build a tool that lets users paste JS code snippets, runs them in a sandboxed Worker, and reports execution time and memory usage.
Requirements
- Accept code input in a CodeMirror editor with syntax highlighting
- Execute code inside a Web Worker to avoid blocking the main thread
- Measure execution time using performance.now() and report results
- Catch and display runtime errors from the Worker safely
- Display a bar chart of benchmark runs using Canvas API
Web Workersperformance APICanvas APISecurity sandboxingAsync message passing
Offline-First Budget Tracker PWA
advanced
Build a Progressive Web App for tracking income and expenses that works fully offline and syncs when reconnected.
Requirements
- Add, categorize, and delete transactions with running balance
- Store all data in IndexedDB for offline persistence
- Register a Service Worker to cache app shell and assets
- Queue transactions made offline and sync to a mock REST API on reconnect
- Display spending by category as an SVG pie chart built without libraries
IndexedDBService WorkersBackground Sync APISVG drawingPWA manifest