This repository contains the new Rebase community website.
The project is now converging on two parallel deliverables:
- a public Rebase website for readers
- a custom Rebase admin workspace for community operators
The legacy implementation has been removed from the working tree.
Git history is preserved, and the repo is being rebuilt around a Rebase-specific architecture.
The target architecture is no longer a headless CMS workflow.
- 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: browser checks, automated checks, sample content, and release validation flowdocs/local-development.md: current local setup, service commands, and archive import notesdocs/deployment.md: Worker, Docker Compose, Tunnel, and rollout commands for productiondocs/production-config.md: production inventory, hostnames, Workers, server paths, and config ownershipdocs/launch-checklist.md: launch-critical routes, domain preparation, health checks, and observability baseline
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 the GeekDaily archivepnpm 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 receive a refreshed geekdaily.csv, regenerate the committed archive SQL with:
pnpm cms:generate:geekdailyThe agreed V1 production split is:
apps/webon Cloudflare Workers forrebase.networkandrebase.communityapps/adminon a separate Cloudflare Worker foradmin.rebase.networkapps/api, PostgreSQL, andcloudflaredonrebase@101.33.75.240via Docker Composemedia.rebase.networkon top of the Cloudflare R2 public bucket once the custom domain is attached
Release policy:
- ongoing work continues on
dev - merge
devintomainonly when the release candidate is validated - production deployment should track
main, notdev
Remote API and service operations can be run through ops/manage.sh.
Agent workflow conventions are documented in AGENTS.md.