- Next.js 16 (App Router, Server Actions)
- TypeScript
- Tailwind CSS
- NextAuth v5 — GitHub OAuth admin login
- JSON file storage — no database needed
- PM2 + Nginx on a VPS
- Public hub showing all blob packs with FBX/GLB downloads
- Admin panel (GitHub OAuth protected) to upload/edit/delete blobs
- Dynamic pack management — create and delete packs from the UI
- Blob editing — update name, bio, render, model files
- Auto-deploy via GitHub Actions on push to
main
git clone https://github.com/Csiklaoliver/lilblobpack.git
cd lilblobpack
npm install
cp .env.example .env.local # fill in your values
npm run devGITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
NEXTAUTH_SECRET=
NEXTAUTH_URL=https://yourdomain.com
ADMIN_GITHUB_USERNAME=your_github_usernameGo to github.com/settings/developers → New OAuth App:
- Callback URL:
https://yourdomain.com/api/auth/callback/github
app/
page.tsx # Public hub
admin/page.tsx # Admin panel (auth protected)
api/
upload/route.ts # Upload new blob
blobs/[id]/route.ts # Update blob
blobs/route.ts # List / delete blobs
packs/route.ts # List / create packs
packs/[slug]/route.ts # Delete pack
components/
HubClient.tsx # Public frontend
AdminClient.tsx # Admin UI
BlobCard.tsx # Individual blob card
data/
blobs.json # Blob records
packs.json # Pack definitions
lib/
store.ts # File-based data layer
auth.ts # NextAuth config
public/uploads/ # Uploaded renders + models
MIT — see LICENSE
Made by Oliver · @csiklaoliver