All free guides

Get shortlisted

Project Section Formula

Priya spends four of her six seconds on projects. Aarav's entry read "Chat App – real-time chat using Socket.io." Nothing to ask. Riya's read like the box below, and Priya's first question wrote itself: "Tell me about the out-of-order messages."

10 min readFree, no email neededUpdated 11 September 2026

Step 1 · Resume

The formula

🔍

Priya spends four of her six seconds on projects. Aarav's entry read "Chat App – real-time chat using Socket.io." Nothing to ask. Riya's read like the box below, and Priya's first question wrote itself: "Tell me about the out-of-order messages."

Four lines: a title, two bullets that prove something with a number, and the hardest part.

HostelTalk · Node, Socket.io, Redis, React · Live · GitHub
  • Built a group chat with rooms and typing indicators, handling 200 concurrent users in a load test with under 150 ms delay, using Socket.io and Redis pub/sub.
  • Reduced memory per connection by 40% by moving message history from server RAM to Redis with a 500-message cap per room.
  • Hard part: messages arrived out of order under load. Fixed with a server-side sequence number and re-ordering on the client.
Title lineName · stack in 3 to 5 words · Live · GitHub.
Bullet 1What it is, who used it, how many. X, Y, Z.
Bullet 2Something you improved: a before and an after number.
Hard partThe problem that cost you the most hours, and the fix.

The four lines, one by one

Title line

  • A real name, not "Project 1" or "Chat Application". A name says you thought of it as a product.
  • The stack in 3 to 5 words. Priya searches the PDF for "React", "Spring Boot", "PostgreSQL". Put them where the search finds them.
  • Two links: Live and GitHub. "Live" means it opens on her phone while your laptop is off. No live link? A 60-second demo video link counts.

Bullets 1 and 2: the XYZ shape

Did X, measured by Y, by doing Z. Start with a verb. One number at least. End with the stack if it is not on the title line. Two lines maximum per bullet.

Bullet 3: the hard part

Start it with the words "Hard part:". Name the problem in plain words, then the fix. This bullet is allowed to have no number. It is the one bullet the interviewer will ask about, so pick a problem you can talk about for five minutes.

Rule of thumb: two projects, three bullets each, most recent or strongest first. Never five projects with one line each. Depth beats count.

10 rewrites · before and after

To-do app, weather app

1To-do app
BeforeTo-Do App – Made a to-do app using HTML, CSS and JavaScript where users can add, delete and mark tasks as done.
TaskTrail · React, Node, PostgreSQL · Live · GitHub
  • Built a task manager with recurring tasks and reminders, used daily by 35 hostel-mates for 2 months, with a React front end and a Node/PostgreSQL API.
  • Reduced missed reminders to zero across 600+ tasks by moving from browser timers to a server-side cron job.
  • Hard part: edits made offline on two devices overwrote each other. Fixed with a last-write timestamp and a merge screen for conflicts.

What changed: a name, real users (35), a before/after number, and a problem worth asking about.

2Weather app
BeforeWeather App – A weather app that shows the current temperature of any city using the OpenWeather API.
MonsoonWatch · Next.js, OpenWeather API, Vercel · Live · GitHub
  • Built a 7-day forecast with rain alerts for 40 Indian cities, used by 120 people during monsoon 2025, on Next.js and the OpenWeather API.
  • Cut API calls by 85% (about 2,000 to 300 a day) by caching each city's response on the server for 30 minutes.
  • Hard part: the free API limit of 1,000 calls a day was hit on day two. Solved with server caching and grouping nearby requests.

What changed: the same tutorial project became a story about a real limit and how you worked around it.

E-commerce clone, chat app

3E-commerce clone
BeforeE-commerce Website – Amazon clone with login, product listing, cart and checkout using the MERN stack.
KiranaKart · MERN, Razorpay (test mode), Cloudinary · Live · GitHub
  • Built a store for a local kirana shop with 140 products, cart and Razorpay test checkout, completing 90 mock orders with 0 payment errors, on the MERN stack.
  • Sped up product search from 900 ms to 120 ms across 140 items by adding a MongoDB text index and a debounced search box.
  • Hard part: cart totals drifted by a few paise on discounts. Fixed by storing prices as integer paise instead of decimals.

What changed: "Amazon clone" became a shop with an owner. The paise bug is a classic interview conversation.

4Chat app
BeforeChat Application – Real-time chat app made using Socket.io where users can send messages to each other.
HostelTalk · Node, Socket.io, Redis, React · Live · GitHub
  • Built a group chat with rooms and typing indicators, handling 200 concurrent users in a load test with under 150 ms delay, using Socket.io and Redis pub/sub.
  • Reduced memory per connection by 40% by moving message history from server RAM to Redis with a 500-message cap per room.
  • Hard part: messages arrived out of order under load. Fixed with a server-side sequence number and re-ordering on the client.

What changed: a load-test number. Run one yourself with k6 or autocannon; it takes an evening.

Portfolio, library management

5Portfolio website
BeforePersonal Portfolio – My portfolio website built with HTML, CSS and JS showing my projects and skills.
aaravsharma.dev · Astro, Tailwind, Cloudflare Pages · Live · GitHub
  • Built a portfolio scoring 100/100 on Lighthouse performance and loading in 0.6 s on 3G, using Astro with zero client-side JavaScript.
  • Increased visits from GitHub to the live site to 340 in 2 months (tracked with Plausible) by adding a one-page case study per project.
  • Hard part: screenshots made every page 3 MB. Fixed with build-time WebP conversion and lazy loading, taking pages under 300 KB.

What changed: a portfolio has no users, so the numbers are speed and size. Both are free to measure in Chrome DevTools.

6Library management
BeforeLibrary Management System – Java project for managing books, members and issue/return using MySQL.
ShelfLog · Java, Spring Boot, MySQL, Thymeleaf · GitHub · Demo video
  • Built an issue/return system for the department library of 4,000 books and 600 members, replacing a paper register, using Spring Boot and MySQL.
  • Eliminated double-issue of the same book (3 to 4 cases a month) with a database transaction and a unique constraint on active issues.
  • Hard part: fines across holidays. Solved with a holiday table and a query that counts only working days.

What changed: a college assignment became a system with a real owner. Ask your department library; most say yes.

Attendance system, quiz app

7Attendance system
BeforeAttendance Management System – Web app to mark student attendance made with PHP and MySQL.
QRoll · Flask, PostgreSQL, React · Live · GitHub
  • Built a QR-based attendance system used by 3 faculty across 180 students, cutting roll call from 8 minutes to 40 seconds per lecture, using Flask and React.
  • Eliminated proxy attendance by tying each QR to a 30-second window and the student's device; proxies fell from about 10% to under 1%.
  • Hard part: 180 phones scanning in the same 30 seconds overloaded the server. Fixed with a connection pool and a queue, verified with a 300-user load test.

What changed: minutes saved per lecture. Time the old way once with a stopwatch; that is a real number.

8Quiz app
BeforeQuiz App – An online quiz application with multiple choice questions and score display.
QuizFest · Node, Socket.io, MongoDB, React · Live · GitHub
  • Built a live quiz platform for the college fest, running a 12-question round for 1,000 concurrent players without a single dropped connection, using Socket.io.
  • Reduced result calculation from 9 s to under 1 s for 1,000 players by scoring in memory and writing to MongoDB in one batch.
  • Hard part: players on slow networks saw questions late and lost time. Fixed with a server-timestamped start and a per-player timer adjustment.

What changed: one real event. Offer your quiz app to any fest or club; a single evening gives you every number here.

Expense tracker, blog

9Expense tracker
BeforeExpense Tracker – App to add and view expenses and see monthly totals.
PaisaLog · React Native, Expo, SQLite · Play Store · GitHub
  • Built an offline-first expense tracker with UPI SMS auto-capture, used by 90 students who logged 6,000+ expenses in 3 months, using React Native and SQLite.
  • Increased daily logging 3× by reading bank UPI SMS on the device (with permission, nothing uploaded) instead of manual entry.
  • Hard part: 14 different bank SMS formats. Solved with one parser per bank and a test suite of 120 real, anonymised messages.

What changed: a Play Store link and a test suite. "120 test cases" is a number every interviewer respects.

10Blog
BeforeBlog Website – A blogging website where users can create, edit and delete posts using Django.
Inkwell · Django, PostgreSQL, Markdown, Railway · Live · GitHub
  • Built a Markdown blog with drafts, tags and image uploads, hosting 45 posts from 12 club writers with 9,000 page views in 4 months, on Django.
  • Cut page load from 2.8 s to 0.7 s by caching rendered Markdown and serving images through Cloudinary.
  • Hard part: two editors saving the same draft lost changes. Fixed with a version field and a "someone else edited this" prompt.

What changed: CRUD became publishing. Give the blog to your college club and the numbers arrive on their own.

When you have no numbers

Every project has numbers. You have not counted them yet. Seven places to look, in the order they are easiest to get.

UsersAsk 10 friends to use it for a week. Count sign-ups in the database. "Used by 12 people" beats no number.
RequestsAdd one log line per request and count after a day. Or run k6 or autocannon for one minute: "handled 400 requests a minute in testing".
RecordsRows in the table, products in the store, books in the library, files processed. One SQL COUNT.
Time savedTime the manual way once with a stopwatch. Time your way once. "From 8 minutes to 40 seconds".
Test casesCount your tests. Run a coverage tool. "60 tests, 85% coverage" takes an afternoon to earn.
SpeedChrome DevTools, Network tab, before and after one fix. "Page load 4.2 s to 1.1 s".
SizeBundle size, Docker image size, image size, lines of code you removed. All free to measure.

Two rules. Every number must be true, and you must be able to say how you measured it. If you estimated, write "about 40", not "40". Priya has heard "10,000 users" from a student with 3 GitHub stars. She now asks how you counted.

Want this on your phone?

Everything above, as a PDF built to read on a phone the morning of the interview. It costs nothing — we ask for an email so we can send it, and that is all.