How jlusong15/refine-nextjs works
Applicant Tracking Dashboard is a Next.js recruitment interface for managing applicants and interviews against a shared Strapi backend. Recruiters can browse, search, and maintain applicant records, inspect an applicant’s interviews, and schedule interviews; the dashboard summarizes applicant and interview data. Refine provides resource operations and access checks, while the UI includes a mock-login viewer. The README documents the Strapi integration; unsampled forms and dashboard widgets are included based on the source index, so their internal behavior is not detailed here.
Main entry points: applicants/page.tsx Applicant list · dashboard/page.tsx Dashboard page · refine.provider.tsx Resource provider · [id]/page.tsx Applicant details
Components 26
Recruitment workflow
- Applicant list
src/app/applicants/page.tsx - Create applicant
src/app/applicants/create/CreateApplicantForm.tsx - Edit applicant
src/app/applicants/edit/[id]/EditApplicantForm.tsx - Applicant details
src/app/applicants/[id]/page.tsx - Schedule interview
src/app/applicants/[id]/CreateInterviewForm.tsx
Dashboard insights
- Dashboard page
src/app/dashboard/page.tsx - Summary statistics
src/app/dashboard/DashboardStats.tsx - Status chart
src/app/dashboard/ApplicantStatusChart.tsx - Upcoming interviews
src/app/dashboard/UpcomingInterviewsCard.tsx - Recent applicants
src/app/dashboard/RecentApplicantsCard.tsx
Data and access
- Resource provider
src/providers/refine.provider.tsx - HTTP client
src/lib/axios.ts - Strapi API
- Access control
src/providers/access-control.provider.ts - Access guard
src/guards/access.guard.ts - Mock login state
src/components/store/toggle-viewer.store.ts - Recruitment types
src/types - Domain constants
src/constants - Date and currency formatting
src/lib/format.ts - Applicant validation
src/schemas/applicant.schema.ts - Interview validation
src/schemas/interview.schema.ts
Shared interface
- Page layout
src/components/layout/DefaulPageLayout/index.tsx - Data table
src/components/shared/DataTable/index.tsx - Table search
src/components/shared/DataTable/DataTableSearch.tsx - UI primitives
src/components/ui
Other components
- Recruiter
Connections 32
- Recruiter → Applicant list: manages
- Applicant list → Resource provider: queries and deletes
src/app/applicants/page.tsx - Applicant list → Data table: renders
src/app/applicants/page.tsx - Applicant list → Table search: renders
src/app/applicants/page.tsx - Applicant list → Create applicant: links to
src/app/applicants/page.tsx - Applicant list → Applicant details: links to
src/app/applicants/page.tsx - Create applicant → Applicant validation: validates with
- Create applicant → Resource provider: submits through
- Edit applicant → Resource provider: submits through
- Applicant details → Resource provider: loads and deletes
src/app/applicants/[id]/page.tsx - Applicant details → Schedule interview: opens
src/app/applicants/[id]/page.tsx - Schedule interview → Interview validation: validates with
- Schedule interview → Resource provider: submits through
- Dashboard page → Resource provider: loads resources
src/app/dashboard/page.tsx - Dashboard page → Summary statistics: renders
src/app/dashboard/page.tsx - Dashboard page → Status chart: renders
src/app/dashboard/page.tsx - Dashboard page → Upcoming interviews: renders
src/app/dashboard/page.tsx - Dashboard page → Recent applicants: renders
src/app/dashboard/page.tsx - Resource provider → HTTP client: configures
src/providers/refine.provider.tsx - Resource provider → Access control: configures
src/providers/refine.provider.tsx - HTTP client → Strapi API: sends requests
README.md - Access control → Mock login state: reads state
src/providers/access-control.provider.ts - Access guard → Access control: checks access
- Applicant list → Domain constants: uses resource and access values
src/app/applicants/page.tsx - Applicant details → Date and currency formatting: formats values
src/app/applicants/[id]/page.tsx - Applicant details → Recruitment types: uses types
src/app/applicants/[id]/page.tsx - Dashboard page → Recruitment types: uses types
src/app/dashboard/page.tsx - Dashboard page → Date and currency formatting: formats date
src/app/dashboard/page.tsx - Applicant list → Page layout: uses layout
src/app/applicants/page.tsx - Applicant list → UI primitives: uses controls
src/app/applicants/page.tsx - Data table → UI primitives: uses controls
src/components/shared/DataTable/index.tsx - Table search → UI primitives: uses input
src/components/shared/DataTable/DataTableSearch.tsx