Skip to content

Dtem4ik/nextjs-portfolio-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Next.js Portfolio Kit

Next.js React TypeScript Tailwind CSS License: MIT

A production-ready starter kit for building a professional portfolio

Demo


πŸ“‹ Overview

Next.js Portfolio Kit is a minimal, SEO-first portfolio template. Edit one file β€” portfolio.config.ts β€” and the entire site updates: metadata, Open Graph, JSON-LD, sitemap, OG image, and page content.

✨ Features

  • ⚑️ Next.js 16 App Router with static generation (generateStaticParams)
  • βš›οΈ React 19 Server Components by default
  • 🎨 Tailwind CSS v4 with OKLCH design tokens and dark mode
  • 🌍 i18n β€” native Next.js 16 routing, "as-needed" URL prefixing (/ for EN, /ru for RU)
  • πŸ” SEO β€” generateMetadata, canonical URLs, hreflang + x-default, Open Graph, Twitter Card, robots.txt, sitemap.xml
  • πŸ“Š JSON-LD structured data (Person schema via schema-dts)
  • πŸ–ΌοΈ Dynamic OG image β€” auto-generated via next/og
  • β™Ώ Accessibility β€” WCAG 2.4.1 skip link, semantic HTML, aria-* attributes
  • πŸŒ™ Dark / light mode via next-themes
  • πŸ“ TypeScript strict mode
  • πŸ”§ shadcn/ui + Radix UI component primitives

πŸ›  Tech Stack

Core

Styling

SEO & Analytics


πŸš€ Quick Start

Prerequisites

  • Node.js 22 or higher
  • pnpm (recommended)

Installation

  1. Clone the repository
git clone https://github.com/Dtem4ik/nextjs-portfolio-kit.git
cd nextjs-portfolio-kit
  1. Install dependencies
pnpm install
  1. Add your photo

Place a 400Γ—400px WebP or JPEG at public/photo.jpg.

  1. Edit your personal data
# This is the only file you need to edit
open portfolio.config.ts

Fill in your name, title, bio, domain, and social links. Everything else derives from this config automatically.

  1. Start the development server
pnpm dev

Navigate to http://localhost:3000


βš™οΈ Configuration

All personal data lives in a single file:

// portfolio.config.ts
export const portfolioConfig = {
  name: "Your Name",
  title: { en: "Frontend Engineer", ru: "..." },
  bio:   { en: "...", ru: "..." },
  photo: "/photo.jpg",
  url:   "https://yourdomain.com",
  social: {
    github:    "https://github.com/username",
    linkedin:  "https://linkedin.com/in/username",
    email:     "",
    telegram:  "",
    instagram: "",
    facebook:  "",
    whatsapp:  "",
  },
  keywords: { en: [...], ru: [...] },
  locale: { default: "en", supported: ["en", "ru"] },
};

πŸ“ Project Structure

nextjs-portfolio-kit/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ [lang]/                    # Locale-based routing
β”‚   β”‚   β”œβ”€β”€ layout.tsx             # Root layout, metadata, generateStaticParams
β”‚   β”‚   β”œβ”€β”€ page.tsx               # Home page
β”‚   β”‚   β”œβ”€β”€ not-found.tsx          # Locale-aware 404
β”‚   β”‚   └── opengraph-image.tsx    # Dynamic OG image (1200Γ—630)
β”‚   β”œβ”€β”€ robots.ts                  # /robots.txt generator
β”‚   β”œβ”€β”€ sitemap.ts                 # /sitemap.xml generator
β”‚   └── globals.css                # Tailwind v4 config + OKLCH tokens
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                        # shadcn/ui primitives (CLI-managed, do not edit)
β”‚   β”œβ”€β”€ lang-toggle.tsx            # Language switcher
β”‚   β”œβ”€β”€ mode-toggle.tsx            # Dark/light theme toggle
β”‚   └── theme-provider.tsx         # next-themes provider
β”œβ”€β”€ dictionaries/
β”‚   β”œβ”€β”€ en.json                    # English UI strings
β”‚   └── ru.json                    # Russian UI strings
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ dictionaries.ts            # getDictionary() β€” server-only
β”‚   β”œβ”€β”€ i18n.ts                    # Locale config, labels, OG locale map
β”‚   β”œβ”€β”€ structured-data.ts         # JSON-LD Person schema builder
β”‚   └── utils.ts                   # cn() β€” clsx + tailwind-merge
β”œβ”€β”€ public/                        # Static assets (place photo.jpg here)
β”œβ”€β”€ portfolio.config.ts            # ⭐ Single source of truth β€” edit this
β”œβ”€β”€ proxy.ts                       # Next.js 16 Proxy β€” i18n routing
β”œβ”€β”€ components.json                # shadcn/ui config
β”œβ”€β”€ next.config.ts                 # Next.js config
└── package.json                   # Dependencies and scripts

πŸ“œ Available Commands

# Development
pnpm dev              # Start dev server

# Build
pnpm build            # Create production build
pnpm start            # Start production server

# Code Quality
pnpm lint             # Run linter
pnpm lint:fix         # Auto-fix linting issues
pnpm format           # Format code
pnpm format:check     # Check code formatting
pnpm typecheck        # Run TypeScript type checking

🌍 Adding a Language

  1. Add the locale to portfolio.config.ts:
    locale: { default: "en", supported: ["en", "ru", "de"] }
  2. Add dictionaries/de.json (copy from en.json and translate)
  3. Register it in lib/dictionaries.ts dictionaries map
  4. Add the OG locale mapping to lib/i18n.ts β†’ ogLocale

🚒 Deployment

Vercel (Recommended)

Deploy with Vercel

After deploying, submit your sitemap to Google Search Console:

https://yourdomain.com/sitemap.xml

πŸ“ž Contact


🀝 Contributing

Contributions are welcome! If you'd like to improve the project:

  1. Fork the repository
  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

See CONTRIBUTING.md for commit conventions and code quality rules.


πŸ“ License

This project is licensed under the MIT License. See the LICENSE file for details.


πŸ™ Acknowledgments

  • Next.js β€” for the amazing framework
  • Vercel β€” for hosting and tools
  • Tailwind CSS β€” for the awesome CSS framework
  • shadcn/ui β€” for the component system

⬆ Back to top

Made with ❀️ by Dtem4ik

About

Production-ready Next.js portfolio kit with strong tooling, CI quality gates, and clean documentation.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors