thedev.world frontend - a 3D interactive planet where developers claim territories based on their GitHub identity and activity
See the codeWebGL client and UI for thedev.world, an interactive 3D social experience built around GitHub contributions.
Live: thedev.world

thedev.world lets developers visualize their GitHub activity on a 3D planet. The world is split into thematic islands based on technical specialties (frontend, backend, infra, etc.). Each developer's public activity (commits, pull requests, reviews, stars) determines the size and level of their territory on their chosen island.
This front communicates with the devplanet-api FastAPI backend to fetch geographic data and scores.
8000Local development requires the backend to be running. Check out the devplanet-api README for setup instructions.
Install dependencies:
npm install
Set up environment variables:
cp .env.local.example .env.local
Then edit .env.local to match your environment (see Configuration).
Start the development server:
npm run dev
The app is available at http://localhost:3000.
The app uses Next.js standalone export mode for optimal performance and minimal production footprint.
flowchart LR
GH[GitHub] -->|OAuth & Sync| API[devplanet-api]
API -->|Snapshot JSON| CDN[CDN / MinIO]
CDN -->|Load| FE[Next.js]
API -->|Real-time delta| FE
FE -->|WebGL render| R3F[Three.js / R3F]
The project follows a feature-based architecture, application logic is organized by domain under src/features/. Each module encapsulates its own components, hooks, stores, types, and API calls.
thedevworld-front/
├── .github/ # GitHub Actions CI/CD workflows
├── .husky/ # Git pre-commit hooks (linting)
├── public/ # Static assets and 3D textures
├── scripts/ # Automation scripts
└── src/
├── app/ # Routes, pages and layouts (Next.js App Router)
├── components/ # Shared cross-cutting components (shadcn atomic UI)
├── config/ # Global constants and settings
├── features/ # Feature modules organized by domain
│ ├── auth/ # GitHub OAuth authentication
│ ├── capture/ # 3D territory snapshot and screenshot
│ ├── developer/# Developer business data
│ ├── planet/ # Core 3D logic (globe, hexagonal cells)
│ └── ... # Each feature contains: api/, components/, hooks/, stores/, types/
├── hooks/ # Shared global React hooks
├── lib/ # Cross-cutting client initialization (API, QueryClient…)
├── stores/ # Global Zustand stores
├── types/ # Global TypeScript types
└── utils/ # Pure utility functions
All environment variables are documented in .env.local.example.
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_API_URL | Public API URL (client-side) | http://localhost:3000/api |
NEXT_PUBLIC_SITE_URL | Public site URL (OG images, SEO) | http://localhost:3000 |
NEXT_PUBLIC_PLANET_JSON_URL | Path to the planet JSON snapshot | /snapshots/devplanet/planet-data.json |
BACKEND_URL | FastAPI backend URL (server-side only) | http://127.0.0.1:8000 |
PLANET_CAPTURE_BASE_URL | MinIO URL for OG/SSR rendering | http://127.0.0.1:9000/devplanet |
npm run dev)The GitHub OAuth callback must go through Next.js on :3000 (same-origin cookies):
http://localhost:3000/api/v1/auth/github/callback.env → OAUTH_CALLBACK_URL: same value.env.local → BACKEND_URL=http://127.0.0.1:8000npm run lint # Check
npm run lint:fix # Auto-fix
npm run test # Run in CI mode
npm run test:watch # Interactive watch mode
npm run build
Contributions are welcome. Please follow these conventions to keep the history clean and reviews smooth.
feat/feature-name — new feature (e.g. feat/interactive-cells)fix/bug-name — bug fixrefactor/refactor-name — code restructuring with no functional changeschore/topic — maintenance tasks, config updates, dependency bumpsThis project follows the Conventional Commits specification. All commit messages must be written in English:
type(scope): description
Examples:
feat(planet): add visual indicators for hovered cellsfix(auth): handle expired github credentials on syncchore(deps): update three.js dependenciesgit checkout -b feat/my-feature).npm run lint and npm run test).To report a bug or request a feature, open an Issue.
This project is licensed under the MIT License. See the LICENSE file for details.
thedev.world frontend - a 3D interactive planet where developers claim territories based on their GitHub identity and activity
See the codeWebGL client and UI for thedev.world, an interactive 3D social experience built around GitHub contributions.
Live: thedev.world

thedev.world lets developers visualize their GitHub activity on a 3D planet. The world is split into thematic islands based on technical specialties (frontend, backend, infra, etc.). Each developer's public activity (commits, pull requests, reviews, stars) determines the size and level of their territory on their chosen island.
This front communicates with the devplanet-api FastAPI backend to fetch geographic data and scores.
8000Local development requires the backend to be running. Check out the devplanet-api README for setup instructions.
Install dependencies:
npm install
Set up environment variables:
cp .env.local.example .env.local
Then edit .env.local to match your environment (see Configuration).
Start the development server:
npm run dev
The app is available at http://localhost:3000.
The app uses Next.js standalone export mode for optimal performance and minimal production footprint.
flowchart LR
GH[GitHub] -->|OAuth & Sync| API[devplanet-api]
API -->|Snapshot JSON| CDN[CDN / MinIO]
CDN -->|Load| FE[Next.js]
API -->|Real-time delta| FE
FE -->|WebGL render| R3F[Three.js / R3F]
The project follows a feature-based architecture, application logic is organized by domain under src/features/. Each module encapsulates its own components, hooks, stores, types, and API calls.
thedevworld-front/
├── .github/ # GitHub Actions CI/CD workflows
├── .husky/ # Git pre-commit hooks (linting)
├── public/ # Static assets and 3D textures
├── scripts/ # Automation scripts
└── src/
├── app/ # Routes, pages and layouts (Next.js App Router)
├── components/ # Shared cross-cutting components (shadcn atomic UI)
├── config/ # Global constants and settings
├── features/ # Feature modules organized by domain
│ ├── auth/ # GitHub OAuth authentication
│ ├── capture/ # 3D territory snapshot and screenshot
│ ├── developer/# Developer business data
│ ├── planet/ # Core 3D logic (globe, hexagonal cells)
│ └── ... # Each feature contains: api/, components/, hooks/, stores/, types/
├── hooks/ # Shared global React hooks
├── lib/ # Cross-cutting client initialization (API, QueryClient…)
├── stores/ # Global Zustand stores
├── types/ # Global TypeScript types
└── utils/ # Pure utility functions
All environment variables are documented in .env.local.example.
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_API_URL | Public API URL (client-side) | http://localhost:3000/api |
NEXT_PUBLIC_SITE_URL | Public site URL (OG images, SEO) | http://localhost:3000 |
NEXT_PUBLIC_PLANET_JSON_URL | Path to the planet JSON snapshot | /snapshots/devplanet/planet-data.json |
BACKEND_URL | FastAPI backend URL (server-side only) | http://127.0.0.1:8000 |
PLANET_CAPTURE_BASE_URL | MinIO URL for OG/SSR rendering | http://127.0.0.1:9000/devplanet |
npm run dev)The GitHub OAuth callback must go through Next.js on :3000 (same-origin cookies):
http://localhost:3000/api/v1/auth/github/callback.env → OAUTH_CALLBACK_URL: same value.env.local → BACKEND_URL=http://127.0.0.1:8000npm run lint # Check
npm run lint:fix # Auto-fix
npm run test # Run in CI mode
npm run test:watch # Interactive watch mode
npm run build
Contributions are welcome. Please follow these conventions to keep the history clean and reviews smooth.
feat/feature-name — new feature (e.g. feat/interactive-cells)fix/bug-name — bug fixrefactor/refactor-name — code restructuring with no functional changeschore/topic — maintenance tasks, config updates, dependency bumpsThis project follows the Conventional Commits specification. All commit messages must be written in English:
type(scope): description
Examples:
feat(planet): add visual indicators for hovered cellsfix(auth): handle expired github credentials on syncchore(deps): update three.js dependenciesgit checkout -b feat/my-feature).npm run lint and npm run test).To report a bug or request a feature, open an Issue.
This project is licensed under the MIT License. See the LICENSE file for details.