Bedrock Nexus Hub is the open-source web platform behind bedrocknexus.com. It helps the Minecraft Bedrock community discover servers and projects while giving creators tools for publishing, collaboration, moderation, downloads, galleries, and analytics.
- Public server and project directories with profiles, galleries, reviews, favourites, live server status, and search-friendly metadata
- Creator dashboards for servers, projects, versions, organizations, profiles, and analytics
- DNS and MOTD server ownership verification
- Project submission and admin moderation workflows
- R2-backed media and version downloads with cleanup and download tracking
- Better Auth accounts, email verification, sessions, roles, and organizations
- Admin controls for moderation, users, site settings, feature flags, and SEO
- Next.js 16 and React 19
- Convex for data, functions, scheduling, and realtime
- Better Auth for authentication
- Cloudflare R2 for files and images
- Tailwind CSS, Base UI, shadcn components, and Hugeicons
- Biome, TypeScript, Playwright, and Bun
- Bun 1.3.6 or newer
- A Convex project
- Cloudflare R2 credentials
- Resend credentials for account emails
- A Bedrock Nexus API deployment, or access to the hosted API
Install dependencies:
bun installCreate .env.local from .env.example, then fill in your own
development credentials. Never commit environment files or credentials.
Configure the matching server-side variables in your Convex deployment. Convex
actions cannot call a localhost API, so BEDROCKNEXUS_API_URL and
SERVER_VERIFICATION_API_URL must be publicly reachable HTTPS endpoints when
used by hosted Convex functions.
Project release validation also requires a separately deployed validator
worker. Configure ARTIFACT_VALIDATOR_URL in Convex and either share
BEDROCKNEXUS_API_KEY with the worker or set a dedicated
ARTIFACT_VALIDATOR_API_KEY.
Public media and approved releases are delivered from the R2 CDN bucket, while
unvalidated project uploads remain in a separate private bucket. Configure
R2_CDN_BUCKET, R2_UPLOADS_BUCKET, and R2_CDN_PUBLIC_URL in Convex. The R2
credentials must be able to read, write, copy, and delete objects in both
buckets. See STORAGE.md for the bucket, CORS, lifecycle,
and release-promotion setup.
Start Convex and select or create the local development deployment:
bunx convex devKeep Convex running, then start Next.js in a second terminal:
bun run devThe web app runs at http://localhost:3000. On first use, the Convex CLI will prompt you to select or create a deployment.
| Command | Purpose |
|---|---|
bunx convex dev |
Start the Convex development server |
bun run dev |
Start the Next.js development server |
bun run lint |
Run Biome checks |
bun run lint:fix |
Apply safe Biome formatting and lint fixes |
bun run lint:framework |
Run framework-specific ESLint checks |
bun run typecheck |
Run TypeScript without emitting files |
bun run build |
Create a production build |
bun run test:e2e |
Run Playwright end-to-end tests |
Pull requests and pushes to main run lint and typechecking. Image publishing
uses GitHub Container Registry:
mainbuilds with theprodGitHub Environment and publisheslatest.- Every image also receives an immutable commit SHA tag.
Create a prod GitHub Environment with these variables:
CONVEX_DEPLOYMENT, NEXT_PUBLIC_CONVEX_URL,
NEXT_PUBLIC_CONVEX_SITE_URL, NEXT_PUBLIC_SITE_URL,
NEXT_PUBLIC_API_URL, SITE_URL, and BEDROCKNEXUS_API_URL.
Runtime secrets are configured in the deployment platform and are never copied
into the image.
Local development uses an ignored .env.local file and does not require a
GitHub Environment.
| Path | Contents |
|---|---|
app/ |
Next.js routes, layouts, metadata, and API handlers |
components/ |
Public, dashboard, admin, editor, and UI components |
convex/ |
Schema, queries, mutations, actions, auth, and scheduled jobs |
lib/ |
Shared clients, helpers, validation, and SEO utilities |
e2e/ |
Playwright smoke tests |
docs/ |
Product and search-authority documentation |
See SERVER_FLOW.md and PROJECT_FLOW.md for lifecycle rules. Launch verification is tracked in TESTING.md, while remaining product work lives in TODO.md. Storage delivery and deployment are documented in STORAGE.md.
Read CONTRIBUTING.md before opening a pull request. Please report vulnerabilities privately using SECURITY.md.
The source code is licensed under the GNU Affero General Public License v3.0. The license does not grant rights to the Bedrock Nexus name, logo, or other brand assets; see TRADEMARKS.md.
Bedrock Nexus is not affiliated with Mojang Studios or Microsoft. Minecraft is a trademark of Microsoft Corporation.