A modern, professional portfolio website built with React, TypeScript, and Tailwind CSS featuring a sophisticated two-pane layout with smooth scrollspy navigation.
- Two-Pane Layout: Fixed left sidebar with portrait and contact info, scrollable right content area
- Dark Theme: Elegant dark aesthetic with warm brown accent colors derived from headshot background
- Responsive Design: Mobile-first approach with collapsible drawer navigation on smaller screens
- Smooth Animations: Framer Motion powered micro-interactions and page transitions
- Accessibility: WCAG compliant with proper focus management and semantic HTML
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS with custom CSS variables
- Build Tool: Vite for fast development and optimized builds
- Animations: Framer Motion for smooth transitions
- Icons: Lucide React for consistent iconography
- Code Quality: ESLint + Prettier
src/
├── components/
│ ├── ui/ # Reusable UI components (Button, Card, Badge, etc.)
│ └── sections/ # Layout components (Navbar, Footer)
├── data/ # Static data (profile, projects, skills, etc.)
├── layout/ # Layout components (RootLayout, SEOHead)
├── lib/ # Utilities (SEO, analytics, schema, utils)
├── pages/ # Route components
├── styles/ # Global CSS with Tailwind
└── assets/ # Static assets
- Node.js 18 or higher
- npm or yarn
-
Clone the repository
git clone https://github.com/aMonteSl/github-portfolio.git cd github-portfolio -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run typecheck- Run TypeScript type checkingnpm run lint- Run ESLintnpm run lint:fix- Fix ESLint issuesnpm run format- Format code with Prettiernpm run format:check- Check code formatting
This project is configured for automatic deployment to GitHub Pages using GitHub Actions.
-
Enable GitHub Pages
- Go to repository Settings → Pages
- Source: "GitHub Actions"
-
Configure Base Path (if needed)
For User/Organization site (e.g.,
username.github.io):// vite.config.ts export default defineConfig({ base: '/', // ... other config })
For Project site (e.g.,
username.github.io/repository-name):// vite.config.ts export default defineConfig({ base: '/repository-name/', // ... other config })
-
Deploy
- Push to
mainbranch - GitHub Actions will automatically build and deploy
- Site will be available at your GitHub Pages URL
- Push to
To deploy manually:
npm run build
# Upload the 'dist' folder to your hosting providerTo use a custom domain with GitHub Pages:
For Subdomain (www.example.com)
-
DNS Configuration
Type: CNAME Name: www Value: username.github.io -
GitHub Pages Settings
- Go to Settings → Pages
- Custom domain:
www.example.com - Check "Enforce HTTPS"
-
DNS Configuration
Type: A (or ALIAS/ANAME) Name: @ Value: 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 -
GitHub Pages Settings
- Custom domain:
example.com - Check "Enforce HTTPS"
- Custom domain:
- Performance: ≥ 95
- Accessibility: ≥ 95
- Best Practices: ≥ 95
- SEO: ≥ 95
- Dynamic meta tags for each page
- Open Graph and Twitter Card support
- JSON-LD structured data
- Sitemap.xml
- Robots.txt
- Canonical URLs
- Code splitting by routes
- Lazy loading images
- Prefetch on hover for internal links
- Optimized bundle sizes
- CSS and JS minification
All content is managed through TypeScript files in the src/data/ directory:
profile.ts- Personal information and summaryprojects.ts- Project portfolioeducation.ts- Academic background and achievementsactivities.ts- Professional activities and eventsskills.ts- Technical skills and expertiselanguages.ts- Language proficienciescontacts.ts- Contact information
Colors and styling can be customized in:
tailwind.config.js- Theme colors, fonts, spacingsrc/styles/index.css- Custom CSS and component styles
Analytics can be enabled by modifying src/lib/analytics.ts:
export const analyticsConfig = {
enabled: true, // Set to true to enable
plausibleDomain: 'your-domain.com',
plausibleScript: 'https://plausible.io/js/script.js'
}- React 18 - UI library with hooks and concurrent features
- TypeScript - Type safety and better developer experience
- Vite - Fast build tool and development server
- Tailwind CSS - Utility-first CSS framework
- ESLint - Code linting and style enforcement
- Prettier - Code formatting
- PostCSS - CSS processing with Tailwind
- Framer Motion - Smooth animations and transitions
- GitHub Actions - CI/CD pipeline
- GitHub Pages - Static site hosting
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
This project is open source and available under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
For questions or support, please contact:
- Email: adrian.adyra@gmail.com
- LinkedIn: adrianmonteslinares
- GitHub: aMonteSl
Built with ❤️ by Adrián Montes