Updated: 2025-12-25
This document explains how I set up a production-grade Next.js portfolio website using modern best practices. It includes each installation question, the chosen answer, and the meaning of that choice.
npx create-next-app@latest akash-portfolio --ts --app --tailwind
This is the recommended foundation for modern, scalable Next.js applications.
During setup, Next.js asks several configuration questions. Below are the exact questions, selected answers, and why they matter.
Answer: ESLint
Answer: Yes
useMemo and useCallbacksrc/ directory?Answer: Yes
src/ folderResulting structure:
akash-portfolio/
├─ src/
│ ├─ app/
│ ├─ components/
│ ├─ lib/
│ └─ styles/
├─ public/
├─ package.json
└─ tsconfig.json
Answer: Yes
Answer: @/*
Allows absolute imports instead of relative paths.
import Navbar from '@/components/layout/Navbar';
instead of:
import Navbar from '../../../components/layout/Navbar';
@/*| Setting | Selected |
|------------------|-----------|
| TypeScript | ✅ Enabled |
| App Router | ✅ Enabled |
| Tailwind CSS | ✅ Enabled |
| ESLint | ✅ Enabled |
| React Compiler | ✅ Enabled |
| src/ directory | ✅ Enabled |
| Import alias | @/* |
This configuration represents a production-ready Next.js foundation suitable for:
After the setup completed successfully:
npm install lucide-react
npm run dev
http://localhost:3000
This setup is suitable for professional portfolios and real-world applications.
blog.example.com) using MDX| Category | Technology | |-----------------|------------------| | Framework | Next.js 15+ | | Language | TypeScript | | Styling | Tailwind CSS | | Icons | Lucide React | | Linting | ESLint | | Performance | React Compiler | | Deployment | Vercel (planned) |
akash-portfolio/
├─ src/
│ ├─ app/ # App Router pages
│ │ ├─ layout.tsx # Root layout
│ │ ├─ page.tsx # Home page
│ │ └─ globals.css # Global styles
│ ├─ components/ # React components
│ │ ├─ layout/ # Layout components
│ │ ├─ sections/ # Page sections
│ │ └─ ui/ # Reusable UI components
│ ├─ lib/ # Utilities and helpers
│ └─ styles/ # Additional styles
├─ public/ # Static assets
│ ├─ images/
│ └─ cv/
├─ .eslintrc.json # ESLint configuration
├─ tailwind.config.ts # Tailwind configuration
├─ tsconfig.json # TypeScript configuration
├─ next.config.ts # Next.js configuration
└─ package.json # Dependencies
tsconfig.json{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
This enables the @/ import alias.
next.config.tsimport type { NextConfig } from 'next';
const nextConfig: NextConfig = {
reactCompiler: true,
};
export default nextConfig;
This enables the React Compiler.
tailwind.config.tsimport type { Config } from 'tailwindcss';
const config: Config = {
content: [
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}',
'./src/components/**/*.{js,ts,jsx,tsx,mdx}',
'./src/app/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {},
},
plugins: [],
};
export default config;
This configures Tailwind to scan the src/ directory.
npm run dev
npm run build
npm start
npm run lint
Author: Akash
Date: December 26, 2025
Purpose: Personal reference & future documentation
Project: Production-grade Next.js portfolio website
MIT License – Free to use for personal and commercial projects.
src/ directory structure@/* import aliasEnd of Document