A modern, data-driven portfolio built for production with Firebase integration and comprehensive admin dashboard
- π₯ Firebase-Powered: Real-time data management with Firestore
- π Dual Authentication: Google OAuth + Email/Password login
- π Dynamic Content: Projects, experience, and skills managed via admin dashboard
- π¨ Professional Design: Modern UI with custom signature branding
- π± Mobile-First: Responsive design optimized for all devices
- β‘ Performance: Lighthouse score 95+ with optimized loading
Frontend: React 18 + TypeScript + Vite
UI: shadcn/ui + Radix UI + Tailwind CSS
Backend: Firebase (Auth + Firestore)
Analytics: Google Analytics 4
SEO: Structured data + Open Graph + Twitter Cards
Deploy: GitHub Actions + GitHub Pages
- π CV Download: Direct PDF download functionality
- π Smart Admin Access: Hidden login via signature triple-click + visible admin button
- π Real-time Analytics: Google Analytics integration
- π SEO Optimized: Perfect for Google search visibility
- π― Auto-Seeding: Automatic project data population on first load
# Clone and setup
git clone https://github.com/mounir1/portfolio.git
cd portfolio
npm install
# Start development server
npm run dev# Professional production build with verification
npm run build:production
# Preview production build
npm run preview
# Deploy to GitHub Pages
npm run deployCreate .env.local with your Firebase config:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=your_measurement_idrules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectId} {
allow read: if true;
allow write: if request.auth != null;
}
}
}- π Smart Button: Click admin button next to signature in footer
- π±οΈ Hidden Access: Triple-click signature for discrete admin access
- π Direct URL: Navigate to
/admin
- π Overview: Real-time statistics and quick actions
- π Project Management: Full CRUD operations with rich metadata
- ποΈ Content Control: Toggle visibility, featured status, priority
- π Analytics: Project performance and engagement metrics
- π Real-time Updates: Changes reflect immediately on live site
// Comprehensive project schema
interface Project {
title: string;
description: string;
longDescription?: string;
category: ProjectCategory;
status: ProjectStatus;
achievements: string[];
technologies: string[];
tags: string[];
image?: string;
liveUrl?: string;
githubUrl?: string;
demoUrl?: string;
featured: boolean;
disabled: boolean;
priority: number;
startDate?: string;
endDate?: string;
duration?: string;
// Auto-managed fields
createdAt: number;
updatedAt: number;
}- β‘ Code Splitting: Vendor, Firebase, and UI chunks
- ποΈ Minification: Terser with console removal
- π¦ Bundle Analysis: Built-in bundle analyzer
- π Lazy Loading: Components and routes
- πΎ Caching: Optimized Firebase queries
- π Google Analytics: Full GA4 integration
- π Structured Data: Rich snippets for search results
- π Open Graph: Perfect social media sharing
- π¦ Twitter Cards: Enhanced Twitter sharing
- πΊοΈ Sitemap: Auto-generated sitemap.xml
- π€ Robots.txt: Optimized for search engines
npm run build:production # Professional build with verification
npm run type-check # TypeScript validation
npm run lint:fix # Auto-fix linting issues
npm run analyze # Bundle size analysis
npm run clean # Clean build artifacts- Logo: Update
/public/mounir-icon.svg - Signature: Modify
src/components/ui/signature.tsx - Colors: Customize
tailwind.config.ts - Fonts: Update CSS variables in
src/index.css
- Auto-Seeding: Initial projects loaded from
src/data/initial-projects.ts - Dynamic Updates: All content manageable via admin dashboard
- Real-time Sync: Changes reflect immediately across all users
- Setup Secrets: Add Firebase config to GitHub repository secrets
- Push Code: GitHub Actions automatically builds and deploys
- Custom Domain: Configure DNS for your domain
# Build and deploy
npm run build:production
npm run deploy
# Or upload dist/ folder to any static hosting- Development: Local development with hot reload
- Staging: Preview builds with production config
- Production: Optimized builds with analytics
- Page Views: Track portfolio visits
- User Engagement: Monitor user interactions
- Project Clicks: Track project link clicks
- Admin Usage: Monitor dashboard usage
- Lighthouse Scores: 95+ across all metrics
- Core Web Vitals: Optimized loading and interactivity
- Bundle Size: Monitored and optimized
- Error Tracking: Comprehensive error boundaries
- Firebase Auth: Secure Google OAuth + Email/Password
- Protected Routes: Admin dashboard requires authentication
- Session Management: Automatic session handling
- Firestore Rules: Read-only public access, authenticated writes
- Environment Variables: Secure credential management
- Input Validation: XSS protection and data sanitization
Mounir Abderrahmani
Senior Full-Stack Developer & Software Engineer
- π§ Email: [email protected]
- πΌ LinkedIn: linkedin.com/in/mounir1badi
- π GitHub: github.com/mounir1
- π± Phone: +213 674 09 48 55
- π Portfolio: mounir.bio
- β Production-Ready: Optimized for performance and scalability
- β Firebase Integration: Real-time data management
- β Professional Admin: Comprehensive content management
- β SEO Optimized: Perfect for Google search visibility
- β Mobile-First: Responsive design for all devices
- β Modern Stack: Latest React, TypeScript, and Vite
- β Secure: Firebase Auth with proper security rules
- β Analytics: Google Analytics 4 integration
- β Automated Deployment: GitHub Actions CI/CD
Built with β€οΈ and modern web technologies by Mounir Abderrahmani
This portfolio showcases professional development practices, modern architecture, and production-ready code quality.