This is a modern portfolio website built with Next.js, Tailwind CSS, and other cutting-edge technologies. It showcases projects, skills, and experience in a visually appealing and responsive design.
- Features
- Technologies Used
- Getting Started
- Development Workflow
- Folder Structure
- Testing
- Deployment
- Contributing
- License
- Responsive Design: Fully optimized for desktop, tablet, and mobile devices.
- Dynamic Content: Projects, skills, and experience are dynamically rendered.
- Dynamic Views: Display skills and projects in responsive grids, tables, and charts.
- Dark Mode: Built-in dark mode support using
next-themes
. - Accessibility: WCAG-compliant components for an inclusive user experience.
- Fast Performance: Optimized with Next.js. SSR by default with CSR where needed.
- SEO-Friendly: Meta tags and Open Graph support for better search engine visibility.
- Framework: Next.js (App Router) with TypeScript
- Styling: Tailwind CSS
- UI Components:
- Custom components and design system
- Some components built with Radix UI
- TanStack Table
- A few simple charts built with Recharts
- State Management: Simple state managed with custom hooks
- Utilities:
- Media Management
- Icons as react components to support dynamic styling
- Images hosted on Cloudinary
- Images optimized using Cloudinary and Next.js
- Videos stored as Vercel Blobs and fetch using a custom hook and an API route
- Contact Form:
- Custom hooks for state management and input validation
- Nodemailer
- Testing:
- Jest for unit testing
- @testing-library/react for component testing
- Cypress for end-to-end testing
- Deployment: Vercel
Ensure you have the following installed:
-
Clone the repository:
git clone https://github.com/your-username/portfolio-2025-nextjs-js-tailwind.git cd portfolio-2025-nextjs-js-tailwind
-
Install dependencies:
npm install # or yarn install
Start the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 in your browser to view the app.
Run the following command to lint your code and check for TypeScript errors:
npm run lint
To build the application for production:
npm run build
Run all tests:
npm test
portfolio-2025-nextjs-js-tailwind/
├── app/ # Next.js App Router
│ ├── page.tsx # Main entry point for the homepage
│ ├── about/ # About page
│ ├── projects/ # Projects page
├── components/ # Reusable React components
│ ├── common/ # Shared components (e.g., Button, IconBar)
│ ├── icons/ # SVG icons (e.g., PythonIcon, PhpIcon)
│ ├── layout/ # Layout components (e.g., Header, Footer)
│ ├── projects/ # Project-specific components (e.g., ProjectModal)
├── hooks/ # Custom React hooks (e.g., useContactForm)
├── styles/ # Global styles and Tailwind configuration
├── tests/ # Unit and integration tests
├── public/ # Static assets (e.g., images, fonts)
├── package.json # Project metadata and dependencies
This project uses Jest and @testing-library/react for unit and integration tests, and Cypress for end-to-end testing.
npm test
npx cypress open
The project is optimized for deployment on Vercel.
- Push your code to a GitHub repository.
- Connect the repository to Vercel.
- Vercel will automatically build and deploy your application.
For more details, refer to the Next.js Deployment Documentation.
Contributions are welcome! If you'd like to contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
. - Commit your changes:
git commit -m "Add your feature"
. - Push to the branch:
git push origin feature/your-feature-name
. - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.