An open API service indexing awesome lists of open source software.

https://github.com/andrejkoller/personal

Multilingual personal portfolio website built with Next.js 14+, featuring responsive design, i18n support (EN/DE/RU), and a functional contact form with SendGrid integration.
https://github.com/andrejkoller/personal

css3 html5 javascript nextjs react

Last synced: 5 months ago
JSON representation

Multilingual personal portfolio website built with Next.js 14+, featuring responsive design, i18n support (EN/DE/RU), and a functional contact form with SendGrid integration.

Awesome Lists containing this project

README

          

## Short description

A modern, multilingual personal portfolio website built with Next.js 16 and the App Router. Features a responsive design, internationalization support, and a functional contact form with email notifications.

## ✨ Features

- Multilingual Support: English, German and Russian language options
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Contact Form: Functional contact form with email validation and SendGrid integration
- Modern Tech Stack: Built with Next.js 16, React 19, and CSS Modules
- International Phone Validation: Supports phone number validation for multiple countries
- Dynamic Routing: Language-based routing with Next.js App Router

## 🛠️ Technologies Used

- Framework: Next.js 16 (App Router)
- Frontend: React 19, CSS Modules
- Email Service: SendGrid with Nodemailer
- Validation: libphonenumber-js for international phone numbers
- Image Optimization: Next.js Image component
- Typography: Cormorant, Rubik and Gloock font family

## 📦 Installation

1. Clone the repository:

```bash
git clone https://github.com/andrejkoller/personal.git
cd personal
```

2. Install dependencies:

```bash
npm install
```

3. Run the development server:

```bash
npm run dev
```

4. Navigate to `http://localhost:3000/`

## 📸 Screenshots

Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
Screenshot 7
Screenshot 8
Screenshot 9
Screenshot 10
Screenshot 11
Screenshot 12
Screenshot 13
Screenshot 14
Screenshot 15