Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、Codex、Cursor 與 40+ 程式碼代理人作為持續機器人傳訊。群組聊天、主題串…
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A single-page app to track the steps of a software release. Built with Next.js (TypeScript), GraphQL (graphql-yoga), Prisma and PostgreSQL.
A Release has a name, a due date, optional additional info, and 7 fixed steps that can be checked or unchecked. Its status is computed, never stored:
| Completed steps | Status |
|---|---|
| none | planned |
| at least one | ongoing |
| all 7 | done |
graphql-yoga in a Next route handlerdocker compose up --build
Open http://localhost:3000. Migrations are applied automatically on container start.
npm install.env.local with a Postgres connection string (a hosted one such as Neon works):
DATABASE_URL=postgresql://user:password@host:5432/dbname
.env, not .env.local, so pass the variable directly:
DATABASE_URL="postgresql://..." npx prisma migrate deploy
(PowerShell: $env:DATABASE_URL="postgresql://..."; npx prisma migrate deploy)npm run dev and open http://localhost:3000If your database already has the Release table (for example created with prisma db push), mark the migration as applied instead:
npx prisma migrate resolve --applied 20261025000000_init
npm test
tests/status.test.ts: the status rule.tests/resolvers.test.ts: the GraphQL API end to end through the HTTP handler (create, toggle steps, update info, delete, validation), with the database mocked.One endpoint: POST /api/graphql (GraphQL). GET /api/graphql serves the GraphiQL explorer in a browser.
| Operation | Description |
|---|---|
releases(limit: Int = 20, offset: Int = 0) | A page of releases ordered by due date (then id). Returns { items, total, hasMore }. limit is capped at 100. |
release(id: ID!) | One release, or null |
| Operation | Description |
|---|---|
createRelease(name: String!, dueDate: String!, additionalInfo: String) | Create a release. dueDate is an ISO 8601 datetime. Name must be non-blank. |
updateRelease(id: ID!, name: String, dueDate: String, additionalInfo: String) | Edit name, due date and/or info. Omitted fields are unchanged; additionalInfo: null clears it. |
toggleStep(releaseId: ID!, stepId: Int!, completed: Boolean!) | Set a step on or off (idempotent). stepId is 1 to 7. |
updateAdditionalInfo(releaseId: ID!, additionalInfo: String) | Replace the additional info (null or empty clears it). |
deleteRelease(id: ID!) | Delete a release. Returns true. |
enum Status { planned ongoing done }
type Step { id: Int! label: String! completed: Boolean! }
type ReleasePage { items: [Release!]! total: Int! hasMore: Boolean! }
type Release {
id: ID! name: String! dueDate: String! additionalInfo: String
status: Status!
steps: [Step!]!
}
Errors use GraphQL error codes BAD_USER_INPUT (invalid input) and NOT_FOUND (unknown release).
curl -X POST http://localhost:3000/api/graphql \
-H "Content-Type: application/json" \
-d '{"query":"{ releases(limit: 20) { items { id name status } total hasMore } }"}'
curl -X POST http://localhost:3000/api/graphql \
-H "Content-Type: application/json" \
-d '{"query":"mutation { createRelease(name: \"v1.0\", dueDate: \"2026-12-01T10:00:00Z\") { id status } }"}'
PostgreSQL, one table. See prisma/schema.prisma and prisma/migrations/.
Release
| Column | Type | Notes |
|---|---|---|
id | TEXT | Primary key, UUID generated by Prisma |
name | TEXT | Not null |
dueDate | TIMESTAMP(3) | Not null; indexed (Release_dueDate_idx) |
additionalInfo | TEXT | Nullable |
completedSteps | INTEGER[] | Ids of steps that are on; default empty |
createdAt | TIMESTAMP(3) | Default now |
updatedAt | TIMESTAMP(3) | Updated automatically |
Design notes:
src/lib/steps.ts), not in a table. Each release only stores which step ids are done.status is derived from completedSteps (src/lib/status.ts) so there is a single source of truth.src/app/page.tsx single page
src/app/api/graphql/route.ts GraphQL endpoint
src/graphql/ schema + resolvers + yoga instance
src/components/ UI components (Apollo Client)
src/lib/ steps, status rule, prisma client, GraphQL operations
prisma/ schema + migrations
tests/ Vitest tests
next build fails with useContext of null, check that NODE_ENV is not set to development in your shell (NODE_ENV=production npm run build).To be added after deployment: live URL, load-test results (baseline vs optimized).