Description
Holds fetched pool listings and the current filter/pagination UI state for the browse page.
Where
astre_frontend/src/store/poolsStore.ts (new file)
What to implement
A Zustand store with state { pools: Pool[]; total: number; page: number; isLoading: boolean; search: string } and actions setPools(data), setLoading(bool), setSearch(term), setPage(n). Define and export a Pool TypeScript type matching the shape the backend's GET /pools returns (see the backend's Pool entity issue for the field list — omit backend-only fields like the internal id if you want, but contractPoolId, title, description, goal, raised, status should match).
Acceptance Criteria
Description
Holds fetched pool listings and the current filter/pagination UI state for the browse page.
Where
astre_frontend/src/store/poolsStore.ts(new file)What to implement
A Zustand store with state
{ pools: Pool[]; total: number; page: number; isLoading: boolean; search: string }and actionssetPools(data),setLoading(bool),setSearch(term),setPage(n). Define and export aPoolTypeScript type matching the shape the backend'sGET /poolsreturns (see the backend'sPoolentity issue for the field list — omit backend-only fields like the internalidif you want, butcontractPoolId,title,description,goal,raised,statusshould match).Acceptance Criteria
Pooltype is exported and used by the store'spoolsfieldnpm run typecheckpasses