Admin Dashboard Android & Employee Dashboard iOS

Settings Page -> Android & iOS

Employee Details -> Android & Doctor Details -> iOS

Employee Details -> Android & Doctor Details -> iOS with extended CTS

This app includes a typed service layer and Redux Toolkit store to fetch and render employee activities, team sales, and reports.
src/api/client.ts: Axios wrapper injecting Bearer token and handling 401 (dispatches logout) and single retry on network/5xx.src/services/EmployeeService.ts:getActivities(employeeId),submitActivity(payload).src/services/AdminService.ts:getTeamSales(teamId).src/services/ReportService.ts:getReports(start, end).
src/store/index.ts: configureStore withauth,employee,adminreducers.src/store/slices/authSlice.ts: minimal token+role withsetCredentials,logout.src/store/slices/employeeSlice.ts,adminSlice.ts: async thunks, loading/error states, selectors.
src/screens/EmployeeDashboard.tsx,src/screens/AdminDashboard.tsxuse store selectors and render minimal cards with loading/empty/error states.
Small fixtures in src/fixtures/mockData.ts for local demos/tests.
npm install
npm run startnpm run testJest tests in __tests__/services/*.test.ts mock axios and cover success/error paths.
The project uses an automated pre-commit hook that blocks commits containing duplicate files with " 2" suffix (a common Cursor IDE issue).
Test the hook:
.git/hooks/pre-commitIf hook blocks your commit:
# 1. Compare duplicate with original
diff "file.ts" "file 2.ts"
# 2. Delete if identical, or merge changes then delete
rm "file 2.ts"
# 3. Commit again
git commit -m "Your message"# Development
npm start # Start Expo dev server
npm run android # Run on Android
npm run ios # Run on iOS
# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix linting issues
npm run type-check # TypeScript type checking
npm test # Run tests
npm run test:watch # Run tests in watch mode
# Duplicate File Management
npm run check-duplicates # Scan and clean duplicate files
npm run clean:duplicates # Alias for check-duplicates
# Pre-commit (runs automatically)
npm run pre-commit # Duplicate check + lintingCursor IDE sometimes creates files with " 2" suffix. The pre-commit hook prevents these from being committed.
Manual cleanup:
npm run check-duplicates # Interactive scan and cleanupSee full documentation: docs/PREVENTING-DUPLICATE-FILES.md
