A minimal and modern portfolio website built with Next.js 14+, TypeScript, and TailwindCSS. Features a clean, responsive design with light/dark theme support and smooth animations.
Live Demo: View Live Site | Preview:
- Features
- Tech Stack
- Getting Started
- Project Structure
- Scripts
- Customization
- Deployment
- Contributing
- License
- π Next.js 14+ with App Router for modern React development
- π· TypeScript for enhanced type safety and developer experience
- π¨ TailwindCSS for rapid UI development and responsive design
- β¨ Framer Motion for smooth animations and page transitions
- π― Lucide React for beautiful, consistent iconography
- π next-themes for seamless light/dark theme switching
- π± Fully Responsive design that works on all devices
- β‘ Performance Optimized with Next.js best practices
- π§ ESLint + Prettier for maintainable code quality
- π Vercel-ready deployment configuration
Category | Technology | Version |
---|---|---|
Framework | Next.js | 14+ |
Language | TypeScript | 5.0+ |
Styling | TailwindCSS | 3.0+ |
Animations | Framer Motion | Latest |
Icons | Lucide React | Latest |
Theming | next-themes | Latest |
Code Quality | ESLint + Prettier | Latest |
Before you begin, ensure you have the following installed:
- Node.js (version 18 or higher)
- npm or yarn package manager
- Git for cloning the repository
- Clone the repository:
git clone https://github.com/Gitnaseem745/portfolio-wisp-blog.git
cd portfolio-wisp-blog
- Install dependencies:
npm install
# or
yarn install
- Start the development server:
npm run dev
# or
yarn dev
- Open your browser:
Visit http://localhost:3000 to see your portfolio in action! π
Create a .env.local
file in the root directory for any environment variables:
# Example environment variables
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_ANALYTICS_ID=your_analytics_id
portfolio-wisp-blog/
βββ π public/ # Static assets
β βββ πΌοΈ images/ # Image assets
β βββ π *.svg # SVG icons
βββ π src/
β βββ π app/ # Next.js App Router pages
β β βββ π layout.tsx # Root layout
β β βββ π page.tsx # Home page
β β βββ π blog/ # Blog pages
β βββ π components/ # Reusable UI components
β β βββ π¨ button.tsx # Custom button component
β β βββ π¨ header.tsx # Navigation header
β β βββ π¨ footer.tsx # Site footer
β β βββ π theme-toggle.tsx # Dark/light mode toggle
β βββ π sections/ # Page sections
β β βββ π hero-section.tsx
β β βββ πΌ experience-section.tsx
β β βββ π οΈ skills-section.tsx
β β βββ π§ contact-section.tsx
β βββ π lib/ # Utility functions
β βββ π config/ # Configuration files
β βββ βοΈ siteConfig.ts # Site-wide settings
βββ π package.json # Dependencies and scripts
βββ π tailwind.config.ts # TailwindCSS configuration
βββ π tsconfig.json # TypeScript configuration
βββ π next.config.ts # Next.js configuration
Script | Command | Description |
---|---|---|
Development | npm run dev |
π Start development server with hot reload |
Build | npm run build |
ποΈ Build optimized production bundle |
Start | npm run start |
|
Lint | npm run lint |
π Run ESLint for code quality checks |
Lint Fix | npm run lint:fix |
π§ Fix ESLint issues automatically |
Type Check | npm run type-check |
π Run TypeScript type checking |
# Start development with hot reload
npm run dev
# Run linting and type checking
npm run lint && npm run type-check
# Build for production
npm run build
# Preview production build locally
npm run start
Customize your portfolio by editing src/config/siteConfig.ts
:
export const siteConfig = {
name: "Your Name",
title: "Your Portfolio Title",
description: "Your portfolio description",
url: "https://yoursite.com",
// ... more configurations
}
Available customizations:
- π Site metadata (title, description, keywords)
- π¨ Theme colors and design tokens
- ποΈ Typography settings and font configurations
- β¨ Animation configurations and timing
- π Social media links and contact information
- π SEO settings and meta tags
The portfolio supports both light and dark modes with:
- Automatic system preference detection
- Manual theme toggle
- Persistent theme selection
- Smooth theme transitions
- Custom color schemes
- Create a new component in
src/sections/
- Import and add it to your main page
- Configure styling and animations
- Update navigation if needed
Example:
// src/sections/new-section.tsx
export function NewSection() {
return (
<section className="py-20">
{/* Your content */}
</section>
);
}
Deploy your portfolio to Vercel with one click:
Manual Vercel deployment:
- Push to GitHub: Push your code to a GitHub repository
- Connect Vercel: Import your repository on Vercel
- Deploy: Vercel will automatically build and deploy your site
- Custom Domain: Add your custom domain in Vercel settings
The portfolio builds to static files and can be deployed anywhere:
Platform | Command | Notes |
---|---|---|
Netlify | npm run build |
Drag & drop out/ folder or connect via Git |
GitHub Pages | npm run build |
Use GitHub Actions for automatic deployment |
AWS S3 | npm run build |
Upload out/ folder to S3 bucket |
Firebase Hosting | npm run build |
Use Firebase CLI to deploy |
# Build for production
npm run build
# The build output will be in the 'out' directory
# Ready for static hosting deployment
For production deployment, set these environment variables:
NEXT_PUBLIC_SITE_URL=https://yourdomain.com
NEXT_PUBLIC_ANALYTICS_ID=your_analytics_id
# Add other environment variables as needed
We welcome contributions from the community! Here's how you can help:
- Use the Issue Tracker to report bugs
- Include detailed reproduction steps
- Provide system information and screenshots when relevant
- Open an Enhancement Request
- Describe the feature and its benefits
- Include mockups or examples if applicable
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes following our coding standards
- Test your changes thoroughly
- Commit with descriptive messages:
git commit -m 'feat: add amazing feature'
- Push to your branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style and patterns
- Write descriptive commit messages
- Add comments for complex logic
- Test your changes across different screen sizes
- Ensure TypeScript types are properly defined
- Run
npm run lint
before committing
- π Bug fixes and improvements
- π± Mobile responsiveness enhancements
- βΏ Accessibility improvements
- π¨ New theme options
- π Documentation updates
- π§ Performance optimizations
- Next.js Team for the amazing framework
- Vercel for hosting and deployment
- TailwindCSS for the utility-first CSS framework
- Lucide for beautiful icons
- Framer Motion for smooth animations
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 Naseem's Portfolio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.