Static site for lookatwhataicando.llc, hosted on Firebase Hosting.
Projects are automatically fetched from GitHub and baked into the site on every deploy.
- Hosting: Firebase Hosting (free Spark plan)
- Project data: GitHub API →
public/data/projects.json(generated at build time) - CI/CD: GitHub Actions (weekly cron + push-to-main deploys)
- Zero backend: 100% static, zero runtime cost
├── public/
│ ├── index.html # Main page
│ ├── css/style.css # All styles
│ ├── js/app.js # Fetches projects.json, renders cards
│ └── data/
│ └── projects.json # Auto-generated by CI — do not edit manually
├── scripts/
│ └── fetch-projects.js # Node script: fetches GitHub org repos
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions: weekly cron + push deploy
└── firebase.json # Firebase Hosting config
npm install -g firebase-tools
firebase login
firebase init hosting
# Choose your Firebase project
# Set public directory to: public
# Single-page app: No
# Overwrite index.html: NoIn your GitHub repo → Settings → Secrets and variables → Actions, add:
FIREBASE_SERVICE_ACCOUNT— JSON key from Firebase Console → Project Settings → Service Accounts → Generate new private keyFIREBASE_PROJECT_ID— Your Firebase project ID (e.g.,lookatwhataicando)
# Fetch projects locally first
node scripts/fetch-projects.js
# Deploy
firebase deployAfter that, GitHub Actions handles everything automatically.
Go to Actions → Build & Deploy Site → Run workflow to trigger an immediate re-fetch and deploy.
# Install Firebase CLI if not already
npm install -g firebase-tools
# Fetch project data
node scripts/fetch-projects.js
# Serve locally
firebase serve- GitHub Actions runs every Monday at 7am UTC
scripts/fetch-projects.jshits the GitHub API for all public repos in theLookAtWhatAiCanDoorg- Writes
public/data/projects.jsonwith live stats (stars, forks, last updated, language) - Firebase deploy bakes it into the CDN
- Site shows fresh data instantly — no client-side API calls needed
New public repos appear automatically on the next scheduled run (or manual trigger).