frontend-dev
SKILL.md
The frontend uses ra-core (react-admin headless) for data fetching, routing, and CRUD logic, with shadcn-admin-kit and shadcn/ui for the UI layer.
Component architecture
- Import form inputs (
TextInput,SelectInput,ReferenceInput, etc.) from@/components/admin/, not from shadcn/ui directly. The admin layer wraps shadcn with ra-core integration (labels, validation, data binding). - Import pure UI components (
Card,Button,Badge,Sheet, etc.) from@/components/ui/. - Domain configuration (deal stages, note statuses, task types, company sectors) comes from
useConfigurationContext(), never hardcoded.
Resource (CRUD) conventions
Each resource follows this file structure (e.g. contacts/):
ContactList.tsx— list page (desktop + mobile variants)ContactShow.tsx— detail viewContactEdit.tsx/ContactCreate.tsx— form pagesContactInputs.tsx— shared form fields reused between create and editindex.tsx— exports{ list, show, edit, create, recordRepresentation }
Resources are registered in root/CRM.tsx via <Resource name="contacts" {...contacts} />.