Expert · Build, deploy and get hired · topic 63 of 64 · 40 min
Your portfolio project
Explanation
What recruiters look at
A recruiter or developer opens your portfolio for a minute or two, often on a phone. They check: does the link work, does it look clean and readable, are there 2 or 3 projects that solve a real problem, is the code on GitHub with a clear README, and do the commits look like real work. They do not read every line of your code.
Plan the portfolio site
- Header: your name and role ("Front-end developer"), with a nav to the sections.
- About: two or three honest lines and where you are based.
- Projects: a card for each one with a screenshot, title, the problem it solves in one line, the tech used, and Live and Code links.
- Skills: only what you can explain in an interview.
- Contact: email, GitHub, LinkedIn and a link to your resume PDF.
<article class="project">
<img src="images/expense.webp" alt="Expense tracker showing spending by category" width="640" height="400">
<h3>Hostel expense tracker</h3>
<p>Tracks mess, travel and book costs in rupees. Data stays on the phone with localStorage.</p>
<p>HTML, CSS, JavaScript</p>
<a href="https://your-name.github.io/expense-tracker/">Live site</a>
<a href="https://github.com/your-name/expense-tracker">Code</a>
</article>Pick 2 or 3 real projects
| Project | Shows these skills | Make it yours |
|---|---|---|
| Expense tracker | Forms, arrays, reduce, localStorage | Rupee formatting, categories like rent, mess and travel, monthly totals, export to CSV |
| An app using a public API (weather, train status style, cricket scores) | fetch, async/await, loading and error states | Debounced search, a clear message when offline, saved favourites |
| Landing page for a local business | Semantic HTML, responsive CSS, accessibility, SEO | Real content (with the owner's permission), a map link, a WhatsApp click-to-chat link, fast on slow data |
| Optional: a React + TypeScript version of one of these | Components, state, types, routing | Add one feature the plain version did not have |
Many public APIs need a key. If a key must stay secret, it cannot sit in front-end code (you learned why with VITE_ variables). Prefer APIs that need no key or give a key meant for browser use, and read their terms.
A README that sells the project
# Hostel Expense Tracker
Track daily spending in rupees and see where the money goes each month.
Live: https://your-name.github.io/expense-tracker/

## Features
- Add, edit and delete expenses; data is saved in localStorage
- Monthly total and spending by category
## Tech used
HTML, CSS, JavaScript, Vite
## How to run
npm install
npm run dev
## What I learned
Using reduce for totals, and testing with a keyboard only.Clean Git history and good scores
Make small commits with clear messages, like "Add monthly total to expense list", not "final final 2". Keep node_modules, dist and .env out of Git. Use branches and pull requests even when you work alone; you get preview deploys for free. Then run Lighthouse in mobile mode: Accessibility, Best Practices and SEO can usually reach high scores with careful work, and Performance should be good too. Test with the keyboard only and on a real 360 px wide phone, because mobile-first is how most Indian users browse.
GitHub profile and LinkedIn
- GitHub: a clear photo, a short bio, your best 3 repos pinned, and a profile README (a repo with the same name as your username).
- Every pinned repo has a description, a live link in the About box and a README.
- LinkedIn: a headline like "Front-end developer | HTML, CSS, JavaScript, React", your portfolio in the Featured section, and a short post about each project with a screenshot or short screen recording.
- Use the same name, photo and links everywhere, so people know it is you.
Watch the lesson
Your portfolio project · 1/7
A recruiter spends a minute or two on your portfolio, often on a phone.
Prefer a video by a teacher? Find free videos on “web developer portfolio projects for freshers github readme tips” on YouTube ↗
In real life: From tutorial to a real project
Karthik had a weather app copied from a video, like hundreds of other applicants. He changed it into "Rain Alert for Farmers": you pick your district, it shows the next three days of rain in Tamil and English, and it works on a cheap phone with a slow connection. He wrote a README with a screenshot, the live link and what he learned, fixed contrast and labels until Lighthouse Accessibility was high, and pinned it on GitHub. In two interviews, the first question was about this project, and he could explain every decision.
Practice (0/3 done)
Write the HTML skeleton of a portfolio page. It needs: lang on <html>; a <title>; <meta name="viewport"> and <meta name="description"> with a content of at least 20 characters; exactly one <h1>; a <nav> with at least 2 links that have an href; and a <section id="projects"> with at least 2 <article> cards. Each card has an <h3>, an <img> with a non-empty alt, and a link whose href is a real address (not empty and not "#").
Write a function readmeScore(readme) that checks a README text and returns { score, missing }. There are 5 checks, in this order: "title" (the first non-empty line starts with "# ", one hash and a space), "live link" (the text contains "https://"), "screenshot" (contains "!["), "how to run" (contains "npm install"), and "tech used" (some line, in lower case and trimmed, starts with "## tech"). score is how many checks pass (0 to 5); missing is the list of names of the checks that fail, in the same order. readmeScore("") returns { score: 0, missing: ["title", "live link", "screenshot", "how to run", "tech used"] }.
Build and deploy your real portfolio: the portfolio site itself plus 2 or 3 projects of your own (for example an expense tracker with localStorage, an app using a public API, and a landing page for a local business). Each project has its own repo, live link and README.
Quick quiz
Read more (free)
Pass the quiz (60% or more) or mark this topic as done when you are ready.
Your progress is saved on this device only.