GitHub Profile World is a full-stack web app that turns a GitHub username/profile into a premium interactive 3D city visualization.
- Backend: Django + Django REST Framework
- Database: PostgreSQL
- Frontend: Next.js (App Router) + Tailwind CSS + React Three Fiber (Three.js)
- Generate world from
usernameorgithub_url - Data mapping:
- repo -> building
- commits -> forest density
- stars -> glowing particles
- languages -> district colors
- followers/following -> population metrics
- Interactive world viewer:
- orbit/zoom controls
- click building to open repo details
- language filter + sort + search
- forest density toggle
- reduced motion mode
- Public share page:
- read-only summary
- copy link
- downloadable poster SVG
- Caching and rate-limit fallback behavior
backend/Django + DRF APIfrontend/Next.js app
- Create Python environment and install deps:
cd backendpython -m venv .venv.\\.venv\\Scripts\\activatepip install -r requirements.txt
- Copy env template:
copy .env.example .env
- Run migrations:
python manage.py migrate
- Start server:
python manage.py runserver 127.0.0.1:8000
POST /api/world/generateGET /api/world/{id}GET /api/world/{id}/share
- Install deps:
cd frontendnpm install
- Copy env template:
copy .env.example .env.local
- Start dev server:
npm run dev
App runs on http://localhost:3000.
DJANGO_DEBUGDJANGO_SECRET_KEYDB_ENGINEDB_NAMEDB_USERDB_PASSWORDDB_HOSTDB_PORTGITHUB_TOKENWORLD_TTL_HOURSAPI_ANON_THROTTLEUSE_SQLITE(optional local fallback)
NEXT_PUBLIC_API_BASE
- If GitHub API rate limit is hit, generation falls back to latest cached world (if available).
- Default DB target is PostgreSQL. Set
USE_SQLITE=1for quick local testing. - For production, use Redis cache backend and background jobs for heavy generation.