A junior developer portfolio should show two or three finished projects, each written up as a short case study that states the problem, the decisions you made, the thing you cut, and what finally shipped. Link the repository and the live demo under every project, because at entry level a reviewer is looking for evidence that you can reason about a build, not for a job title you do not have yet. One project you can defend line by line will beat ten tutorial clones, and the write-up around the repo is the part that earns the interview.
The gap
What a reviewer is actually looking for at entry level
Nobody hiring a junior expects a track record. That is the whole definition of the role. What they are trying to work out, in about ninety seconds on your site, is a much narrower question: if we hand this person a ticket and a codebase, will they make reasonable calls, ask for help at the right moment, and finish the thing. Every senior hire on the panel got there by watching juniors either do that or not do it, and they are scanning your page for the tells.
So the bar is not "build something impressive." The bar is "show me you were awake while you built it." A modest project where you explain that you started with local state, hit a wall when two components needed the same data, and moved it up rather than reaching for a state library, is worth more than a large app you cannot account for. The first tells a reviewer how you handle a fork in the road. The second tells them you can follow a tutorial to the end.
This is genuinely good news when you have no job yet, because the thing being assessed is available to you right now. You do not need a company to grant you decisions. You already made dozens of them in every project you have shipped. You just did not write them down, and the writing down is the entire difference between an entry level portfolio that gets replies and one that gets skimmed.
The material
What counts as a project when nobody has hired you
You have more usable material than you think. What disqualifies work is not that it was unpaid, it is that it was assigned to you and you never made a real choice inside it.
A tool you use
The small thing you built for yourself
A script, a CLI, a browser tool that solves an annoyance you actually have. It is the strongest item a junior can own, because you can talk about the second version and why it was different. Usage by one person who is you still counts as usage.
Bootcamp capstone
Rescoped, not resubmitted
The capstone is fine. The submitted version is not. Strip the brief, name the constraint you were under, and write about what you would tear out if you started again. A candid post-mortem on your own work reads as senior, no matter what stage you are at.
Open source
One merged pull request
Fix a real bug in a library you already use. A merged PR means someone with commit rights read your code and let it into their project. Show the issue, your patch, and the review comments you got. That is peer review a bootcamp cannot manufacture.
Rebuild with a constraint
Not a clone, a constrained rebuild
Rebuilding a known interface only counts if you set yourself a real limit: no framework, under 20 KB, works offline, keyboard only, accessible to a screen reader. The constraint is the project. Without one it is copying, and reviewers can spot copying instantly.
Internship work
The ticket you can talk about
If you interned, pick one ticket you can describe without breaking confidentiality. Describe the bug class, your approach and the fix, not the employer secrets. A three-paragraph write-up of one real production ticket outweighs an entire side project.
A favor with a user
The site you built for someone real
A page for a friend, a club, a family business. It has a real user with real opinions, which means you had to negotiate scope and cut features. That negotiation is the story, and it is the closest thing to the job you will get before the job.
The unit
How to write up one project so a reviewer keeps reading
Do this once per project. It takes about forty minutes and it is the highest leverage forty minutes in your entire job search.
Open with the problem, in one sentence a non-engineer would follow.
"My study group kept losing track of who owed what for shared textbooks." That is a problem. "A full stack expense app" is a category, and categories are forgettable. If the first line does not create a small amount of tension, the reviewer stops reading right there.
Say what you had to work out for yourself.
Not what you learned in a lesson. What you had to solve when the lesson ran out. Rounding errors on split amounts, two people editing the same entry, the seed data getting wiped on every deploy. Naming the thing you did not expect proves you were building rather than transcribing.
Show one real decision and the option you rejected.
Pick a single fork. "I stored amounts in cents as integers instead of floats after the split totals stopped adding up." Say what you gave up. A junior who can name a trade-off is doing the job of a mid-level engineer, and reviewers notice that faster than anything else on the page.
Admit one thing that is still wrong.
There are no zero-flaw projects, so a portfolio claiming none reads as blind. "There is no auth. Anyone with the link can edit, and that is the next thing I would fix." Self-awareness is the trait most correlated with a junior who is safe to hire, and this sentence is the cheapest way to demonstrate it.
Close with the repo, the live link, and what shipped.
Deploy it. A running URL a reviewer can click, plus the repository link and a README that opens with what the project does and how to run it. An entry level project that is not deployed is homework, and homework does not get read.
The GitHub question
Is GitHub a portfolio? No, and here is the difference
GitHub is a filing cabinet. It stores your work perfectly and explains it to nobody. A profile page shows forks, half-finished branches, a config repo and the one project you are proud of, all rendered at exactly the same size, sorted by a date nobody cares about. Sending that link is asking a busy person to do your triage. Recruiters, who are the first humans in the loop and usually not engineers, will get nothing at all from it.
Your portfolio is the layer above the cabinet: the page that says "open this drawer, here is what is in it, here is why it matters." The two work together. The write-up carries the argument, and the repo link right underneath it is the proof that the argument is not a bluff. That pairing is what makes a junior credible, because the honest weakness of an entry level portfolio is that a reviewer cannot tell whether you really built the thing. A public commit history removes that doubt in one click.
Practically: keep your best few repositories at the top of your GitHub profile so a curious reviewer lands on your strongest work, make each README open with what the thing does and how to run it, and then link each specific repo from the matching case study on your site rather than dropping your profile root and hoping. To be clear about what a builder can and cannot do for you here, Folio does not sync your GitHub account and it does not import your repositories. You paste the link. The case study you write around that link is the part that does the work, and no tool can write it for you.
The build
Hand-coding the site yourself, honestly compared
A lot of juniors hand-code the portfolio itself to prove they can code. That is a legitimate reason, and this table does not pretend otherwise. It is about what each route actually costs you.
| Capability | Folio | Hand-coded from scratch |
|---|---|---|
| Proof you can code | Carried by the linked repos and the deployed demos, which is where a reviewer looks anyway | The site is itself a code sample, if the source is clean and if anyone opens it |
| Time to a live page | An afternoon. The project write-ups are the only slow part, and they should be | A weekend on the scaffold, then the deploy, then months of restyling it |
| Project write-ups | Structured entries with a problem, decisions, an outcome, and a repo link on each one | A card grid you hand-roll and outgrow the moment a project needs 500 words |
| Resume | Built from the same profile. PDF and DOCX export are free, ungated, and unwatermarked | A separate document that quietly drifts out of sync with the site |
| ATS check | A deterministic score out of 100 across 7 weighted criteria, shown before you export | You guess, and you find out only when nobody replies |
| Custom domain | yourname.dev on Pro, certificate handled for you. Free gives you a Folio address, not your own | You buy the domain and wire up DNS and TLS yourself, which is a fair fight |
If hand-coding the site is the point, hand-code it. Just do not let the site become the project you keep polishing instead of shipping the case studies, because it is the case studies that get read.
The other half
Attach a resume, and know exactly what Free does not include
Half of every entry level pipeline still runs through an applicant tracking system, so the portfolio is only one of the two documents you need. On Folio the resume is generated from the same profile as the portfolio, which means the two cannot contradict each other, and the PDF and DOCX export is free. There is no export paywall, no watermark, and no locked layout: every resume layout and preset works on the free plan, which is not true of most resume tools you will hit on your first job search.
Before you download, you get a score out of 100 from a deterministic check that runs on Folio itself. It weighs 7 criteria: structure at 30 points, headings at 18, selectable text at 16, contact details at 12, length at 10, contrast at 8, and risky elements like text buried in images at 6. The ATS-friendly badge appears at 90 or above. It scores the resume Folio built, in a layout where the parsing rules cannot be broken by accident. It does not read a PDF you upload from somewhere else, and no tool that claims to should be trusted on faith.
Now the honest part, because a page that hides this is a page you should not believe. The free plan gives you zero custom domains. You get a Folio address like portfolio.wrxstack.com/yourname, not yourname.dev, and a "Made with Folio" line is shown on the page. You get 10 AI drafting generations a month and the core design set rather than the full theme gallery. Pro removes all of that for Rs 599 or 9 dollars a month. For a junior with no job yet, the free tier is genuinely enough to get the site live and the resume out the door, and you can attach the domain later once the applications start landing.
The send
Then actually send it, in the one line that gets opened
A portfolio nobody opens is a diary. Once the site is live, the link belongs in four places: the top line of your resume, your GitHub profile bio, your LinkedIn contact field, and the second sentence of every application email. Put it above the fold in all four. Recruiters skim on phones, and a link buried in paragraph three of a cover letter does not exist.
When you send it, do not send a bare URL. Send one sentence that tells the reader which project to open and why it is relevant to their job posting: "The expense splitter is the closest to what you describe in the listing, and the write-up covers how I handled the concurrent edits." You have just done the reviewer's filtering for them, which is a small demonstration of the exact judgment they are trying to assess. Juniors who do this get opened. Juniors who paste a naked link mostly do not.
Then keep the page alive. Add a project every couple of months, tighten the weakest write-up, and rewrite the opening line as your target role sharpens. The candidate who is still adding case studies in month four is not the same candidate who launched in month one, and the difference between them is not talent. It is that one of them kept the habit.
Frequently asked questions
What should a junior developer portfolio include?
Two or three deployed projects, each with a short case study covering the problem, one real decision you made, one thing that is still broken, and links to the repo and the live version. Add a one-paragraph intro naming the role you want, a linked resume, and your contact details. Leave out the skill-percentage bars and the wall of framework logos.
Is GitHub a portfolio on its own?
No. GitHub stores your code, but it sorts everything by date and gives a forked config repo the same visual weight as your best build. A recruiter, who is often not an engineer, cannot read it. Keep GitHub as your proof layer and put a portfolio page in front of it that tells a reviewer which repo to open and what it demonstrates.
How many projects does an entry level developer portfolio need?
Two or three, written up properly. Reviewers do not count projects, they sample one and decide. A dozen thin thumbnails invites them to open the weakest one, while three deep write-ups mean whichever they pick, they see you reason. If you only have one project you can defend in detail, ship with one and add the next while you apply.
How do I build a developer portfolio with no experience?
Use material you already have: a tool you built for your own use, one merged open source fix, a bootcamp capstone honestly rescoped, or a site you made for a real person. What makes any of these count is not who paid you, it is that you can name the constraint you worked under and the choice you made inside it. Write that down and it is a project.
Where can I make a developer portfolio for free?
Folio gets you a live portfolio, a blog and a resume on the free plan, and the resume PDF and DOCX export is fully ungated with no watermark. What Free does not give you is a custom domain, so your address is portfolio.wrxstack.com/yourname rather than yourname.dev, a Made with Folio line is shown, and you get 10 AI drafting generations a month and the core designs only.
How do I send my portfolio when applying for a job?
Put the link on the top line of your resume and in the first two sentences of the email, never buried at the bottom. Name the single project that matches the listing and say in one clause why it matches. Doing that filtering for the reviewer is itself a signal about how you work, and it is why some junior links get opened and most do not.