Next.jsReactPortfolioBlog

nextjs-personal-site-template — Next.js Portfolio Template

By kursatdemirdelen

A personal website template for developers, built on Next.js App Router and TypeScript, including an MDX blog, project showcase, dark mode, and Turkish/English bilingual support.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-14View source

What stands out

A quick read of the recorded project description.

01

Built with Next.js App Router and TypeScript, with pages under src/app/[locale]

02

Blog content is stored as MDX files in content/blog/, supporting Markdown and React components

03

Includes Turkish and English, with translation files in the messages/ directory

04

Dark mode is implemented via next-themes and can follow system preference

05

Project showcase data is configured in src/data/projects.ts, with tag and filter support

06

The README states sitemap, RSS, and meta tags are generated automatically, and NEXT_PUBLIC_SITE_URL must be set

Template Details

This is an open-source template for building a personal website. The README states its goal is to let developers showcase work, publish blog posts, and establish an online presence. The tech stack includes Next.js 16 (App Router), React 19, TypeScript 5, Tailwind CSS 4, MDX, next-intl, and next-themes.

Built-in features include: an animated typing greeting, a blog written in MDX, dark mode that follows system preference, Turkish and English bilingual support, a project showcase with tags and filtering, and SEO configuration that automatically generates sitemap, RSS, and meta tags. Pages are organized under the [locale] directory; site information, projects, and hobbies are placed in site.ts, projects.ts, and hobbies.ts under src/data, blog posts in content/blog/, and translation files in messages/.

Before use, the NEXT_PUBLIC_SITE_URL environment variable must be set; the README states it is used for SEO, sitemap, and RSS. For deployment, the README provides a one-click Vercel deploy button and a Netlify deploy button, and notes it also works on platforms supporting Next.js such as Cloudflare Pages and Railway. The README does not provide specific information about performance benchmarks, accessibility test results, or production environment validation.

Next.jsReactPortfolioBlog

Is it right for your project?

Use Cases

  • Developers building a personal homepage to centrally showcase projects and blog posts
  • Scenarios requiring a bilingual (Turkish/English) personal site other than Chinese and English
  • Scenarios where you want to write a technical blog in MDX and embed React components
  • Scenarios deploying a personal static site with one click via Vercel or Netlify

Suitable For

  • Developers familiar with Next.js and TypeScript who want to quickly start a personal website
  • Independent developers who need project showcase, blog, and bilingual support
  • Users who accept maintaining site content by editing configuration files under src/data

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, run npm install, then start the local development server with npm run dev

  2. 2

    Copy .env.example to .env.local and set NEXT_PUBLIC_SITE_URL to your site address

  3. 3

    Modify the site name, title, tagline, and social links in src/data/site.ts

  4. 4

    Add projects in src/data/projects.ts, and create new MDX files under content/blog/ for blog posts

  5. 5

    When deploying to Vercel, configure NEXT_PUBLIC_SITE_URL in the project settings' environment variables

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean 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 against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • Before use, the NEXT_PUBLIC_SITE_URL environment variable must be set for SEO, sitemap, and RSS generation.
  • After deployment, set NEXT_PUBLIC_SITE_URL to your own domain in the project settings.
  • When deploying to Vercel, configure NEXT_PUBLIC_SITE_URL as the actual domain in the environment variables.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

| `NEXT_PUBLIC_SITE_URL` | Yes | Your site URL (for SEO, sitemap, RSS) |

Original README

> After deployment, set `NEXT_PUBLIC_SITE_URL` to your domain in project settings.

Original README

3. Add environment variable: `NEXT_PUBLIC_SITE_URL` = `https://your-domain.vercel.app`

Original README
https://github.com/kursatdemirdelen/nextjs-personal-site-template/blob/main/LICENSEhttps://github.com/kursatdemirdelen/nextjs-personal-site-template/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-14. 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 · Blog
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-01-02
Screenshot last checked
2026-10-14

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: codex-user-requested-batch-review-20261015 · 2026-10-15

Inspect the recorded source material

SHA-256: 4876d0d3762fb38c690b3ffaca7b304080b0b1a05ba60431111ccca8d63f2a85

2026-10-14T15:17:18.154Z

Source file / repository
# Next.js Personal Website Template

A clean, modern template for developers to showcase their work, share blog posts, and build their online presence. Built with Next.js 16, React 19, and TypeScript.

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Next.js](https://img.shields.io/badge/Next.js-16-black)](https://nextjs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)](https://www.typescriptlang.org/)

**[Live Demo](https://nextjs-personal-site-template.vercel.app)** • **[Türkçe](./README.tr.md)** • **[Documentation](./SETUP.md)** • **[Report Bug](https://github.com/kursatdemirdelen/nextjs-personal-site-template/issues)**

## 🚀 One-Click Deploy

Deploy your own copy of this template with one click:

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/kursatdemirdelen/nextjs-personal-site-template&project-name=my-personal-site&repository-name=my-personal-site&env=NEXT_PUBLIC_SITE_URL&envDescription=Your%20site%20URL%20for%20SEO%20(sitemap,%20canonical%20URLs)&envLink=https://github.com/kursatdemirdelen/nextjs-personal-site-template%23environment-variables)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/kursatdemirdelen/nextjs-personal-site-template)

> After deployment, set `NEXT_PUBLIC_SITE_URL` to your domain in project settings.

## 📸 Screenshots

<p align="center">
  <img src="public/images/ss1.png" width="49%" />
  <img src="public/images/ss2.png" width="49%" />
</p>
<p align="center">
  <img src="public/images/ss3.png" width="49%" />
  <img src="public/images/ss4.png" width="49%" />
</p>
<p align="center">
  <img src="public/images/ss5.png" width="49%" />
</p>

---

## Features

- ✨ **Animated Greeting** - Typewriter effect with customizable messages
- 📝 **MDX Blog** - Write posts in Markdown with React components
- 🎨 **Dark Mode** - Automatic theme switching with system preference detection
- 🌍 **i18n Support** - Turkish and English built-in, easy to add more
- 📊 **Project Showcase** - Display your work with tags and filtering
- 🎯 **SEO Optimized** - Auto-generated sitemap, RSS feed, and meta tags
- ⚡ **Fast Performance** - Server components and static generation
- 📱 **Fully Responsive** - Mobile-first design that works everywhere
- ♿ **Accessible** - ARIA labels, keyboard navigation, semantic HTML

## Quick Start

```bash
# Clone the template
git clone https://github.com/kursatdemirdelen/nextjs-personal-site-template.git my-website

# Install dependencies
cd my-website
npm install

# Start development server
npm run dev
```

Open [http://localhost:3000](http://localhost:3000) to see your site.

## Customization

### 1. Set Environment Variables

Copy `.env.example` to `.env.local` and update:

```bash
NEXT_PUBLIC_SITE_URL=https://your-domain.com
```

> **Vercel Users**: Set this in Project Settings → Environment Variables

### 2. Update Site Information

Edit `src/data/site.ts`:

```typescript
export const siteConfig = {
  name: "Your Name",
  title: "Your Professional Title",
  tagline: "Your tagline here",
  // URL is set via NEXT_PUBLIC_SITE_URL env variable
  socialLinks: { ... },
};
```

### 3. Add Your Projects

Edit `src/data/projects.ts`:

```typescript
export const projects: Project[] = [
  {
    title: "Project Name",
    description: "What it does and why it matters",
    url: "https://github.com/you/project",
    tags: ["React", "TypeScript"],
    slug: "project-name",
  },
];
```

### 4. Write Blog Posts

Create MDX files in `content/blog/`:

```mdx
---
title: "Post Title"
description: "Post description"
date: "December 22, 2025"
tags: ["Next.js", "React"]
---

Your content here...
```

See the [Setup Guide](./SETUP.md) for detailed instructions.

## Tech Stack

- **Framework**: [Next.js 16](https://nextjs.org/) with App Router
- **Language**: [TypeScript 5](https://www.typescriptlang.org/)
- **Styling**: [Tailwind CSS 4](https://tailwindcss.com/)
- **Content**: [MDX](https://mdxjs.com/)
- **i18n**: [next-intl](https://next-intl-docs.vercel.app/)
- **Theme**: [next-themes](https://github.com/pacocoursey/next-themes)

## Project Structure

```
src/
├── app/
│   ├── [locale]/           # Internationalized pages
│   │   ├── page.tsx       # Homepage
│   │   ├── blog/          # Blog pages
│   │   ├── projects/      # Project pages
│   │   └── hobbies/       # Hobbies page
│   └── api/               # API routes
├── components/
│   ├── layout/            # Header, Footer, etc.
│   ├── ui/                # Reusable components
│   └── blog/              # Blog-specific components
├── data/                  # Site content
│   ├── site.ts           # Main config
│   ├── projects.ts       # Your projects
│   └── hobbies.ts        # Your hobbies
└── i18n/                  # Internationalization

content/blog/              # MDX blog posts
messages/                  # Translation files
```

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `NEXT_PUBLIC_SITE_URL` | Yes | Your site URL (for SEO, sitemap, RSS) |

Create `.env.local` for local development:

```bash
cp .env.example .env.local
```

## Deployment

### Vercel (Recommended)

1. Push to GitHub
2. Import your repo on [vercel.com](https://vercel.com)
3. Add environment variable: `NEXT_PUBLIC_SITE_URL` = `https://your-domain.vercel.app`
4. Click Deploy

That's it! Vercel handles build, deployment, and automatic updates.

### Other Platforms

Works on any platform that supports Next.js:
- [Netlify](https://www.netlify.com/)
- [Cloudflare Pages](https://pages.cloudflare.com/)
- [Railway](https://railway.app/)

## Scripts

```bash
npm run dev          # Development server
npm run build        # Production build
npm run start        # Start production server
npm run lint         # Run ESLint
npm run type-check   # TypeScript validation
```

## Documentation

See **[SETUP.md](./SETUP.md)** for detailed configuration guide.

## Customization Examples

### Change Colors

Edit `src/app/globals.css`:

```css
:root {
  --accent: 0 84% 60%;  /* Your brand color */
}
```

### Add a Section

Create a new page in `src/app/[locale]/your-section/page.tsx`. Use existing pages as reference.

### Remove Features

Don't need hobbies? Delete the page and remove navigation links. Everything is modular.

## Contributing

Contributions welcome!

1. Fork the repo
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

MIT License - see [LICENSE](./LICENSE) for details.

You're free to use this template for personal or commercial projects. Attribution appreciated but not required.

## Support

- 📧 **Issues**: [GitHub Issues](https://github.com/kursatdemirdelen/nextjs-personal-site-template/issues)
- 💬 **Discussions**: [GitHub Discussions](https://github.com/kursatdemirdelen/nextjs-personal-site-template/discussions)
- ⭐ **Star the repo** if you find it useful!

---

Built by [@kursatdemirdelen](https://github.com/kursatdemirdelen) • Star if you find it useful!
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.