A modern, interactive portfolio website built with Next.js 14, featuring a terminal-inspired design, RPG-style resume, achievement system, and clean modular architecture.
- Terminal-inspired interface with command-line aesthetics
- Multiple themes: Light, Dark, Catppuccin, Dracula, Monochrome
- Responsive design optimized for all devices
- Smooth animations and interactive elements
- Glass morphism effects and modern UI components
- Achievement system - Unlock badges by exploring the site
- Easter eggs - Hidden surprises and Konami code support
- RPG-style resume - Character sheet with stats and inventory
- Command prompt navigation - Terminal-style site navigation
- Syntax highlighting for code blocks
- Project showcase with dynamic loading
- Contact form with Formspree integration
- SEO optimized with proper meta tags
- Next.js 14 with App Router
- TypeScript for type safety
- Tailwind CSS for styling
- Formspree for contact form handling
- shadcn/ui components
- Lucide React icons
- Modular architecture with separated types, contexts, and components
- Node.js 18+
- npm or yarn
- Formspree account
-
Clone the repository
git clone https://github.com/Alexis12119/portfolio.git cd portfolio -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local
Fill in your environment variables in
.env.local:# Formspree Configuration NEXT_PUBLIC_FORMSPREE_ID=your_formspree_form_id # GitHub Configuration NEXT_PUBLIC_GITHUB_USERNAME=your_github_username
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
-
Create a Formspree account at formspree.io
-
Create a new form:
- Set up a new form
- Copy your form ID (e.g.,
mdkzwylk)
-
Add to environment variables:
NEXT_PUBLIC_FORMSPREE_ID=your_form_id_here
-
Form features:
- Automatic email notifications
- Spam protection
- Custom thank you page
- Form validation
The portfolio includes 5 built-in themes:
- Light - Clean light theme
- Dark - Modern dark theme
- Catppuccin - Pastel color scheme
- Dracula - Popular dark theme
- Monochrome - Black and white
- Add theme colors to
app/globals.css - Update the themes array in
components/layout/navbar.tsx - Add theme to
tailwind.config.jsif needed
- Personal info: Update in component files
- Projects: Modify static project data in components
- Skills: Edit
components/skills.tsx - About section: Modify
components/about.tsx
- Welcome - Visit the portfolio
- About Explorer - Read about section
- Skill Seeker - Check skills
- Project Viewer - Explore projects
- Contact Initiator - Send message
- Theme Switcher - Change themes
- Konami Master - Enter secret code
- Resume Viewer - Check RPG resume
// In any component
const { unlockAchievement } = useAchievements()
unlockAchievement(
"achievement-id",
"Achievement Title",
"Description",
"๐" // Icon
)Enter the classic Konami code to unlock a special Matrix effect:
โ โ โ โ โ โ โ โ B A
Hidden Features
- Type "vim" anywhere on the page
- Double-click for surprises
- Explore the terminal commands
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy - Automatic deployments on push
- Netlify: Add environment variables and deploy
- Railway: Configure environment and deploy
- Self-hosted: Use
npm run buildand serve theoutfolder
โโโ app/ # Next.js app directory
โ โโโ globals.css # Global styles and themes
โ โโโ layout.tsx # Root layout with providers
โ โโโ page.tsx # Homepage
โโโ components/ # React components
โ โโโ ui/ # shadcn/ui components
โ โโโ layout/ # Layout components (navbar, footer)
โ โโโ achievement-notification.tsx # Achievement notifications
โ โโโ matrix-rain.tsx # Easter egg component
โ โโโ ... # Feature components (about, skills, projects, etc.)
โโโ hooks/ # Custom React hooks
โ โโโ use-achievements.tsx # Achievement system hook
โ โโโ use-easter-eggs.tsx # Easter egg functionality
โโโ lib/ # Utility functions and configurations
โ โโโ types/ # TypeScript type definitions
โ โโโ contexts/ # React context providers
โ โโโ utils.ts # Utility functions
โโโ public/ # Static assets
- Hero - Landing section with terminal
- About - Personal information
- Skills - Technical skills showcase
- Projects - Project portfolio
- Resume RPG - Gamified resume
- Contact - Contact form
useAchievements- Achievement systemuseEasterEggs- Easter egg functionality
The codebase follows a modular architecture with:
- Types (
lib/types/) - Centralized TypeScript interfaces - Contexts (
lib/contexts/) - React context providers - Components - Reusable UI components
- Hooks - Custom React hooks for logic
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard:
NEXT_PUBLIC_FORMSPREE_ID=your_form_id_here NEXT_PUBLIC_GITHUB_USERNAME=your_github_username
- Deploy - Automatic deployments on push
- Netlify: Add environment variables and deploy
- Railway: Configure environment and deploy
- Self-hosted: Use
npm run buildand serve theoutfolder
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
- Next.js - React framework
- Tailwind CSS - Utility-first CSS
- shadcn/ui - Beautiful components
- Formspree - Form handling
- Lucide - Beautiful icons
- Vercel - Deployment platform
- Email: corporal461@gmail.com
- GitHub: @Alexis12119
- Portfolio: alexis.dev
Built with โค๏ธ by Alexis Corporal
A modern, modular portfolio showcasing clean architecture and interactive design.