Skip to content

fbrzlarosa/stackbyte-website

Repository files navigation

πŸš€ Stackbyte.dev Website

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.

🎨 100% Vibe Coded 🎨

This entire project was crafted using AI-assisted development (vibe coding)

Vibe Coded Prompt Engineered

Next.js React TypeScript Tailwind CSS

✨ Features

  • 🎨 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

πŸ› οΈ Tech Stack

Core

Animation & UI

Forms & Validation

Other

πŸ“‹ Prerequisites

  • Node.js 18+
  • npm, yarn, or pnpm
  • Git

πŸš€ Getting Started

Installation

  1. Clone the repository

    git clone https://github.com/fbrzlarosa/stackbyte-website.git
    cd stackbyte-website
  2. Install dependencies

    npm install
    # or
    yarn install
    # or
    pnpm install
  3. Set up environment variables

    Create a .env.local file 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
  4. Run the development server

    npm run dev
    # or
    yarn dev
    # or
    pnpm dev

    Open http://localhost:3000 in your browser.

πŸ“Š Status Tracker

The website features a real-time status system that displays your availability (Online/Offline/Holidays) on the homepage.

How It Works

  1. 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
  2. API Endpoint (src/app/api/status/route.ts)

    • GET /api/status - Retrieves current status
    • POST /api/status - Updates status (requires secret)
  3. Tracker Script (scripts/tracker.js)

    • Monitors desktop idle time
    • Automatically updates status based on activity
    • Runs every 30 seconds

Running the Status Tracker

Manual Execution

npm run tracker
# or
node scripts/tracker.js

Automatic Execution (Windows)

Use the provided PowerShell scripts:

# Setup autostart
.\scripts\setup-windows-autostart.ps1

# Or run hidden
.\scripts\run-tracker-hidden.ps1

For more details, see scripts/README-WINDOWS.md

Automatic Execution (Linux/Mac)

Use PM2 or systemd:

# With PM2
pm2 start scripts/tracker.js --name status-tracker
pm2 save
pm2 startup

Status Values

  • online - User is active (idle time < 60 seconds)
  • offline - User is away (idle time β‰₯ 60 seconds)
  • holidays - Manual status for holidays/vacation

πŸ—οΈ Project Structure

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

🎨 Key Components

  • 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

πŸš€ Deployment

Environment Variables for Production

Make sure to set all environment variables in your deployment platform:

  • STATUS_API_SECRET - Secure secret for status API
  • SMTP_* - Email configuration
  • NEXT_PUBLIC_TURNSTILE_SITE_KEY - Cloudflare Turnstile
  • TURNSTILE_SECRET_KEY - Cloudflare Turnstile secret
  • NEXT_PUBLIC_SOCIAL_* - Social media links
  • NEXT_PUBLIC_IUBENDA_POLICY_ID - Privacy policy ID

πŸ“ Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run lint - Run ESLint
  • npm run tracker - Start status tracker

πŸ”§ Configuration

Email Setup (Brevo)

See BREVO-SMTP-SETUP.md for detailed email configuration instructions.

Sitemap

The sitemap is automatically generated on build using next-sitemap. Configuration is in next-sitemap.config.js.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is open source and available under the MIT License.

πŸ”— Links

πŸ™ Acknowledgments

  • Built with amazing open source technologies
  • Icons by Lucide
  • Animations powered by Framer Motion

🎯 Development Approach

✨ Vibe Coding ✨

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

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published