A sleek, responsive portfolio website built with cutting-edge web technologies to showcase professional skills and projects.
- π¨ Modern Design: Clean, professional interface with smooth animations
- π± Fully Responsive: Optimized for all devices and screen sizes
- β‘ Lightning Fast: Built with Vite for optimal performance
- π Dark Mode: Seamless light/dark theme switching
- π¬ Contact Form: Integrated contact system with real-time validation
- π§ Tech Stack Showcase: Interactive display of skills and technologies
- π Projects Gallery: Beautiful showcase of work and achievements
- βΏ Accessible: WCAG compliant with semantic HTML
- React 18 - Modern UI library with hooks
- TypeScript - Type-safe JavaScript development
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Smooth animations and transitions
- Wouter - Lightweight routing solution
- Shadcn/ui - Beautiful, accessible component library
- TanStack Query - Powerful data synchronization
- Node.js - JavaScript runtime environment
- Express.js - Fast, minimalist web framework
- TypeScript - Full-stack type safety
- Drizzle ORM - Type-safe database operations
- PostgreSQL - Robust relational database
- Vite - Next-generation frontend build tool
- ESBuild - Extremely fast JavaScript bundler
- PostCSS - CSS transformation tool
- TSX - TypeScript execution environment
- Node.js 18+ installed
- Git for version control
-
Clone the repository
git clone https://github.com/Atifhasan250/portfolio-website.git cd portfolio-website -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Update the environment variables in
.env.local:DATABASE_URL=your_postgresql_connection_string VITE_CONTACT_API_URL=your_contact_api_endpoint
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5000to see your portfolio in action!
portfolio-website/
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utility functions
β β βββ index.css # Global styles
β βββ public/ # Static assets
β βββ index.html # HTML template
βββ server/ # Backend Express server
β βββ index.ts # Server entry point
β βββ routes.ts # API routes
β βββ storage.ts # Data storage layer
β βββ vite.ts # Vite integration
βββ shared/ # Shared TypeScript types
β βββ schema.ts # Database schema & types
βββ package.json # Dependencies & scripts
βββ vite.config.ts # Vite configuration
βββ tailwind.config.ts # Tailwind CSS config
βββ tsconfig.json # TypeScript configuration
βββ vercel.json # Vercel deployment config
This project is optimized for Vercel deployment with zero configuration:
-
Push to GitHub
git add . git commit -m "Initial commit" git push origin main
-
Deploy with Vercel
- Visit vercel.com
- Import your GitHub repository
- Vercel will automatically detect the settings
- Click "Deploy"
-
Environment Variables Add these environment variables in your Vercel dashboard:
DATABASE_URL=your_postgresql_connection_string VITE_CONTACT_API_URL=your_contact_api_endpoint
-
Build the project
npm run build
-
Deploy to Netlify
- Drag and drop the
distfolder to netlify.com/drop - Or connect your GitHub repository for continuous deployment
- Drag and drop the
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run type-check- Run TypeScript type checking
Update the color palette in client/src/index.css:
:root {
--primary: 220 90% 56%;
--secondary: 210 40% 98%;
/* Add your custom colors */
}- Personal Info: Update
client/src/components/hero-section.tsx - About Section: Modify
client/src/components/about-section.tsx - Projects: Edit
client/src/components/works-section.tsx - Skills: Update
client/src/components/tech-stack-section.tsx
- Create a new component in
client/src/components/ - Import and add it to
client/src/pages/portfolio.tsx - Update navigation if needed in
client/src/components/navbar.tsx
- Profile Image: Replace
client/public/profile-image.pngwith your photo - Project Images: Replace project images in
client/public/(project-*.png files) - Images are automatically optimized during build process
The contact form uses a backend API. To set it up:
- Database Setup: The contact form stores submissions in PostgreSQL
- API Endpoint: Contact submissions are handled at
/api/contacts - Validation: Form validation uses Zod schemas for type safety
{
"version": 2,
"builds": [
{
"src": "server/index.ts",
"use": "@vercel/node"
},
{
"src": "client/**/*",
"use": "@vercel/static-build",
"config": {
"distDir": "dist"
}
}
],
"routes": [
{
"src": "/api/(.*)",
"dest": "/server/index.ts"
},
{
"src": "/(.*)",
"dest": "/client/$1"
}
]
}-
Port already in use
# Kill process on port 5000 lsof -ti:5000 | xargs kill -9
-
Module resolution errors
# Clear node modules and reinstall rm -rf node_modules package-lock.json npm install -
TypeScript errors
# Run type checking npm run type-check
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Shadcn/ui for the beautiful component library
- Tailwind CSS for the utility-first CSS framework
- Framer Motion for smooth animations
- Lucide React for the icon library
Made with β€οΈ and modern web technologies
Ready to showcase your work to the world? Deploy this portfolio today!