A modern, responsive portfolio website built with Next.js 14, TypeScript, and Tailwind CSS. This is a complete recreation of the original PHP portfolio with enhanced performance, accessibility, and modern development practices.
- Modern Tech Stack: Next.js 14, TypeScript, Tailwind CSS
- Responsive Design: Mobile-first approach with seamless desktop experience
- Performance Optimized: Fast loading with Next.js optimizations
- Accessibility: WCAG 2.1 AA compliant with screen reader support
- Interactive Components: Smooth animations and hover effects
- Project Filtering: Dynamic filtering for work vs personal projects
- Contact Form: Functional contact form with validation
- Resume Downloads: PDF and Word format downloads
src/
βββ app/ # Next.js App Router pages
β βββ about/ # About page
β βββ contact/ # Contact page with form
β βββ projects/ # Projects showcase with filtering
β βββ resume/ # Resume download page
β βββ work/ # Work experience timeline
β βββ globals.css # Global styles and CSS variables
β βββ layout.tsx # Root layout with fonts and metadata
β βββ page.tsx # Homepage
βββ components/ # Reusable React components
β βββ Header.tsx # Navigation header with mobile menu
βββ data/ # Data files
β βββ jobs.ts # Work experience data
β βββ projects.ts # Projects data
βββ public/assets/ # Static assets (images, resume files)
- Dark Theme: Professional dark color scheme with emerald accents
- Typography: Custom Google Fonts (Open Sans, Raleway, Oswald)
- Animations: Smooth transitions and hover effects
- Mobile Navigation: Hamburger menu with overlay
- Social Links: Fixed sidebar with GitHub and LinkedIn
- Email Contact: Vertical email display on desktop
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Fonts: Google Fonts (Open Sans, Raleway, Oswald)
- Icons: Font Awesome
- Development: ESLint, Prettier (configured)
- Node.js 18+
- npm, yarn, or pnpm
- Clone the repository:
git clone <repository-url>
cd portfolio-next- Install dependencies:
npm install
# or
yarn install
# or
pnpm install- Run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev- Open http://localhost:3000 in your browser
npm run build
npm start- Homepage (
/): Introduction and hero section - About (
/about): Personal background and technologies - Work (
/work): Professional experience timeline - Projects (
/projects): Portfolio projects with filtering - Contact (
/contact): Contact form and information - Resume (
/resume): Resume download links
- Responsive navigation with mobile hamburger menu
- Active page highlighting
- Social media links sidebar
- Skip-to-content accessibility link
- Dynamic filtering (All/Work/Personal projects)
- Modal dialogs for detailed project information
- Technology tags and external links
- Responsive grid layout
- Timeline-style layout
- Detailed job descriptions
- Company and date information
- Hover effects and animations
- Mobile First: Optimized for mobile devices
- Tablet: Adjusted layouts for medium screens
- Desktop: Full-featured experience with sidebars
- Large Screens: Optimal spacing and typography
- Semantic HTML: Proper heading hierarchy and landmarks
- ARIA Labels: Screen reader friendly navigation
- Keyboard Navigation: Full keyboard accessibility
- Focus Management: Visible focus indicators
- Skip Links: Quick navigation for screen readers
- Color Contrast: WCAG AA compliant color ratios
Edit src/data/projects.ts to add new projects with the following structure:
{
id: "unique-id",
title: "Project Title",
description: "Short description...",
fullDescription: "Detailed description...",
image: "/assets/project-image.png",
technologies: ["React", "TypeScript", "etc"],
type: "personal" | "work",
links: {
github: "https://github.com/...",
demo: "https://demo-url.com"
}
}Edit src/data/jobs.ts to add new positions:
{
id: "company-name",
title: "Job Title",
company: "Company Name",
startDate: "YYYY",
endDate: "YYYY" | "Present",
responsibilities: ["Achievement 1", "Achievement 2", ...]
}- Push code to GitHub
- Connect repository to Vercel
- Deploy automatically on push
- Netlify: Drag and drop the
outfolder afternpm run build - AWS S3: Upload static files after
npm run build && npm run export - GitHub Pages: Use
gh-pagespackage for deployment
- Next.js Optimizations: Automatic code splitting and optimization
- Image Optimization: Next.js Image component for optimal loading
- Font Optimization: Google Fonts with display swap
- CSS Optimization: Tailwind CSS purging for minimal bundle size
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit changes:
git commit -am 'Add new feature' - Push to branch:
git push origin feature/new-feature - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Erin Skidds
- Website: erinskidds.com
- GitHub: @DudeThatsErin
- LinkedIn: erinskidds
- Email: erin.skidds@gmail.com
Built with β€οΈ using Next.js and Tailwind CSS