Awesome-omni-skill Frontend Pages
Create or modify React pages using MUI components, React Router, and the HATEOAS API client.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/frontend/frontend-pages" ~/.claude/skills/diegosouzapw-awesome-omni-skill-frontend-pages && rm -rf "$T"
manifest:
skills/frontend/frontend-pages/SKILL.mdsource content
Frontend Pages
Technology Stack
- React 19 with TypeScript
- MUI (Material UI) v7 for all UI components
- React Router v7 for client-side routing
- Vite as build tool
Page Types
List Pages (e.g., PatientListPage.tsx
)
PatientListPage.tsx- Fetch data using
with HATEOAS link discovery.apiClient - Support server-side pagination with
controls.TablePagination - Support server-side search with a text input and search button.
- Support sortable columns by clicking table headers (ascending/descending toggle).
- Query parameters:
,page
,pageSize
,search
,sortBy
.sortDirection - Display data in MUI
withTable
for column headers.TableSortLabel
Detail Pages (e.g., PatientDetailPage.tsx
)
PatientDetailPage.tsx- Fetch single item by ID from route params.
- Display all fields using MUI
,Paper
,Typography
.Grid - Provide navigation links (edit, delete, back to list) using HATEOAS links.
Form Pages (e.g., PatientFormPage.tsx
)
PatientFormPage.tsx- Support both Create and Edit modes (determined by presence of route param
).:id - Use MUI
,TextField
, etc. for form inputs.Select - Submit via
orapiClient.post()
.apiClient.put() - Navigate back to detail/list on success.
Statistics Page (StatisticsPage.tsx
)
StatisticsPage.tsx- Uses recharts library for charts.
- Chart types:
,PieChart
,BarChart
.LineChart - Fetches data from
endpoints./api/statistics/* - Each chart in its own
card with title.Paper
Admin Page (AdminPage.tsx
)
AdminPage.tsx- Buttons for Seed and Reset operations.
- Displays current database statistics.
Routing
- All routes defined in
under aApp.tsx
wrapper.<Layout /> - Layout includes navigation bar with links to all sections.
- Pattern:
,/entities
,/entities/new
,/entities/:id
./entities/:id/edit
API Client (frontend/src/api/apiClient.ts
)
frontend/src/api/apiClient.ts- Singleton
class.ApiClient
— fetches root links fromdiscoverApi()
(cached).GET /api
— looks up a link by relation name.getLink(rel)
— finds a link in a given array.findLink(links, rel)
,get<T>
,post<T>
,put<T>
— typed HTTP methods.delete- All navigation uses HATEOAS links — never hard-code API URLs in pages.
TypeScript Types
- Located in
.frontend/src/types/ - Must mirror backend DTOs:
,patient.ts
,doctor.ts
,exam.ts
,statistics.ts
.hateoas.ts
Adding a New Page
- Create the page component in
.frontend/src/pages/ - Add the route in
.App.tsx - Add navigation button in
if it's a top-level section.Layout.tsx - Create/update types in
to match backend DTOs.frontend/src/types/ - Use
for all API calls, discovering links from HATEOAS responses.apiClient