Modern, performant portfolio website built with Next.js, React, and Framer Motion. Featuring smooth animations, real-time status tracking, and a beautiful gradient-based design.
This entire project was crafted using AI-assisted development (vibe coding)
- π¨ Modern UI/UX - Beautiful gradient-based design with smooth animations
- π Framer Motion - Advanced 3D animations and transitions
- π± Fully Responsive - Optimized for all devices (mobile, tablet, desktop)
- β‘ Performance Optimized - Built with Next.js 16 for optimal speed
- π― Real-time Status - Live status tracking (Online/Offline/Holidays)
- π§ Contact Form - Integrated contact form with Cloudflare Turnstile
- π SEO Optimized - Complete SEO setup with sitemap generation
- π¨ Custom Scrollbar - Beautiful gradient scrollbars throughout
- Next.js 16 - React framework for production
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Utility-first CSS
- Framer Motion - Production-ready motion library
- Lenis - Smooth scroll library
- Lucide React - Beautiful icon toolkit
- React Hook Form - Performant forms
- React Turnstile - Cloudflare Turnstile integration
- Axios - HTTP client
- Nodemailer - Email sending
- Next Sitemap - Sitemap generation
- Node.js 18+
- npm, yarn, or pnpm
- Git
-
Clone the repository
git clone https://github.com/fbrzlarosa/stackbyte-website.git cd stackbyte-website -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# Status Tracker STATUS_API_SECRET=your_secure_secret_here TRACKER_API_URL=http://localhost:3000/api/status # Contact Form (Brevo/SendGrid) SMTP_HOST=smtp-relay.brevo.com SMTP_PORT=587 SMTP_USER=your_email@example.com SMTP_PASS=your_password SMTP_FROM=your_email@example.com SMTP_TO=recipient@example.com # Cloudflare Turnstile NEXT_PUBLIC_TURNSTILE_SITE_KEY=your_site_key TURNSTILE_SECRET_KEY=your_secret_key # Social Links NEXT_PUBLIC_SOCIAL_GITHUB=https://github.com/yourusername NEXT_PUBLIC_SOCIAL_LINKEDIN=https://linkedin.com/in/yourprofile NEXT_PUBLIC_SOCIAL_DEVTO=https://dev.to/yourusername # Privacy Policy (Iubenda) NEXT_PUBLIC_IUBENDA_POLICY_ID=your_policy_id
-
Run the development server
npm run dev # or yarn dev # or pnpm dev
Open http://localhost:3000 in your browser.
The website features a real-time status system that displays your availability (Online/Offline/Holidays) on the homepage.
-
Status Store (
src/lib/statusStore.ts)- In-memory store for status data
β οΈ Note: In Vercel Serverless, this resets on cold boot- For production, consider using Vercel KV, Redis, or a database
-
API Endpoint (
src/app/api/status/route.ts)GET /api/status- Retrieves current statusPOST /api/status- Updates status (requires secret)
-
Tracker Script (
scripts/tracker.js)- Monitors desktop idle time
- Automatically updates status based on activity
- Runs every 30 seconds
npm run tracker
# or
node scripts/tracker.jsUse the provided PowerShell scripts:
# Setup autostart
.\scripts\setup-windows-autostart.ps1
# Or run hidden
.\scripts\run-tracker-hidden.ps1For more details, see scripts/README-WINDOWS.md
Use PM2 or systemd:
# With PM2
pm2 start scripts/tracker.js --name status-tracker
pm2 save
pm2 startuponline- User is active (idle time < 60 seconds)offline- User is away (idle time β₯ 60 seconds)holidays- Manual status for holidays/vacation
stackbyte-website/
βββ public/ # Static assets
β βββ favicon.ico
β βββ og-image.jpg
β βββ sitemap.xml
βββ scripts/ # Utility scripts
β βββ tracker.js # Status tracker script
β βββ setup-windows-autostart.ps1
βββ src/
β βββ app/ # Next.js app directory
β β βββ api/ # API routes
β β β βββ contact/ # Contact form endpoint
β β β βββ status/ # Status API
β β βββ layout.tsx
β β βββ page.tsx
β βββ components/ # React components
β β βββ Hero.tsx
β β βββ About.tsx
β β βββ SkillsShowcase.tsx
β β βββ Contact.tsx
β β βββ Footer.tsx
β β βββ ...
β βββ lib/ # Utilities
β β βββ statusStore.ts
β β βββ utils.ts
β βββ types/ # TypeScript types
βββ package.json
- Hero - Animated hero section with 3D effects
- About - Story section with timeline
- SkillsShowcase - Interactive skill cards with parallax
- Process - How I work section
- Contact - Contact form with validation
- ReadyToStart - Call-to-action section
- Footer - Footer with open source modal
- StatusBadge - Real-time status indicator
Make sure to set all environment variables in your deployment platform:
STATUS_API_SECRET- Secure secret for status APISMTP_*- Email configurationNEXT_PUBLIC_TURNSTILE_SITE_KEY- Cloudflare TurnstileTURNSTILE_SECRET_KEY- Cloudflare Turnstile secretNEXT_PUBLIC_SOCIAL_*- Social media linksNEXT_PUBLIC_IUBENDA_POLICY_ID- Privacy policy ID
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run tracker- Start status tracker
See BREVO-SMTP-SETUP.md for detailed email configuration instructions.
The sitemap is automatically generated on build using next-sitemap. Configuration is in next-sitemap.config.js.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- 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 open source and available under the MIT License.
- Live Site: stackbyte.dev
- Repository: GitHub
- Built with amazing open source technologies
- Icons by Lucide
- Animations powered by Framer Motion
This project was entirely developed using AI-assisted coding (vibe coding). Every component, animation, and feature was crafted through iterative AI collaboration, demonstrating the power of modern AI development tools.
From concept to deployment, 100% vibe coded! π
Made with β€οΈ by Fabrizio La Rosa