A clean, responsive developer portfolio built with Next.js 15, Tailwind CSS, and TypeScript. All content lives in a single page with no CMS or external data source required.
π Live: gujarathisampath.github.io/portfolio (update if different)
- Next.js 15 App Router β file-based routing and server components out of the box
- Dark / Light Mode β theme toggle powered by
next-themes - Responsive Layout β optimised for mobile, tablet, and desktop
- Type-Safe β full TypeScript support throughout
- Shadcn UI β accessible, composable component primitives
- Contact Form β client-side form with loading & success states
- Collapsible Tech Stack β projects show/hide their technology list
| Section | Description |
|---|---|
| Hero | Profile picture, banner, name, tagline, and social links |
| About | Short personal bio |
| Work Experience | Employment history using WorkCard |
| Education | Academic background using EducationCard (with grade) |
| Projects | Project showcase using ProjectCard (with collapsible tech stack) |
| Skills | Flat list of technologies and tools |
| Contact | Two-column contact form with email, LinkedIn, and GitHub links |
Displays a single work experience entry.
| Prop | Type | Required | Description |
|---|---|---|---|
title |
string |
β | Job title (e.g., "Software Engineer") |
company |
string |
β | Company name |
type |
string |
β | Employment type / location (e.g., "Remote", "Hybrid") |
startDate |
string |
β | Start year / date (e.g., "2024") |
endDate |
string |
β | End year / date (e.g., "Present") |
description |
string |
β | Brief summary of responsibilities |
<WorkCard
title="Software Engineer"
company="AspireDev"
type="Remote"
startDate="2024"
endDate="Present"
description="Working with a group of developers to build next-generation applications."
/>Displays a single education entry with an optional grade.
| Prop | Type | Required | Description |
|---|---|---|---|
degree |
string |
β | Degree name (e.g., "Bachelor of Technology") |
branch |
string |
β | Field of study (e.g., "Computer Science and Engineering") |
institution |
string |
β | Institution name |
startDate |
string |
β | Start year |
endDate |
string |
β | End year or "Present" |
grade |
string |
β | CGPA (for B.Tech) or percentage (for others) |
The component automatically labels the grade as CGPA for
"Bachelor of Technology"and Percentage for all other degrees.
<EducationCard
degree="Bachelor of Technology"
branch="Computer Science and Engineering"
institution="Malla Reddy College Of Engineering and Technology"
startDate="2024"
endDate="Present"
grade="9.58"
/>Showcases a project with an optional link and collapsible tech stack.
| Prop | Type | Required | Description |
|---|---|---|---|
title |
string |
β | Project name |
description |
string |
β | Short project summary |
link |
string |
β | URL to the live project or repository |
techStack |
string[] |
β | List of technologies used |
<ProjectCard
title="Aspire Mail"
description="A modern, self-hosted webmail client built as a clean alternative to Roundcube."
link="https://github.com/gujarathisampath/aspire-mail"
techStack={["Next.js", "Tailwind CSS", "TypeScript"]}
/>A two-column contact section with:
- Left panel β tagline, description, and direct contact links (email, LinkedIn, GitHub)
- Right panel β form with Name, Email, Subject, and Message fields
No backend required β the form currently simulates a send after 1.8 s. To wire it up to a real service (e.g. Resend, Formspree), edit the handleSubmit function in components/ContactForm.tsx.
# Clone the repository
git clone https://github.com/gujarathisampath/portfolio.git
cd portfolio
# Install dependencies (uses Bun)
bun install
# Start the dev server
bun run devOpen http://localhost:3000 in your browser.
All content is managed inside app/page.tsx.
<h1 className="text-2xl font-bold">Your Name</h1>
<p className="text-muted-foreground">Your tagline here.</p>- Profile picture β replace
/public/profile.png - Banner image β replace
/public/banner.png - Social links β update the
hrefvalues on the<Link>components (LinkedIn, GitHub, Resume)
Edit the <p> tag inside the About section.
Add or remove <WorkCard /> components in the Work Experience section.
Add or remove <EducationCard /> components in the Education section.
Add or remove <ProjectCard /> components in the Projects section (renders in a 2-column grid on desktop).
Add or remove <Button variant="secondary" size="sm"> tags inside the Skills section.
Update the SOCIAL_LINKS array at the top of components/ContactForm.tsx to point to your own email and social profiles.
portfolio/
βββ app/
β βββ layout.tsx # Root layout (fonts, theme provider, metadata)
β βββ page.tsx # Main page β all sections live here
βββ components/
β βββ ContactForm.tsx # Contact section with form
β βββ EducationCard.tsx # Education entry card
β βββ ProjectCard.tsx # Project showcase card
β βββ WorkCard.tsx # Work experience card
β βββ theme-provider.tsx
β βββ ui/ # Shadcn UI primitives
βββ public/
β βββ profile.png # Profile photo
β βββ banner.png # Banner image
βββ lib/
βββ utils.ts
This project is open source and available under the MIT License.