Skip to content

Daniel-wambua/Havoclab

Repository files navigation

🧬 HavocLab


Modern project showcase with glassmorphic design
Auto-fetches GitHub repos with smooth animations
🌐 github.com/Daniel-wambua/havoclab

Motive

Why waste time building portfolio sites from scratch when you can have one that auto-syncs with your GitHub? HavocLab eliminates manual project updates. Just push to GitHub and your showcase updates automatically. Built with bleeding-edge tech so you don't need to f**k around with outdated frameworks and slow-loading sites.

About the Developer

Professional Background
I'm an experienced, Principal-level full stack engineer with a passion for quality, performance, mentoring, technology and open source. I believe the best judge of a developer is their code, and while I cannot share proprietary work, I have many open source projects on my GitHub and showcase my skills at lab.havocsec.me.

Project Preview

HavocLab Screenshot


About

HavocLab is a SvelteKit-powered project showcase that automatically displays your GitHub repositories. No manual updates neededβ€”just a sleek, performant portfolio site.

Core Features:

  • 🧬 Auto GitHub API integration
  • οΏ½ Dark/Light mode toggle with persistent preferences
  • πŸ“Š GitHub stats display (stars, forks, last updated)
  • πŸ” Advanced search & filtering with real-time updates
  • πŸ“ˆ Smart sorting (stars, forks, updated date, name)
  • 🏷️ Project tags/categories with filter chips
  • πŸ“± Grid/List view toggle with different layouts
  • πŸ“Š Quick stats dashboard (total projects, stars, forks, languages)
  • �🎨 Glassmorphic dark theme (#00AEEF accent)
  • ⚑ Motion One animations (3.8KB vs 90KB alternatives)
  • ⭐ Featured projects support
  • πŸ“± Fully responsive design
  • 🎯 Smart context-aware icons
  • πŸ“ˆ Vercel Analytics & Speed Insights integration

Tech Stack:

  • SvelteKit 2.0 + Svelte 5.0
  • TailwindCSS 3.4 (custom dark theme)
  • Motion One 10.16 (lightweight animations)
  • TypeScript 5.0 (fully typed)
  • GitHub REST API

Quick Start

# Clone the repo
git clone https://github.com/Daniel-wambua/havoclab.git
cd havoclab

# Install dependencies
npm install

# Configure GitHub username
# Edit src/lib/constants.ts β†’ GITHUB_USERNAME

# Add GitHub token (REQUIRED for private repos, recommended for rate limits)
cp .env.example .env
# Edit .env and add your token

# To create a GitHub token:
# 1. Go to: https://github.com/settings/tokens/new
# 2. Name: "HavocLab Showcase"
# 3. Expiration: No expiration (or your preference)
# 4. Scopes:
#    - Check "repo" (full access) for PRIVATE repos
#    - OR just "public_repo" for PUBLIC repos only
# 5. Generate token and copy it to .env

# Run dev server
npm run dev
Deployment Options

Vercel (One-Click Deploy)

Deploy with Vercel

Manual Deployment:

  • Vercel: npm install -g vercel && vercel --prod
  • Cloudflare Pages: npm i -D @sveltejs/adapter-cloudflare && npm run build && npx wrangler pages deploy .svelte-kit/cloudflare
  • Netlify: npm i -D @sveltejs/adapter-netlify && npm run build && netlify deploy --prod
  • Docker: docker build -t havoclab . && docker run -p 3000:3000 havoclab

πŸ” Private Repository Access

HavocLab can display both public AND private repositories when properly configured.

Requirements:

  1. GitHub Personal Access Token with repo scope
  2. Token must be added to .env file or deployment environment variables

Setup Steps:

# 1. Create a GitHub token
# Visit: https://github.com/settings/tokens/new

# 2. Configure token settings:
#    - Note: "HavocLab Showcase"
#    - Expiration: No expiration (recommended for personal projects)
#    - Scopes: βœ… repo (Full control of private repositories)

# 3. Generate token and copy it

# 4. Add to your .env file
echo "GITHUB_TOKEN=your_token_here" > .env

# 5. For Vercel deployment, add to environment variables:
#    Dashboard β†’ Settings β†’ Environment Variables
#    Name: GITHUB_TOKEN
#    Value: your_token_here
#    Environment: Production, Preview, Development

How it works:

  • βœ… With token: Fetches from /user/repos (includes private repos)
  • ⚠️ Without token: Fetches from /users/{username}/repos (public only)

Important Notes:

  • Private repos will only be visible when the token is present
  • The token must belong to the account that owns the private repositories
  • Rate limits: 60 requests/hour (no token) β†’ 5,000 requests/hour (with token)
  • Never commit your .env file to version control (it's in .gitignore)

Usage

Customize Your Showcase:

Task Location Example
Change GitHub user src/lib/constants.ts GITHUB_USERNAME = 'your-username'
Add featured projects src/lib/featured.json Add objects with name, description, icon
Add manual project images src/lib/project-images.json {"RepoName": "image-url"}
Customize theme tailwind.config.js Change accent color
Update branding src/lib/components/Header.svelte Change icon/text
Default sort order src/lib/stores/preferences.ts Change sortBy default
Default view mode src/lib/stores/preferences.ts Change viewMode default

Project Structure:

src/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ components/            # UI components
β”‚   β”‚   β”œβ”€β”€ Header.svelte      # Header with search & theme toggle
β”‚   β”‚   β”œβ”€β”€ FilterBar.svelte   # Sorting & filtering controls
β”‚   β”‚   β”œβ”€β”€ ProjectCard.svelte # Project display card
β”‚   β”‚   β”œβ”€β”€ SearchBar.svelte   # Real-time search input
β”‚   β”‚   β”œβ”€β”€ StatsDisplay.svelte # Quick stats dashboard
β”‚   β”‚   β”œβ”€β”€ ThemeToggle.svelte # Dark/light mode button
β”‚   β”‚   β”œβ”€β”€ LoadingState.svelte # Loading spinner
β”‚   β”‚   └── ErrorState.svelte  # Error display with retry
β”‚   β”œβ”€β”€ stores/
β”‚   β”‚   β”œβ”€β”€ theme.ts           # Theme state management
β”‚   β”‚   └── preferences.ts     # User preferences (sort, view, filters)
β”‚   β”œβ”€β”€ constants.ts           # GitHub config
β”‚   β”œβ”€β”€ types.ts               # TypeScript interfaces
β”‚   β”œβ”€β”€ featured.json          # Featured projects
β”‚   └── project-images.json    # Manual image URLs
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ +layout.svelte         # Analytics integration
β”‚   β”œβ”€β”€ +page.svelte           # Main showcase
β”‚   └── api/                   # GitHub/Featured endpoints
└── app.css                    # Tailwind + glassmorphism

New Features Guide:

{
  "YourRepoName": "https://your-image-url.com/screenshot.png"
}

Architecture

GitHub API β†’ Fetch Repos β†’ Combine with Featured β†’ Filter/Search β†’ Display
                                                           ↓
                                           Motion One Animations

How It Works:

1. App loads β†’ Fetch from /api/repos (GitHub) + /api/featured (local JSON)
2. Merge data β†’ Featured projects appear first
3. User types β†’ Filter by name/language in real-time
4. Cards animate β†’ Fade-in with stagger, hover lift effects


License

Daniel-wambua/havoclab is licensed under MIT Β© Daniel Wambua 2025.
For information, see TLDR Legal > MIT

Expand License
The MIT License (MIT)
Copyright (c) Daniel Wambua <daniel@wambua.com>

Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to deal 
in the Software without restriction, including without limitation the rights 
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell 
copies of the Software, and to permit persons to whom the Software is furnished 
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Β© Daniel Wambua 2025
Licensed under MIT

Thanks for visiting :)


About

πŸ’» HavocLabβ€” a fast, minimal, and modern showcase of everything I build. A live lab where projects, prototypes, and experiments ship in real time.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors