A modern, responsive portfolio website built with Next.js, TypeScript, and Tailwind CSS.
- Modern Tech Stack: Next.js 15, TypeScript, Tailwind CSS
- Responsive Design: Mobile-first approach with beautiful animations
- Data-Driven: Content managed through JSON files for easy updates
- PDF Export: Built-in PDF export functionality for resume
- Performance Optimized: Server-side rendering with Next.js
- SEO Ready: Proper meta tags and structured data
- Framework: Next.js 15
- Language: TypeScript
- Styling: Tailwind CSS
- Icons: Lucide React
- PDF Generation: jsPDF + html2canvas
- Deployment: Vercel (recommended)
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone https://github.com/pablorecio/pablorecio.github.io.git
cd pablorecio.github.io- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
src/
├── app/ # Next.js app directory
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
│ ├── Header.tsx # Navigation header
│ ├── Hero.tsx # Hero section
│ ├── Experience.tsx # Work experience
│ ├── Technologies.tsx # Tech stack
│ ├── Hobbies.tsx # Hobbies section
│ ├── Contact.tsx # Contact information
│ └── PDFExport.tsx # PDF export functionality
├── data/ # JSON data files
│ ├── experience.json
│ ├── technologies.json
│ ├── hobbies.json
│ └── contact.json
└── lib/ # Utility functions
└── utils.ts
All content is managed through JSON files in the src/data/ directory:
- Experience: Edit
src/data/experience.json - Technologies: Edit
src/data/technologies.json - Hobbies: Edit
src/data/hobbies.json - Contact: Edit
src/data/contact.json
The project uses Tailwind CSS with custom configuration. Key files:
tailwind.config.js- Tailwind configurationsrc/app/globals.css- Global styles and custom CSSsrc/components/- Component-specific styles
The project uses a custom dark theme with green accents:
- Background:
#0E1116 - Primary:
#22FF88 - Card:
#11161D - Text:
#E6E6E6
- Push your code to GitHub
- Connect your repository to Vercel
- Deploy automatically
The project can be deployed to any platform that supports Next.js applications.
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
The portfolio includes a PDF export feature that generates a clean, printable version of the resume. The export uses:
- jsPDF for PDF generation
- html2canvas for content capture
- Custom styling for print optimization
- Mobile-first approach
- Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)
- Touch-friendly navigation
- Optimized images and fonts
- Server-side rendering for fast loading
- Image optimization with Next.js Image component
- Minimal JavaScript bundle
- CSS optimization with Tailwind
- 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.
The project uses PostHog for analytics. To configure PostHog with environment variables:
NEXT_PUBLIC_POSTHOG_KEY: Your PostHog project keyNEXT_PUBLIC_POSTHOG_HOST: PostHog API host (default: https://eu.i.posthog.com)
- Create a
.env.localfile in the root directory:
# PostHog Configuration
NEXT_PUBLIC_POSTHOG_KEY=phc_Dr4HuSTh5ssM6Gw0Shm5Vh3h0QFyMc0dI7omWNXdghW
NEXT_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com- Restart your development server:
npm run devOption 1: Using Vercel CLI
# Install Vercel CLI if you haven't already
npm i -g vercel
# Set environment variables
vercel env add NEXT_PUBLIC_POSTHOG_KEY
vercel env add NEXT_PUBLIC_POSTHOG_HOST
# Deploy
vercel --prodOption 2: Using Vercel Dashboard
- Go to your project in the Vercel dashboard
- Navigate to Settings → Environment Variables
- Add the following variables:
NEXT_PUBLIC_POSTHOG_KEY:phc_Dr4HuSTh5ssM6Gw0Shm5Vh3h0QFyMc0dI7omWNXdghWNEXT_PUBLIC_POSTHOG_HOST:https://eu.i.posthog.com
- Redeploy your application
The PostHog configuration has been moved from the hardcoded index.html file to a React component (src/components/PostHogProvider.tsx) that uses environment variables. This provides:
- Flexibility: Different keys for development and production
- Security: No hardcoded keys in your repository
- Maintainability: Easy to update keys without code changes
- Never commit
.env.localto version control - Use different PostHog keys for development and production
- Consider using Vercel's built-in environment variable management for production
- PostHog not tracking: Check that environment variables are properly set
- Environment variables not loading: Ensure they start with
NEXT_PUBLIC_for client-side access - Fallback behavior: If environment variables are not set, the system will fall back to the original hardcoded values
- Email: [email protected]
- LinkedIn: linkedin.com/in/pablorecio
- GitHub: github.com/pablorecio