Bitsocial Web is the public web monorepo for Bitsocial.
It currently serves:
https://bitsocial.net/for the public Bitsocial landing/about sitehttps://bitsocial.net/docs/for Docusaurus docshttps://bitsocial.net/stats/for the Grafana-backed stats dashboard
The public URL strategy is route-first, not subdomain-first. Until the flagship web client takes over bitsocial.net, docs and stats stay under the main domain for SEO and brand consolidation.
about/ Public Bitsocial landing/about site
docs/ Docusaurus docs, i18n files, and contributor playbooks
stats/ Grafana, Prometheus, Docker Compose, deploy config, and monitor package
scripts/ Shared repo scripts and agent hooks
Each top-level subproject has its own local documentation:
The repo root remains the orchestration layer for installs, verification, and cross-project commands.
Use the pinned Node.js version from .nvmrc and Yarn 4 via Corepack.
nvm install && nvm use
corepack enable
corepack yarn installThe main local URL is:
https://bitsocial.localhost
Portless keeps a stable named local URL. On non-master branches, the repo can fall back to a branch-scoped *.bitsocial.localhost route so parallel worktrees do not collide.
corepack yarn start
corepack yarn start:android-usb
corepack yarn start:ios-sim
corepack yarn build
corepack yarn lint
corepack yarn typecheck
corepack yarn format:check
corepack yarn doctor
corepack yarn build:stats-dashboards
corepack yarn stats:up
corepack yarn stats:down
corepack yarn stats:logsBefore committing code changes, run:
corepack yarn build
corepack yarn lint
corepack yarn typecheck
corepack yarn format:checkIf you changed React UI logic in about/src/**, also run:
corepack yarn doctorIf dependencies or manifests changed, also run:
corepack yarn deps:check-pinned
corepack yarn deps:check-hardened
corepack yarn knip- Contains the Bitsocial landing/about site
- Keeps static assets and translations in
about/public/ - Should not be treated as the long-term home for the apps dashboard or the blog
- Contains the canonical Docusaurus project
- Translation source lives in
docs/i18n/ - Contributor playbooks and long-running agent state also live here
- Contains the Grafana/Prometheus stack and deployment files
- The executable monitor service lives in
stats/monitor/ - Public traffic still lands on
bitsocial.net/stats/, with Vercel proxying to the VPS-hosted Grafana origin
- The apps dashboard at
/appsis expected to become its own subproject, and later may move toapps.bitsocial.net. - The blog is also expected to become its own subproject rather than continue to live under
about/. about/should stay focused on explaining Bitsocial as a whole.
Landing-site translations live under:
about/public/translations/{lang}/default.json
Docs translations live under:
docs/i18n/{lang}/...
For translation workflow details, see docs/agent-playbooks/translations.md.
This repo uses tracked AI workflow files and instructions. Read AGENTS.md before making changes.
Relevant local rules also live in:
bitsocial.netis served by Vercel/docsis served from the docs build/statsis routed through Vercel to the VPS-hosted Grafana stacknewsletter.bitsocial.netremains separate
The /apps catalog can show a verified check next to app mirrors when a mirror serves
the same HTML entrypoint hash as an official GitHub release artifact. This is meant to
attest release parity, not domain ownership.
For 5chan and Seedit verified web links, the Vercel 5chan and seedit projects are
configured so Git pushes do not automatically create deployments:
gitProviderOptions.createDeployments = "disabled"
Production domains such as 5chan.cc, 5channel.org, 5chan.app, seedit.app,
www.seedit.app, and p2p.seedit.app should only be updated from a GitHub release
or tag deployment. Do not point those domains at a raw master deployment unless
that deployment has first been promoted into an official release and its static HTML
artifact hash has been checked.
When adding or updating mirror verification metadata in about/src/lib/apps-data.ts,
verify the live mirror HTML against the matching release ZIP before showing the badge.
If the live hash does not match a GitHub release artifact, leave the mirror unverified
until the mirror is redeployed from the release or a new release is cut for the served
artifact.
This repo uses Commitizen for Conventional Commits.
- Interactive:
corepack yarn commit - Non-interactive agent commits should use
git commit --no-verify -m "message"because the Husky Commitizen hook expects a TTY