A modern, professional portfolio website built with Astro and deployed on Vercel. This portfolio showcases technical skills, education, experience, projects, and professional accomplishments with a beautiful dark theme and glassmorphism design.
https://portfolio-ali-tnacheri.vercel.app
- Fully responsive and mobile-first approach
- Works perfectly on desktop, tablet, and mobile devices
- Touch-friendly navigation and interactions
- Dark professional theme with glassmorphism effects
- Smooth animations and transitions
- Gradient accent colors (blue, purple, cyan)
- Custom CSS variables for easy theming
- Beautiful decorative background with floating orbs
- Single TypeScript data file for all content
- Sections automatically hide if no data is available
- Navigation dynamically generated based on active sections
- Easy to maintain and update
- Hero - Eye-catching landing section with availability badge and CTA buttons
- About - Personal introduction with numbered cards
- Skills - Technical skills organized by category + soft skills
- Education - Timeline of educational background
- Experience - Work experience history (optional)
- Projects - Portfolio of projects with technologies and links
- Contact - Contact information and functional contact form
- Header - Fixed sticky navigation with mobile hamburger menu
- Footer - Footer with brand, quick links, and social connections
- Back-to-Top - Floating button for easy navigation
- Sticky header with scroll effects
- Mobile-responsive hamburger menu
- Active link detection using IntersectionObserver
- Hover effects on cards and buttons
- Smooth scroll behavior
- Form validation and submission (Formspree integration)
- Animated skill icons and badges
- Skip-link for keyboard navigation
- Semantic HTML structure
- Focus-visible states on interactive elements
- ARIA labels and attributes
- Keyboard navigation support
- High contrast text
- Ultra-fast static site generation with Astro
- Optimized bundle size
- No heavy JavaScript frameworks
- Quick Time-to-Interactive (TTI)
- Optimized images and assets
- Framework: Astro - The web framework for content-driven websites
- Language: TypeScript - For type-safe development
- Styling: CSS - Global styles with CSS custom properties
- Icons: Lucide SVG - Stroke-based, consistent SVG icons
- Deployment: Vercel - Optimal hosting for Astro
- Version Control: Git & GitHub
portfolio/
βββ src/
β βββ components/ # Reusable Astro components
β β βββ Header.astro # Navigation header
β β βββ Hero.astro # Hero section
β β βββ About.astro # About section
β β βββ Skills.astro # Skills section
β β βββ Education.astro # Education timeline
β β βββ Experience.astro # Work experience
β β βββ Projects.astro # Projects showcase
β β βββ Contact.astro # Contact section
β β βββ Footer.astro # Footer
β β βββ BackToTop.astro # Back-to-top button
β βββ layouts/
β β βββ BaseLayout.astro # Main layout wrapper
β βββ pages/
β β βββ index.astro # Main page
β βββ data/
β β βββ portfolio.ts # Central data file (EDIT THIS!)
β βββ styles/
β βββ global.css # Global styles and design system
βββ public/ # Static assets
βββ astro.config.ts # Astro configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json # Dependencies and scripts
βββ vercel.json # Vercel deployment config
βββ README.md # This file
- Node.js version 18 or higher
- npm or yarn package manager
- Git for version control
-
Clone the repository:
git clone https://github.com/ALI-OUAAZANI/portfolio.git cd portfolio -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The site will be available at
http://localhost:3000 -
Build for production:
npm run build
-
Preview the production build:
npm run preview
All your portfolio content is stored in one file: src/data/portfolio.ts
This TypeScript file contains:
- Personal information (name, title, email, phone, location)
- Statistics and achievements
- Technical and soft skills
- Education history
- Work experience
- Projects and portfolio items
- Certifications
- Publications
- Social links
To update your portfolio:
- Open
src/data/portfolio.ts - Edit the data in the
portfolioDataobject - Save the file
- The website will automatically reflect changes
- Sections without data will automatically hide
The design system uses CSS custom properties located in src/styles/global.css:
- Colors: Modify
--color-*variables for theme colors - Typography: Change
--font-*variables for fonts - Animations: Adjust
--transition-*variables for animation speed - Shadows: Customize
--shadow-*variables for depth
- Mobile: < 768px
- Tablet: 768px - 1024px
- Desktop: > 1024px
-
Push to GitHub:
git add . git commit -m "Update portfolio" git push origin main
-
Deploy to Vercel:
npm run deploy # or vercel --prod
The portfolio is automatically deployed to:
https://portfolio-ali-tnacheri.vercel.app
To use a custom domain:
- Add your domain in Vercel project settings
- Update DNS records to point to Vercel
- Deploy with the new domain
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build locally |
npm run deploy |
Deploy to Vercel production |
Astro framework configuration with Vercel adapter for static site generation.
TypeScript configuration for strict type checking and JSX support.
Vercel deployment configuration with custom domain alias.
Project dependencies and npm scripts.
This portfolio template is free to use and customize for personal use.
Feel free to fork this project and adapt it for your own portfolio!
For questions or issues with Astro:
For Vercel deployment issues:
Created with β€οΈ by Ali Tnacheri Ouazzani
Built with Astro β’ Deployed on Vercel