Dark/light theme toggle with persistent preference and smooth color transitions
personal-portfolio — Next.js Portfolio Template
By CohenReiland
A personal portfolio website template built with Next.js and React, including dark/light theme toggle, Strava running data integration, animated components, and responsive layout, under MIT license.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Running statistics via Strava API, with data refreshed hourly
Custom animated components, including a smartwatch display and running stats panel
Responsive layout for mobile and desktop browsing
Projects section supports live links, screenshots, and technology tags
Contact section provides email copy-to-clipboard, GitHub, and LinkedIn links
Template Details
This is a personal portfolio website template built with Next.js, React, and TypeScript, with code open-sourced under the MIT license. The page is organized into sections such as Hero, About, Skills, Projects, and Contact, with smooth scrolling navigation. It offers a dark/light mode toggle, and user preference is preserved across sessions. The About section displays running statistics via the Strava API and notes that data refreshes hourly. The interface includes custom animated components, such as a smartwatch display, running stats panel, and gradient section transitions. The projects section lists selected projects, optionally with live links, screenshots, and technology tags; the contact section provides email copy-to-clipboard and GitHub and LinkedIn links. The template requires Node.js 20.9.0 or higher, and Strava credentials are optional; without them, the running stats feature is unavailable. The demo site is deployed on Vercel. The repository does not state any asset licensing beyond the MIT code license; third-party resources such as demo images, fonts, and icons must be checked for their respective licenses.
Is it right for your project?
Use Cases
- Build a personal portfolio website to showcase projects and contact information
- Integrate Strava running data into a personal homepage to present activity statistics
- Use as a Next.js and React practice project, referencing animated components and theme toggle implementation
- Deploy to platforms like Vercel as a publicly accessible personal site
Suitable For
- Developers or students who need a personal portfolio website template
- Users who want to display running or other activity data and already use Strava
- Those familiar with Next.js, React, and TypeScript who can modify content and styles themselves
- Users who accept the MIT license terms and will independently verify third-party asset licensing
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 20.9.0 or higher, and one of npm, yarn, pnpm, or bun
- 2
After cloning the repository, run npm install to install dependencies
- 3
For running statistics, configure STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET, and STRAVA_REFRESH_TOKEN in .env.local; without them, the related feature is unavailable
- 4
Run npm run dev to start the development server, accessible by default at http://localhost:3000
- 5
For production build, use npm run build and npm start
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in a public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- The Strava running statistics feature requires obtaining your own Strava API credentials (client ID, secret, and refresh token); without them, the feature is unavailable, as it depends on an optional external service.
- Using the Strava integration requires configuring environment variables in .env.local, involving third-party service accounts and keys.
- Running statistics data depends on the Strava API and refreshes hourly, requiring the external service to remain available.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Strava API credentials (optional for running stats)
Original README
Create a `.env.local` file for Strava integration (optional):
Original README
https://github.com/CohenReiland/personal-portfolio/blob/main/LICENSEhttps://github.com/CohenReiland/personal-portfolio/blob/main/README.mdRunning stats refresh hourly via Strava API.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Next.js · React
- Website type
- Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-02-24
- Screenshot last checked
- 2026-10-13
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 307e8d8c44e6e827772ee65804f7e27b4247ebde527112545344b120c4edc923
2026-10-13T06:57:33.688Z
Source file / repository# Personal Portfolio A modern, responsive portfolio website built with Next.js and React, featuring dark/light theme support, Strava API integration, and smooth animations. ## Features - **Theme Toggle**: Persistent dark and light mode with smooth color transitions - **Strava Integration**: Running statistics fetched from Strava API with real-time data - **Responsive Design**: Fully responsive layout optimized for mobile and desktop viewing - **Custom Components**: Animated smartwatch display, running stats dashboard, and gradient section transitions - **Project Showcase**: Featured projects with live links, screenshots, and technology tags - **Contact Integration**: Direct email with copy-to-clipboard, GitHub, and LinkedIn links ## Demo [](https://cohen-reiland.vercel.app/) *Click the image above to go to the website* ## Tech Stack - Next.js 16.1.1 - React 19.2.3 - TypeScript 5.9.3 - Tailwind CSS 4.1.18 - Framer Motion 12.24.10 - Lucide React (icons) - Strava API ## Getting Started ### Prerequisites - Node.js 20.9.0 or higher - npm, yarn, pnpm, or bun - Strava API credentials (optional for running stats) ### Setup 1. Clone the repository 2. Install dependencies: ```bash npm install ``` 3. Create a `.env.local` file for Strava integration (optional): ```env STRAVA_CLIENT_ID=your_client_id STRAVA_CLIENT_SECRET=your_client_secret STRAVA_REFRESH_TOKEN=your_refresh_token ``` 4. Run the development server: ```bash npm run dev ``` 5. Open [http://localhost:3000](http://localhost:3000) in your browser ### Build for Production ```bash npm run build npm start ``` ## Usage Navigate through sections with smooth scrolling: - **Hero**: Introduction with animated smartwatch component - **About**: Personal background with live Strava running statistics - **Skills**: Programming languages, frameworks, and current learning - **Projects**: Featured projects with GitHub links and technology stacks - **Contact**: Direct links to email, GitHub, and LinkedIn Theme preference persists across sessions. Running stats refresh hourly via Strava API. ## Project Structure ``` ├── app/ │ ├── api/strava/ │ ├── layout.tsx │ ├── page.tsx │ └── globals.css ├── components/ │ ├── about/ │ ├── watch/ │ ├── Navbar.tsx │ └── ThemeProvider.tsx └── public/ ``` ## Deployment Deployed on Vercel at [cohen-reiland.vercel.app](https://cohen-reiland.vercel.app/) ## License MIT License - See [LICENSE](LICENSE) for details ## Author Cohen Reiland Computer Science Sophomore North Dakota State University
Explore similar templates
Compare previews and descriptions within the same stack and category.

react-resume-template
A personal resume website template for software developers, built with Next.js, React, and TypeScript and styled with Tailwind CSS. Site content is driven by a single data file at /src/data/data.tsx, with types in dataDef.ts and images in src/images/.
Next.js · Portfolio

nxt-lnk
nxt-lnk is a Next.js-based bio link page template that manages personal information and links via BioData.js and LinksData.js, positioned as a self-hosted alternative to Linktree. It groups links by type, supports enabling/disabling individual links, and offers hexagonal or oval avatars.
Next.js · Portfolio

sylph
Sylph is a minimal portfolio and blog template built on Next.js, supporting MDX/Markdown writing, light/dark themes, and automatic OG image generation. It includes sitemap, robots.txt, metadata, and syntax highlighting, with automatic blog timestamps.
Next.js · Portfolio

sleek-portfolio
A modern, responsive portfolio template built with Next.js 15, TypeScript, Tailwind CSS, and Shadcn UI. It includes an MDX blog, project showcase, work experience timeline, and a contact form that receives messages via Telegram Bot.
Next.js · Portfolio

research-website-template
A React + Next.js template for research personal websites, aimed at PhD students and researchers. It centralizes publications, projects, and other content in src/data as arrays of objects, with optional fields automatically generating UI components.
Next.js · Portfolio

shadcn-portfolio
A developer portfolio template built with Next.js 15, shadcn/ui, Tailwind CSS, and Framer Motion, featuring an MDX blog, light and dark modes, responsive design, and SEO meta tags.
Next.js · Portfolio
