A modern, high-performance portfolio website built with Next.js, React, and TypeScript.
- Modern Design - Glassmorphism UI with smooth animations
- Dark/Light Mode - Theme switching with persistent storage
- Responsive - Mobile-first design approach
- Performance Optimized - Lazy loading, code splitting, image optimization
- Type Safe - Full TypeScript support
- Accessible - WCAG compliant components
- Contact Form - Integrated with Telegram Bot API
- Visitor Tracking - Anonymous visitor analytics
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone https://github.com/Farrukh-Front-Dev/portfolio.git
cd portfolio- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- Configure your environment variables in
.env.local:
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_SITE_NAME=Farrukh Portfolio
NEXT_PUBLIC_API_URL=http://localhost:3000/api
NEXT_PUBLIC_ENABLE_ANALYTICS=false
NEXT_PUBLIC_ENABLE_COMMENTS=falsenpm run devOpen http://localhost:3000 in your browser.
npm run build
npm run startnpm run lintapp/
βββ (site)/ # Main site layout
β βββ _components/ # React components
β β βββ common/ # Reusable components
β β βββ sections/ # Page sections
β β βββ features/ # Feature-specific components
β β βββ effects/ # Visual effects
β β βββ ui/ # UI primitives
β βββ _hooks/ # Custom React hooks
β βββ _lib/ # Utilities & helpers
β βββ _types/ # TypeScript types
β βββ _context/ # React context providers
β βββ _content/ # Static content
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
βββ api/ # API routes
β βββ contact/ # Contact form endpoint
β βββ visit/ # Visitor tracking endpoint
βββ globals.css # Global styles
TELEGRAM_BOT_TOKEN- Telegram bot token from @BotFatherTELEGRAM_CHAT_ID- Your Telegram chat ID
NEXT_PUBLIC_SITE_URL- Your site URLNEXT_PUBLIC_SITE_NAME- Site nameNEXT_PUBLIC_API_URL- API base URL
NEXT_PUBLIC_ENABLE_ANALYTICS- Enable analytics (default: false)NEXT_PUBLIC_ENABLE_COMMENTS- Enable comments (default: false)
Send a contact message via Telegram.
Request:
{
"name": "John Doe",
"email": "john@example.com",
"message": "Hello, I'm interested in your work!"
}Response:
{
"status": "success",
"message": "Message sent successfully!"
}Track visitor information.
Request:
{
"visitorId": "uuid",
"name": "John",
"type": "visit",
"page": "/",
"screen": "1920x1080"
}Edit tailwind.config.ts to customize colors and theme.
Update content in app/(site)/_content/:
content.json- Main contentskills.tsx- Skills listProjectsContent.tsx- Projects list
All components are in app/(site)/_components/ organized by feature.
npm run test- Lighthouse Score: 90+
- Core Web Vitals: All green
- Bundle Size: ~150KB (gzipped)
- Input validation on all forms
- Rate limiting on API endpoints
- XSS protection
- CSRF tokens on forms
- Environment variables for sensitive data
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Push to GitHub
- Connect repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy
npm run build
npm run startThis project is open source and available under the MIT License.
Farrukh Djumayev
- GitHub: @Farrukh-Front-Dev
- LinkedIn: farrukhdjumayev
- Email: farrukh.front.dev@gmail.com
Contributions are welcome! Please feel free to submit a Pull Request.
For support, email farrukh.front.dev@gmail.com or open an issue on GitHub.
Made with β€οΈ by Farrukh