A Portfolio made with Nextjs, Reactjs, Typescript, TailwindCSS, Framer motion, Resend and React-email.
- Built with React.js and Next.js
- Fully typed with TypeScript
- Form handled with server actions
- Integrated Resend API for email sending (requires API key)
- Animations created with Framer Motion
- Styled using TailwindCSS
- Fully responsive design
- Custom hooks
- Integrated React Vertical Timeline component
- Optimized for SEO and accessibility
- PWA (Progressive web app)
- Light/dark mode toggle
- Hosted on Vercel
Install it with pnpm
pnpm install
Clone the project
git clone https://github.com/cjgv1809/Portfolio-2.0.git
Go to the project directory
cd new-portfolio-project
Install dependencies
pnpm install
Start the server
pnpm run dev
To run this project, you will need to add the following environment variables to your .env file
RESEND_API_KEY
CONTACT_EMAIL
NODE_ENV=development
![657shots_so](https://private-user-images.githubusercontent.com/57246901/338003448-a32cee3c-9e4e-42f6-b11d-c8e21e459a70.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDcxNzksIm5iZiI6MTcyNDMwNjg3OSwicGF0aCI6Ii81NzI0NjkwMS8zMzgwMDM0NDgtYTMyY2VlM2MtOWU0ZS00MmY2LWIxMWQtYzhlMjFlNDU5YTcwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MDc1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJiZjlhNDM4YzdkNDE0ZTExZmRkZWU4MDQzM2Q5N2Y5YTRlOTY4M2UxODAzOThkZDcyZWQyMjkwZTM4N2ZhNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.N4bN1wYBECaQIbCJIB9v770XqxJGykTzf04YbMYQEJE)
![421shots_so](https://private-user-images.githubusercontent.com/57246901/338003443-52ac5571-3e34-416a-9254-bbdbe0ac9d73.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDcxNzksIm5iZiI6MTcyNDMwNjg3OSwicGF0aCI6Ii81NzI0NjkwMS8zMzgwMDM0NDMtNTJhYzU1NzEtM2UzNC00MTZhLTkyNTQtYmJkYmUwYWM5ZDczLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MDc1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE5NGVmMTgzNGEzN2Y1ZjNmNDMxNTRmYjcyNWViODEzN2MxMWFiNjllMDJmZGNkYzk2N2M3NTI0ODZhYWViM2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Ems6yXNlO4Sw2kTI-6i_j8wvE598voGkaRpADoMX8FM)
![80shots_so](https://private-user-images.githubusercontent.com/57246901/338003758-86992c3f-a949-4948-82ad-19a937ba050a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDcxNzksIm5iZiI6MTcyNDMwNjg3OSwicGF0aCI6Ii81NzI0NjkwMS8zMzgwMDM3NTgtODY5OTJjM2YtYTk0OS00OTQ4LTgyYWQtMTlhOTM3YmEwNTBhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MDc1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYxYmU4MGZmNDQ4NmE4MTM2MWE2ODZmZTViMzdlNzFjODFlYmUyYTRmMzc2YmM2ZWJiM2QwMTdiMjAwMDUzMjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tCZoj6lzATfjY1xa0jGMnUFsnYKHQ0O5mcrhJYnMD1U)
![80shots_so](https://private-user-images.githubusercontent.com/57246901/338003441-995834e5-8344-4222-b12d-989a48273f50.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDcxNzksIm5iZiI6MTcyNDMwNjg3OSwicGF0aCI6Ii81NzI0NjkwMS8zMzgwMDM0NDEtOTk1ODM0ZTUtODM0NC00MjIyLWIxMmQtOTg5YTQ4MjczZjUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MDc1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI5ZDJmMTRkNDA1ZTBmMjgzZjkyY2ZlNmUzZGQzOThjNjA2NGM3YWNkZTk3ZGUzNmI1YjI4OWI0NGVmNzBjYjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MMUnKKopqHmA289yc3cSwKlx3rcj9Dv91_f85W8wS6g)