This repository contains the source code for my personal portfolio website, developed with Next.js 15 and TypeScript. This site showcases my development skills through interactive components, responsive design, and modern web technologies.
- Framework: Next.js 15 - React framework with App Router and Turbopack
- Language: TypeScript - for static typing and better maintainability
- Styling: Tailwind CSS v4 - utility CSS framework with custom configurations
- UI Components: shadcn/ui - accessible and customizable interface elements
- Icons: Lucide React - beautiful & consistent icon toolkit
- Markdown: React Markdown - for blog content rendering
- State Management: React Context API for lightweight state management
- Blogging: Simplist SDK - for fetching and displaying blog articles
The project integrates multiple services requiring environment variables:
# Blog Content (Required)
SIMPLIST_API_KEY=<Your Simplist API Key>
# URL Shortener (Required for shortener functionality)
UPSTASH_REDIS_REST_URL=<Your Upstash Redis URL>
UPSTASH_REDIS_REST_TOKEN=<Your Upstash Redis Token>
# Spotify Integration (Optional - for music player)
SPOTIFY_CLIENT_ID=<Your Spotify Client ID>
SPOTIFY_CLIENT_SECRET=<Your Spotify Client Secret>
SPOTIFY_REFRESH_TOKEN=<Your Spotify Refresh Token>
- Simplist: A blogging service with an SDK to retrieve blog articles. The website fetches blog posts from Simplist and displays them with proper markdown rendering. For more information, visit Simplist.
- Upstash Redis: Used for the integrated URL shortener functionality, storing short links with password protection and expiration features.
- Spotify: Powers the real-time music player showing currently playing tracks (optional feature).
- Clone the repository:
git clone https://github.com/Steellgold/website.git
cd website- Install dependencies:
pnpm install- Configure the environment variables in
.env.local:
# Required for blog functionality
SIMPLIST_API_KEY=your_simplist_api_key_here
# Required for URL shortener (optional)
UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token
# Optional Spotify integration
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token- Start the development server:
pnpm dev- Access the site locally at
http://localhost:3000.
To build the project for production:
pnpm buildTo start the production server:
pnpm startwebsite/
βββ app/ # Next.js App Router pages
β βββ (ui)/ # UI components showcase
β βββ (apps)/ # Integrated applications
β β βββ (shortener)/ # URL shortener functionality
β βββ blog/[slug]/ # Dynamic blog post pages
β βββ api/auth/spotify/ # Spotify OAuth integration
β βββ globals.css # Global styles with Tailwind
β βββ layout.tsx # Root layout component
β βββ page.tsx # Home page
βββ components/ # Reusable React components
β βββ sections/ # Page sections (header, skills, etc.)
β βββ markdown/ # Markdown rendering components
β βββ ui/ # shadcn/ui components
βββ config/ # Configuration files
β βββ projects.ts # Projects data
β βββ blog.ts # Blog posts metadata
βββ contexts/ # React context providers
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions and configurations
β βββ actions/ # Server actions
β βββ blog.ts # Simplist API integration
β βββ shortener.ts # URL shortener logic
β βββ spotify.ts # Spotify API integration
βββ public/ # Static assets
βββ registry/ # shadcn/ui component registry
βββ type/ # TypeScript type definitions
- Responsive Design: Mobile-first approach with Tailwind CSS v4
- Blog Integration: Dynamic blog posts with markdown support via Simplist SDK
- URL Shortener: Integrated link shortening service with password protection and expiration
- Real-time Music Player: Spotify integration showing currently playing tracks
- Component Registry: Custom shadcn/ui component system
- SEO Optimized: Meta tags, Open Graph, and Twitter Cards
- Performance: Optimized with Turbopack, Next.js 15, and image optimization
- Accessibility: Semantic HTML and ARIA attributes
- Dark Theme: Beautiful dark theme with custom CSS variables
This project is open-source and available under the MIT License. Feel free to use this code as inspiration for your own projects!