This repository contains the Rebase community website and internal admin workspace.
The repository covers two parallel deliverables:
- a public Rebase website for readers
- a custom Rebase admin workspace for community operators
- frontend: Astro
- public runtime and deployment: Cloudflare Workers
- admin frontend: Vue
- admin and public API: Hono
- auth: Better Auth
- primary database: PostgreSQL
- database toolkit: Drizzle
- media storage: Cloudflare R2
- visual direction: community media
- editorial format: structured fields plus Markdown bodies
- V1 is a content platform, not a complex business platform
- readers do not need to log in
- staff log in through a custom admin workspace
- event registration is out of scope for V1
- GeekDaily search is in scope for V1
- RSS feeds are in scope for V1
- hiring detail pages and hiring RSS are in scope for V1
- GeekDaily detail URLs use
/geekdaily/geekdaily-{episode-number} - GeekDaily titles default to
极客日报#{episode-number}during migration - RSS feeds default to the latest 3 items per feed in V1
- the admin experience is task-oriented and Rebase-specific, not collection-oriented
DESIGN.md: design-document index for the repositoryapps/web/design_principles.md: public-site design intent, interaction rules, and content hierarchy guidanceapps/web/DESIGN.md: public-site hard spec in DESIGN.md formatapps/admin/design_principles.md: admin UX intent, density rules, and operator workflow guidanceapps/admin/DESIGN.md: admin hard spec in DESIGN.md formatdocs/v1-scope.md: V1 goals, scope, and non-goalsdocs/architecture.md: target system architecture, deployment, caching, and runtime decisionsdocs/content-model.md: public content domains, field design, and URL conventionsdocs/admin-architecture.md: custom admin and API architecture for Rebase operatorsdocs/admin-information-architecture.md: admin modules, operator workflows, and task-oriented UI structuredocs/admin-data-model.md: backend tables, relations, constraints, and workflow statesdocs/implementation-plan.md: development phases and milestone plandocs/acceptance-criteria.md: module-level acceptance criteria for product, content, and operationsdocs/quality-assurance.md: development validation standards and smoke checksdocs/local-development.md: local setup, daily commands, and archive import notesdocs/deployment.md: operator handbookdocs/production-config.md: production settings indexdocs/launch-checklist.md: release verification checklist
Current reality in this repository:
- the public Astro site is implemented and runnable today
- the custom admin workspace and Hono API are the primary local stack
- PostgreSQL, Drizzle seed data, and the bootstrapped operator account are all runnable from this repo
Install dependencies:
pnpm installBootstrap the custom local stack:
cp .env.example .env
pnpm local:bootstrapUseful current commands:
pnpm local:bootstrap: start PostgreSQL, apply migrations, seed content, and bootstrap the default admin accountpnpm dev:stack: run API, admin, and web togetherpnpm dev:public: run API and the public sitepnpm dev:ops: run API and the admin workspacepnpm dev:admin: run the Vue-based admin foundation locallypnpm dev:api: run the Hono API foundation locallypnpm dev:web: run the Astro public site locallypnpm build:admin: build the admin frontendpnpm build:api: build the API servicepnpm typecheck:admin: typecheck the admin apppnpm typecheck:api: typecheck the API apppnpm db:up: start PostgreSQL onlypnpm db:migrate: apply Drizzle migrationspnpm db:seed: seed baseline content and load the GeekDaily archive whengeekdaily.csvis availablepnpm admin:bootstrap: create or refresh the default local operator accountpnpm test:smoke: run Playwright smoke checks against the current build flow
Local service ports:
- public site:
http://127.0.0.1:4321 - admin:
http://127.0.0.1:5174 - API:
http://127.0.0.1:8788 - PostgreSQL:
127.0.0.1:55433
Default local operator account after pnpm local:bootstrap:
- email:
admin@rebase.local - password:
RebaseAdmin123456!
If you have an archived or refreshed geekdaily.csv, re-run the seed step to reload GeekDaily history into the local database:
pnpm db:seedUse these docs as the entry points:
docs/deployment.md: operator handbookdocs/production-config.md: production settings indexdocs/launch-checklist.md: release verification checklist
Agent workflow conventions are documented in AGENTS.md.