重构:将 "lobster" 重命名为 "claw" 并添加国际化支持 (i18n)
This commit is contained in:
15
CLAUDE.md
15
CLAUDE.md
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## Project Overview
|
||||
|
||||
OpenClaw Market is a real-time global heatmap dashboard that visualizes AI agent ("lobster") activity worldwide. Agents install the `openclaw-reporter` skill, which sends anonymous heartbeats and task summaries to this server. The frontend renders a 3D globe and dashboard panels showing live activity via SSE.
|
||||
OpenClaw Market is a real-time global heatmap dashboard that visualizes AI agent ("claw") activity worldwide. Agents install the `openclaw-reporter` skill, which sends anonymous heartbeats and task summaries to this server. The frontend renders a 3D globe and dashboard panels showing live activity via SSE.
|
||||
|
||||
## Commands
|
||||
|
||||
@@ -34,16 +34,19 @@ bash scripts/deploy.sh # Build locally, rsync to server, restart PM2
|
||||
- **Geo**: IP geolocation via `ip-api.com`, results cached in `geo_cache` MySQL table. Country-to-continent mapping in `lib/geo/ip-location.ts`.
|
||||
- **Real-time**: Redis Pub/Sub (`lib/redis/index.ts`) for event broadcasting. SSE stream route creates a per-connection Redis subscriber.
|
||||
- **Validation**: Zod schemas in `lib/validators/schemas.ts`.
|
||||
- **Database**: Drizzle ORM with MySQL (`mysql2` driver). Schema in `lib/db/schema.ts`. Tables: `lobsters`, `heartbeats`, `tasks`, `geo_cache`.
|
||||
- **Redis**: ioredis with two singleton clients (main + subscriber). Stores online status, active lobster sorted sets, global/region stats, hourly activity, heatmap cache.
|
||||
- **Database**: Drizzle ORM with MySQL (`mysql2` driver). Schema in `lib/db/schema.ts`. Tables: `claws`, `heartbeats`, `tasks`, `geo_cache`.
|
||||
- **Redis**: ioredis with two singleton clients (main + subscriber). Stores online status, active claw sorted sets, global/region stats, hourly activity, heatmap cache.
|
||||
- **i18n**: `next-intl` with locale-prefixed routing (`/en/...`, `/zh/...`). Config in `i18n/routing.ts`, middleware in `middleware.ts`, translations in `messages/en.json` and `messages/zh.json`.
|
||||
|
||||
### Frontend Structure
|
||||
|
||||
- `app/[locale]/page.tsx` — Homepage (globe + dashboard)
|
||||
- `app/[locale]/continent/[slug]/page.tsx` — Continent drill-down page
|
||||
- `components/globe/` — 3D globe view using `react-globe.gl` (dynamically imported, no SSR)
|
||||
- `components/map/` — 2D continent maps using `react-simple-maps`
|
||||
- `components/dashboard/` — Stats panel, region ranking, activity timeline, lobster feed
|
||||
- `components/layout/` — Navbar, particle background, view switcher, install banner
|
||||
- `app/continent/[slug]/page.tsx` — Continent drill-down page
|
||||
- `components/dashboard/` — Stats panel, region ranking, activity timeline, claw feed
|
||||
- `components/layout/` — Navbar, particle background, view switcher, install banner, language switcher
|
||||
- `messages/` — i18n translation files (en, zh)
|
||||
|
||||
## Environment Variables
|
||||
|
||||
|
||||
Reference in New Issue
Block a user