This repository contains the source code for my personal portfolio website, developed with Next.js and TypeScript. This site showcases my development skills through interactive components, responsive design, and integrations with multiple APIs and libraries.
- Framework: Next.js - for building React applications.
- Language: TypeScript - for static typing and better maintainability.
- Styling: Tailwind CSS - utility CSS framework with custom configurations.
- State Management: Zustand - for lightweight and scalable state management.
- UI Components: Radix UI for accessible and customizable interface elements.
- APIs: Integration with external services like Spotify, Simplist, OpenAI, Plunk, and Upstash for various features.
The project uses several APIs to enrich the site with dynamic content and custom features. Here are the required environment variables, which you need to configure in an environment variable file:
SPOTIFY_CLIENT_ID=<Your Spotify Client ID>
SPOTIFY_CLIENT_SECRET=<Your Spotify Client Secret>
SPOTIFY_REFRESH_TOKEN=<Your Spotify Refresh Token>
SIMPLIST_API_KEY=<Your Simplist API Key>
OPENAI_API_KEY=<Your OpenAI API Key>
UPSTASH_REDIS_REST_TOKEN=<Your Upstash Redis Token>
SECRET_PLUNK_API_KEY=<Your Plunk API Key>
- Spotify API: Allows displaying the currently playing music for a personal and dynamic touch.
- Simplist: A blogging service that lets me post and retrieve blog articles via their API. For more information, visit Simplist.
- OpenAI: Integrated for an interactive chatbot, using OpenAI to generate automated responses.
- Upstash: Used for rate limiting and server-side Redis data management, ensuring optimal performance.
- Plunk: Used for sending mails, say to chatbot "Contact Gaëtan" to send me an email!
- Clone the repository:
git clone https://github.com/Steellgold/website.git
cd website
- Install dependencies:
pnpm install
-
Configure the environment variables in
.env
as indicated above. -
Start the development server:
pnpm dev
- Access the site locally at
http://localhost:3000
.