A modern, responsive personal portfolio website built with Angular 18, featuring a beautiful glass morphism design and optimized for performance.
- Modern Design: Glass morphism UI with beautiful animations
- Responsive: Optimized for all devices and screen sizes
- Performance: Optimized for production with minimal bundle size
- SEO Optimized: Meta tags, structured data, and sitemap
- PWA Ready: Progressive Web App capabilities
- Accessibility: WCAG compliant design
- Framework: Angular 18 (Standalone Components)
- Styling: SCSS with CSS Variables
- Icons: Font Awesome 6
- Fonts: Google Fonts (Inter, JetBrains Mono)
- Build Tool: Angular CLI
- Deployment: Static hosting ready
# Clone the repository
git clone https://github.com/essare/essare.me
cd essare.me
# Install dependencies
npm install
# Start development server
npm start# Development build
npm run build:dev
# Production build
npm run build:prod
# Analyze bundle size
npm run analyze
# Run tests
npm test
# Lint code
npm run lint# Make script executable
chmod +x deploy.sh
# Run deployment script
./deploy.sh# Build for production
npm run build:prod
# The built files will be in dist/essare-me/browser/
# Upload these files to your web server- Firebase Hosting: Use Firebase CLI (recommended)
- Netlify: Drag and drop
dist/essare-me/browser/folder - Vercel: Connect repository and deploy automatically
- GitHub Pages: Use GitHub Actions
- Traditional Hosting: Upload
dist/essare-me/browser/contents
# Run the Firebase setup script
./setup-firebase.shThis will:
- Install Firebase CLI if needed
- Help you login to Firebase
- Show available projects
- Initialize Firebase configuration
# Make script executable
chmod +x deploy-firebase.sh
# Run Firebase deployment script
./deploy-firebase.sh# Install Firebase CLI globally
npm install -g firebase-tools
# Login to Firebase
firebase login
# Deploy to Firebase
npm run firebase:deploy# Build for production
npm run build:prod
# Deploy to Firebase
firebase deploy --only hostingThe repository includes GitHub Actions workflows that automatically deploy:
- On merge to main: Deploys to production
- On pull requests: Creates preview deployments
Firebase Project Issues:
- If you get "Failed to get Firebase project essare-me", the project doesn't exist
- Create the project in Firebase Console
- Or update the project ID in
firebase.jsonand GitHub Actions workflows
Build Size Warnings:
- CSS budget warnings are normal for a modern portfolio
- The build will still succeed with warnings
- To reduce size, consider optimizing images or removing unused styles
Node Version Warnings:
- Angular 18 requires Node.js 20.19.0+ or 22.12.0+
- Update Node.js if you see engine warnings
src/
βββ app/
β βββ components/
β β βββ navbar/
β β βββ footer/
β βββ pages/
β β βββ home/
β β βββ about/
β β βββ experience/
β β βββ skills/
β β βββ projects/
β β βββ certifications/
β β βββ contact/
β βββ app.component.ts
β βββ app.routes.ts
β βββ app.config.ts
βββ environments/
β βββ environment.ts
β βββ environment.prod.ts
βββ styles.scss
βββ main.ts
public/
βββ assets/
β βββ img/
β βββ css/
β βββ js/
βββ robots.txt
βββ sitemap.xml
βββ favicon files
- Primary:
#667eea - Secondary:
#764ba2 - Accent:
#f093fb - Success:
#4ade80 - Warning:
#fbbf24 - Error:
#f87171
- Primary Font: Inter
- Monospace Font: JetBrains Mono
- XS:
0.25rem - SM:
0.5rem - MD:
1rem - LG:
1.5rem - XL:
2rem - 2XL:
3rem - 3XL:
4rem
- Mobile:
max-width: 768px - Tablet:
max-width: 1024px - Desktop:
min-width: 1025px
Create environment files for different configurations:
src/environments/environment.ts- Developmentsrc/environments/environment.prod.ts- Production
Update the following files for SEO:
src/index.html- Meta tagspublic/sitemap.xml- Sitemappublic/robots.txt- Robots file
- Tree Shaking: Unused code is automatically removed
- Code Splitting: Lazy loading for routes
- Image Optimization: Optimized images and lazy loading
- CSS Optimization: Purged unused styles
- Bundle Analysis: Use
npm run analyzeto check bundle size
# Build with stats
npm run build:prod
# Analyze bundle
npm run analyze# Run unit tests
npm test
# Run tests with coverage
npm run test:coverage- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is licensed under the MIT License.
Ayoub Essare
- Website: essare.me
- LinkedIn: ayoub-essare
- GitHub: essare-ayoub
- Blog: blog.essare.me
- Angular team for the amazing framework
- Font Awesome for the icons
- Google Fonts for the typography
- The open-source community for inspiration