Sui Builder Hub is a one-stop learning, building, hackathon, bounty, and community platform for the Sui ecosystem.
The project is intentionally split into independent applications:
apps/web: public user-facing site built with Next.js and React.apps/admin: administrator and organizer console built with Vite React.apps/docs: Docusaurus documentation and MDX learning content.services/api: Rust API built with axum and Toasty.services/worker: Rust background worker for GitHub docs sync, Docusaurus builds, search indexing, and notifications.crates/*: shared Rust crates for domain models, DB access, auth, search, and storage.
Current product surface includes learning tracks, articles, GitHub-synced Markdown docs, ideas, bounties, hackathons, reviewed project galleries, winner showcases, search, and a separate admin console.
pnpm install
pnpm dev:web
pnpm dev:admin
pnpm dev:docs
cargo run -p apiDatabase schema changes are managed through Toasty migrations:
scripts/migrate-generate.sh init_schema
DATABASE_URL=postgresql://sui_builder:sui_builder@localhost:5432/sui_builder scripts/migrate-apply.shSee docs/MIGRATIONS.md for the workflow.
For a fresh local database, run the combined bootstrap after Postgres is available:
scripts/bootstrap-local.shIt applies migrations and seeds demo content. Set RUN_VALIDATE=1 to run the full build validation after seeding, or SKIP_PNPM_INSTALL=1, SKIP_MIGRATIONS=1, and SKIP_SEED=1 to skip individual steps.
The first implementation milestone is the shell product: navigation, visual system, service skeletons, core routes, and validation docs. The next milestone is functional Sui wallet authentication and the first CRUD modules.
Docs build jobs default to:
pnpm --filter @sui-builder-hub/docs buildConfigure production workers with DOCUSAURUS_BUILD_CWD, DOCUSAURUS_BUILD_OUTPUT_DIR, and DOCUSAURUS_BUILD_TIMEOUT_SECONDS. The worker marks a build job failed if the command exits non-zero, times out, or does not produce the configured output directory.
The API exposes /health and /health/live for liveness and /health/ready for readiness. Readiness checks database access and reports whether zkLogin JWKs are loaded, unloaded from configured sources, or not configured.
Strict wallet verification supports Ed25519, Secp256k1, Secp256r1, passkey, multisig from enabled schemes, and zkLogin when JWKs are configured. Use AUTH_ZKLOGIN_JWKS_JSON for static keys or AUTH_ZKLOGIN_JWKS_URLS_JSON for startup refresh from trusted issuer JWKS endpoints.
Rate limits cover auth, article publishing, article image uploads, and bounty creation/submission. They use in-memory buckets locally or Redis when AUTH_RATE_LIMIT_BACKEND=redis.
The local deployment stack includes Postgres, Redis, Meilisearch, MinIO, API, worker, web, admin, and docs:
docker compose -f infra/compose.yaml up --buildThe compose worker disables Docusaurus build jobs by default because the docs image builds and serves the static site directly. Production workers can enable DOCUSAURUS_BUILD_COMMAND when Node and pnpm are available in the worker image.