A modern, interactive portfolio website built with Next.js 15, TypeScript, Tailwind CSS, and Framer Motion. Features a unique macOS-style interface with smooth animations and responsive design.
Visit the live website: https://nrenx.github.io/portfolio/
- macOS-Style Interface: Interactive desktop environment with draggable folders and windows
- Multi-Language Landing: Animated greeting in multiple languages
- Dark/Light Theme: Seamless theme switching with system preference detection
- Responsive Design: Optimized for all devices and screen sizes
- Smooth Animations: Powered by Framer Motion for fluid user experience
- Static Export: Optimized for GitHub Pages deployment
- Modern Stack: Built with Next.js 15, TypeScript, and Tailwind CSS
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- Animations: Framer Motion
- UI Components: shadcn/ui
- Icons: Lucide React
- Deployment: GitHub Pages with GitHub Actions
- Node.js 20 or later
- npm or yarn
- Clone the repository:
git clone https://github.com/nrenx/portfolio.git
cd portfolio- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm run build:github- Build for GitHub Pages deploymentnpm run start- Start production servernpm run lint- Run ESLint
This project is configured for automatic deployment to GitHub Pages using GitHub Actions.
-
Fork or clone this repository
-
Enable GitHub Pages:
- Go to your repository settings
- Navigate to "Pages" section
- Set source to "GitHub Actions"
-
Configure repository secrets (if needed):
- No additional secrets required for basic deployment
-
Push to main branch:
- The GitHub Action will automatically build and deploy your site
- Your site will be available at
https://yourusername.github.io/portfolio/
If you prefer manual deployment:
# Build for GitHub Pages
npm run build:github
# The static files will be generated in the 'out' directory
# Upload the contents of 'out' directory to your GitHub Pages branch├── .github/workflows/ # GitHub Actions workflows
├── public/ # Static assets
│ ├── assets/ # Images, fonts, resume
│ ├── icons/ # App icons
│ └── .nojekyll # Disable Jekyll processing
├── src/
│ ├── app/ # Next.js app directory
│ ├── components/ # React components
│ ├── contexts/ # React contexts
│ ├── data/ # Static data
│ └── lib/ # Utilities and constants
├── styles/ # Global styles
└── next.config.ts # Next.js configuration
Update the following files with your information:
src/lib/constants.ts- Update SEO config, social links, and personal detailssrc/data/projects.ts- Add your projectspublic/assets/- Replace with your images and resumepublic/assets/resume/- Add your resume PDF
- Colors: Modify
src/app/globals.cssfor theme colors - Fonts: Update font imports in
src/app/layout.tsx - Components: Customize components in
src/components/
If your repository name is different from "portfolio":
- Update
basePathandassetPrefixinnext.config.ts - Update the
getAssetPathfunction insrc/lib/utils.ts - Update the site URL in
src/lib/constants.ts
Create a .env.local file for local development:
NEXT_PUBLIC_BASE_URL=http://localhost:3000
GITHUB_PAGES=falseFor production (GitHub Pages), these are automatically set by the build process.
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is open source and available under the MIT License.
- Next.js for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- Framer Motion for smooth animations
- shadcn/ui for beautiful UI components
- Lucide for the icon library
Built with ❤️ by Narendra Chowdary