killcod3 /
NextGenPortfolio
A modern, animated portfolio website built with Next.js, TypeScript, Tailwind CSS, and Framer Motion.
78/100 healthLoading repository data…
shivy02 / repository
A modern, animated portfolio template built with Next.js 15, React 19, TypeScript, Tailwind & Framer Motion - with live Spotify, WakaTime & GitHub widgets and a Markdown blog.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A modern, animated personal portfolio built with Next.js 15, React 19, TypeScript, and Tailwind CSS, with live Spotify and WakaTime integrations and a Markdown-powered blog.
rehype-pretty-code + Shiki)next-themes| Framework | Next.js 15 (App Router) + React 19 |
| Language | TypeScript |
| Styling | Tailwind CSS, CSS Modules |
| Animation | Framer Motion, custom keyframes |
| Content | Markdown blog via remark/rehype + rehype-pretty-code |
| Integrations | Spotify (recently played), WakaTime (coding stats), GitHub (contributions) |
| Hosting | Vercel |
Selected from shared topics, language and repository description—not editorial ratings.
killcod3 /
A modern, animated portfolio website built with Next.js, TypeScript, Tailwind CSS, and Framer Motion.
78/100 healthkrishnavalliappan /
A modern, responsive personal portfolio website built with Next.js and Tailwind CSS, featuring an interactive terminal interface, animated sections, and dark mode support.
61/100 health# install dependencies
npm install
# run the development server (http://localhost:3000)
npm run dev
# build for production
npm run build
# run the production build
npm start
# lint
npm run lint
Copy .env.example to .env.local and fill in the keys you want. The site runs fine without them; the live widgets (Spotify, WakaTime, GitHub) just fall back to placeholder data until the keys are set.
If you forked this to build your own site, here is the honest map of what to change and where. Almost everything that shows up as content lives in one file. A few things (the animated name, the hero copy, the site metadata) are hardcoded in components, so those need a small code edit. I have called those out explicitly.
Start the dev server (npm run dev) and edit with it running. Most changes show up instantly.
src/data/data.tsxThis is the file you will spend the most time in. It is one big exported object, and most of the page reads from it. Each section is an array you can add to, reorder, or trim.
| Key | Controls | Notes |
|---|---|---|
experience | The Experience timeline | Each entry has company, role, date, location, description, skills (string array), an optional href, and an image path pointing at a logo in public/experience/. |
projects | The Projects grid | Each entry has title, description, dates, technologies (the tag pills), href (where the card links), and either a video + thumbnail or a static image, all pointing into public/projects/. |
contact | Contact icons in the hero and dashboard | href, label, aria, and an icon (a Tabler icon component). |
nav | The navbar links | name, link, and an icon. A link starting with / is treated as a route (like /blog); otherwise it scrolls to the section id on the home page. |
tools | The scrolling tools marquee in the dashboard | name, icon (filename without extension, matched to public/tools/), and themeDependent. Set themeDependent: true if you provide a separate -dark icon variant. |
favoriteLanguage | The "Fav Tool" dashboard card | Same shape as a tool entry. |
scratchGifs | The "Scratch Me" dashboard card | An array of GIF URLs picked at random. See the note on self-hosting below. |
The education entry under Experience is currently hardcoded in src/components/home/experience.tsx rather than in the data file. Edit it there.
Swap the files in public/ (or src/images/ for the profile photos), keeping the same paths your data references.
| What | Where |
|---|---|
| Profile photos (the grayscale-to-color hover in the hero) | src/images/profile-bw.jpg and src/images/profile-color.jpg |
| Company logos | public/experience/ |
| Project thumbnails and videos | public/projects/ |
| Tool and tech icons | public/tools/ (SVGs; add a name-dark.svg variant for theme-dependent icons) |
| Favicon, app icons, manifest | public/ (favicon.ico, apple-icon-180.png, manifest-icon-*.png) and public/logo/ |
| Background SVG glow | public/layout/ |
src/components/home/hero.tsxA few pieces of the hero are written directly in the component:
getStatus() from a timezone. Change timeZone: "America/Los_Angeles" to yours, and adjust the currentHour >= 8 && currentHour < 22 window to your "online" hours.src/components/ui/animated-name.tsxThe hero animates between two spellings of my name (Shivy and Shivam). This one is the most hardcoded part of the site because the animation pre-measures the exact pixel width of each ending to avoid layout shift. To use your own name you will need to edit this component:
Shiv) and the full first reveal (Shivy).Suffix type and the two measured spans so they match your two endings.If you do not want the swapping effect at all, the simplest path is to replace <AnimatedName ... /> in hero.tsx with a plain text span of your name and delete the state machine around it. That removes the moving part entirely and is much less fiddly than retuning it.
src/app/layout.tsxUpdate the metadata object: title, description, the metadataBase URL (currently https://shivypatel.com), the Open Graph and Twitter fields, and the siteName. Also check src/app/sitemap.ts, src/app/robots.ts, and src/app/feed.xml/route.ts for the hardcoded domain.
src/content/blog/Each post is a Markdown file. The filename becomes the URL slug (my-post.md serves at /blog/my-post). Frontmatter drives everything else:
---
title: "Your Post Title"
description: "A one-line summary used for previews and SEO."
date: "2026-01-30"
tags: ["nextjs", "react"]
image: "/blog/your-cover.svg"
imageAlt: "Description of the cover image for accessibility."
---
Your content in **Markdown**. Code blocks get syntax highlighting automatically.
Drop cover images in public/blog/. Reading time and the table of contents are generated automatically. To start clean, delete the example posts in that folder.
.env.localThese power the Spotify, WakaTime, and GitHub widgets. All optional; without them the widgets show fallback data. See .env.example for the full list and the links to generate each credential:
WAKATIME_API_KEY).SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, SPOTIFY_REFRESH_TOKEN).GITHUB_TOKEN, GITHUB_USERNAME, optional GITHUB_REPO).One reliability note: the
scratchGifsand one dashboard animation currently hotlink to Giphy URLs. Those can break if Giphy ever rotates the asset. If you keep that card, consider downloading the GIFs intopublic/and pointing the URLs at your own copies.
src/data/data.tsxsrc/images/ and logos/thumbnails in public/hero.tsxanimated-name.tsxlayout.tsx (and the domain in sitemap.ts / robots.ts / feed.xml)src/content/blog/.env.local if you want the live widgetsLICENSE/NOTICE attributionBuilding and maintaining this in the open takes real time. If the code was useful, you learned something, or you used it as a starting point:
Please read this before reusing anything. This repository is dual-licensed (see LICENSE for the full text):
If you build on this code, please:
LICENSE and NOTICE files as Apache 2.0 requires, preserve the attribution they contain, and note any files you changed. A link back to this repo or my profile is appreciated.If you want to use it in a way the license does not cover, open an issue and ask. Happy to chat.
Made by Shivam Patel.
MusaIslamFahad /
A modern, animated, dark-themed portfolio website built with Next.js 16, TypeScript, Tailwind CSS v4, and Framer Motion.
68/100 healthIgYaHiko /
✨ FingUI – A modern React UI library inspired by Shadcn, featuring sleek, reusable, and animated components ⚡ Built with Tailwind + Framer Motion for a smooth developer & user experience 🚀
50/100 healthrehan-devs /
🍽️ Modern restaurant landing page with a 3D animated menu book, floating food cards, and smooth GSAP scroll-triggered animations.
77/100 healthA modern, responsive, and animated frontend website built with Next.js 14, React, TypeScript, and TailwindCSS. This project demonstrates how to build a professional skincare salon website with smooth animations, custom cursor interactions, and a modular component structure.
49/100 health