This commit is contained in:
zhu
2026-05-09 16:50:17 +08:00
parent 2c038e8c0c
commit fd9cf1a52f
13 changed files with 3951 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
{
"file": ".trellis/spec/frontend/index.md",
"reason": "Confirm the implementation follows the expected frontend stack."
}
{
"file": ".trellis/spec/frontend/directory-structure.md",
"reason": "Check billing files live in the expected route-local structure."
}
{
"file": ".trellis/spec/frontend/component-guidelines.md",
"reason": "Review component naming, style isolation, and required comments."
}
{
"file": ".trellis/spec/frontend/state-management.md",
"reason": "Verify existing global stores are reused instead of duplicated."
}
{
"file": ".trellis/spec/frontend/type-safety.md",
"reason": "Check local interfaces and types are documented."
}
{
"file": ".trellis/spec/frontend/quality-guidelines.md",
"reason": "Verify async actions, loading states, and defensive rendering."
}

View File

@@ -0,0 +1,24 @@
{
"file": ".trellis/spec/frontend/index.md",
"reason": "Frontend stack and high-level conventions for Next.js, Zustand, SCSS, and TypeScript."
}
{
"file": ".trellis/spec/frontend/directory-structure.md",
"reason": "Route-local organization and naming conventions for the billing module."
}
{
"file": ".trellis/spec/frontend/component-guidelines.md",
"reason": "Component, style isolation, and documentation rules for new billing UI pieces."
}
{
"file": ".trellis/spec/frontend/state-management.md",
"reason": "Rules for consuming existing Zustand stores and avoiding redundant state."
}
{
"file": ".trellis/spec/frontend/type-safety.md",
"reason": "Type and JSDoc rules for route-local billing interfaces."
}
{
"file": ".trellis/spec/frontend/quality-guidelines.md",
"reason": "Async handling, loading states, defensive data access, and React quality checks."
}

View File

@@ -0,0 +1,22 @@
# Replicate Billing Dashboard Page
## Goal
Rebuild the existing `/web/app/dashboard/billing` page inside `/src/app/dashboard/billing` with equivalent UI and
behavior while adapting the implementation to the current `src` architecture.
## Requirements
- Preserve the billing page content, layout, plan cards, checkout interaction, and checkout-return cleanup behavior from
the `web` implementation.
- Do not copy the `web` structure verbatim when it conflicts with the `src` conventions.
- Reuse existing `src/api`, `src/store`, and utility wrappers whenever they cover the needed behavior.
- Keep route-local UI, hooks, styles, and types inside `src/app/dashboard/billing`.
- Keep async actions guarded by loading states and defensive error handling.
## Acceptance Criteria
- `/dashboard/billing` exists under `src/app`.
- The page renders without TypeScript or build errors.
- Billing-related API calls use existing request helpers and stores where applicable.
- The checkout return cleanup mirrors the current behavior from `web`.

View File

@@ -0,0 +1,26 @@
{
"id": "billing-dashboard-replica",
"name": "billing-dashboard-replica",
"title": "Replicate billing dashboard page",
"description": "",
"status": "in_progress",
"dev_type": null,
"scope": null,
"package": null,
"priority": "P2",
"creator": "tao",
"assignee": "tao",
"createdAt": "2026-05-09",
"completedAt": null,
"branch": null,
"base_branch": "master",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": null,
"relatedFiles": [],
"notes": "",
"meta": {}
}