react-myportfolio: The Portfolio That Works Like a Product Demo
A React 16 time capsule with routed sections, modular résumé blocks, and a tabbed project gallery built to sell the builder before the work.
- react-myportfolio treats a personal website as a persuasion flow, not a static gallery of links.
- Its shell, résumé blocks, and project tabs each answer a different trust question in sequence.
- The codebase reads like a pre-Hooks React snapshot, but its real lesson is structural: make credibility visible.
- The strongest idea here is not the stack, it is the decision to make the portfolio behave like a product demo.
A portfolio that has to close
Most portfolio sites answer a simple question: what have you made? react-myportfolio answers a harder one: can the site itself do the selling? That shift is what makes the repo interesting.
The builder's background matters. This is the work of someone who sits near the boundary between technical execution and persuasion, so the portfolio becomes a staged trust exercise. The homepage introduces the brand, the résumé proves range, and the projects page does the final close.
That is why the app feels less like a scrapbook and more like a flow. Each screen is there to answer the next objection in the reader's head.
The shell does the convincing
The persistent header and drawer do more than hold links. They make the site feel like an app, which quietly signals seriousness. The navigation stays fixed while routes swap in and out, so the user never loses the sense that they are inside a designed system.
That shell is where the first trust signal lands. The AtomSpinner in the branding adds motion, the route structure keeps context stable, and the overall layout says this is a site built by someone who understands interface discipline.
Résumé content as structured data
The résumé section is modular for a reason. Instead of hand-stitching every line into one long page, the app breaks experience, education, and skills into reusable components. That makes the information easier to read, but it also makes the author look organized before the reader has even reached the projects.
This is the key move. Background becomes an interface. Credentials are not dumped into the page, they are assembled into a system with consistent spacing, repeated patterns, and simple prop-driven content.
const Experience = ({ startYear, endYear, jobName, jobDescription }) => (
<div className="experience">
<div className="years">{startYear} - {endYear}</div>
<h4>{jobName}</h4>
<p>{jobDescription}</p>
</div>
);
const Skills = ({ skill, progress }) => (
<div className="skill-row">
<span>{skill}</span>
<ProgressBar progress={progress} />
</div>
);
Projects as proof, not decoration
The projects page is where the portfolio stops being descriptive and starts being persuasive. Tabs sort the work into categories, cards present the evidence, and each card links out to GitHub or a live demo. The point is not to showcase everything. It is to surface the right proof fast.
That filtering behavior is doing product work. It helps the visitor scan by intent, not by chronology, which is exactly how a recruiter or client actually reads a portfolio.
toggleCategories() {
if (this.state.activeTab === 0) {
return this.renderAllProjects();
}
if (this.state.activeTab === 1) {
return this.renderWebProjects();
}
return this.renderOtherProjects();
}
A 2018 stack, frozen in amber
The stack is a snapshot of React before Hooks changed the feel of everyday component work. React 16, class components, react-router-dom v4, react-mdl, Material UI, gh-pages, and a service worker together tell you exactly when this was built and what the web felt like then.
The tradeoff is visible in the layout choices. Fixed positioning and heavy UI libraries give the page an app-like frame, but they also lock the experience into a particular design era. That is a limitation if you want longevity, but it is also part of the charm. The site looks like it was built by someone trying to signal modernity in the language of the moment.
| What it optimizes | Generic template portfolio | react-myportfolio |
|---|---|---|
| Primary goal | Show some work and a contact form. | Stage a credibility sequence that guides the visitor from first glance to action. |
| Navigation model | Mostly scrolling through sections. | Route-based layout that feels like a product. |
| Résumé model | Static blocks of text and icons. | Modular components with repeated structure and clear hierarchy. |
| Projects | A decorative gallery of screenshots. | A filterable set of proof points with links to source and demos. |
| Technical signal | Can assemble a personal site. | Can organize information, interaction, and presentation into one system. |
| Recruiter read | A basic presence online. | A builder who understands how to frame competence. |
Why this beats a generic template
A generic portfolio says, here is what I did. This repo says, here is how I think about being evaluated. That difference is subtle, but it changes the whole site from a container of content into a system for trust.
If you rebuilt it today, you would probably swap out the older UI libraries, move from class components to function components, and modernize deployment. But the core idea should stay intact. Make the portfolio answer the questions a skeptic actually asks.
That is the useful lesson in react-myportfolio. The stack is dated, but the strategy is not. The strongest portfolios do not just show work. They shape belief.