← Back to home

10 MERN Stack Project Ideas (Beginner to Advanced)

A curated list of MERN stack project ideas with implementation details — schemas, endpoints, and the interesting engineering challenges in each one. Pick one that stretches you and ship it to your portfolio.

1. Todo List with Auth (Beginner)

Stack: React + Express + MongoDB + JWT

Single `todos` collection with `{ user_id, title, done, createdAt }`. REST endpoints: GET/POST/PATCH/DELETE `/api/todos`. Add JWT auth middleware so each user only sees their own todos. Great for learning protected routes, optimistic UI, and Mongoose schemas.

2. Markdown Notes App (Beginner)

Stack: React (react-markdown) + Express + MongoDB

Store notes as `{ title, body, tags, updatedAt }`. Add full-text search with a MongoDB text index on `title` and `body`. Auto-save drafts via debounced PATCH calls. Demonstrates indexing, debouncing, and rich-text rendering.

3. URL Shortener (Beginner)

Stack: Express + MongoDB + nanoid + React dashboard

Generate 7-char slugs with `nanoid`. Store `{ slug, target, clicks, ownerId }`. A redirect route increments `clicks` atomically with `$inc`. Build a React dashboard with a chart of top links. Teaches atomic updates and Express redirects.

4. Blog Platform with Comments (Intermediate)

Stack: MERN + Cloudinary uploads + role-based auth

Two collections: `posts` and `comments` (referenced by `post_id`). Implement roles (`reader`, `author`, `admin`) via a separate `user_roles` collection. Upload cover images directly to Cloudinary using signed presigned uploads from Express.

5. Job Board (Intermediate)

Stack: MERN + filtering + pagination

Jobs schema: `{ title, company, location, tags, remote, salaryMin, salaryMax, postedAt }`. Build a filtered list with cursor-based pagination using `_id` for stable ordering. Add a saved-jobs feature scoped per user. Showcases query design and indexes.

6. E-commerce Storefront (Intermediate)

Stack: MERN + Stripe Checkout + Redux Toolkit

Collections: `products`, `carts`, `orders`. Persist cart in MongoDB for logged-in users and in localStorage for guests. Use Stripe Checkout for payments and verify orders via Stripe webhook into `/api/webhooks/stripe`. Production-ready pattern for online stores.

7. Realtime Chat App (Intermediate → Advanced)

Stack: MERN + Socket.IO + JWT

Rooms collection plus a capped messages collection for fast tail reads. Authenticate the Socket.IO handshake with the JWT. Implement typing indicators, read receipts, and presence using Redis adapter when scaling horizontally.

8. Kanban Board with Drag-and-Drop (Advanced)

Stack: MERN + @dnd-kit + optimistic updates

Schemas for `boards`, `columns`, `cards`. Use a `sort_order` float so reordering is a single update without renumbering every sibling. Push live updates via Server-Sent Events. Great showcase of complex client state plus efficient ordering.

9. SaaS Analytics Dashboard (Advanced)

Stack: MERN + MongoDB Aggregation Pipeline + Recharts

Ingest events via `/api/track` and aggregate with `$group` / `$dateTrunc` for daily/weekly rollups. Cache hot queries in Redis. Add API keys per workspace and rate-limit with a token bucket. Demonstrates analytics architecture end-to-end.

10. Real-Time Social Dashboard (Advanced)

Stack: MERN + Socket.IO + Redis Streams + Tailwind

Feed of posts with likes, comments, and follows. Push fan-out events through Redis Streams so multiple Node workers stay in sync. Use MongoDB change streams to broadcast new posts live. Top-tier portfolio piece covering scale, realtime, and architecture.

Want to see these in action? Browse my portfolio for live MERN projects built with the same patterns.