Source code for my personal portfolio website, online at bitrey.dev.
It uses Next.js with the App Router, TypeScript, Tailwind CSS, form validation with zod, and some APIs:
- Weather data from OpenWeatherMap.
- Email sending using the Nodemailer package, through a Next.js API route.
- Cloudflare Turnstile for a non-intrusive CAPTCHA on the contact form.
- Uses
next-intlboth in routing and messages, currently in Italian, English, and Czech. - Client-side theme switching (Light/Dark) with system preference detection.
- A carousel displaying information and tech stacks for some projects I've worked on (defined in config/projects.ts).
- A contact form secured with Cloudflare Turnstile, which routes through Next.js API handler, and uses Nodemailer for sending emails.
- The UI is built mainly using Flowbite React and custom components.
- Personal touches:
- Real-time weather information from my city (Modena) using OpenWeatherMap API.
- Visualization of countries I've visited using
react-simple-maps.
git clone https://github.com/alessandroamella/portfolio-v3
cd portfolio-v3pnpm installCreate a .env file containing the environment variables as defined in config/envs.ts.
# Example
NEXT_PUBLIC_TURNSTILE_SITE_KEY=your_turnstile_site_key
TURNSTILE_SECRET_KEY=your_turnstile_secret_key
MAIL_SERVER=smtp.example.com
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
[email protected]
SEND_EMAIL_FROM_NAME=Your App Name
[email protected]
WEATHER_API_KEY=your_weather_api_keypnpm devOpen http://localhost:3000 and voila!
This project is open-source. See the LICENSE file for details.