How abrar-292/presight-test works
Presight is a full-stack user directory: people search and browse users, refine results by nationality and hobbies, choose sorting, and keep that view in the URL. The client requests paginated results and dynamic facets; the API validates query parameters, applies filter and sort semantics, and reads persisted SQLite data. The README also documents virtualized infinite scrolling, loading/empty/error states, and responsive cards. Server control flow and query behavior are supported by sampled source; client composition and some runtime details are inferred only from the tree and README.
Main entry points: HomePage.tsx Directory page · database.ts SQLite connection · index.ts API server · user.controller.ts User controller
Components 23
Directory client
- Client app
client/src/App.tsx - Directory page
client/src/pages/HomePage.tsx - URL filters
client/src/hooks/useUrlFilters.ts - User data hook
client/src/hooks/useUsers.ts - API client
client/src/api/users.api.ts - Name search
client/src/components/SearchBar.tsx - Facet filters
client/src/components/FilterSidebar.tsx - Sort controls
client/src/components/SortControls.tsx - Virtual user list
client/src/components/UserList.tsx - User card
client/src/components/UserCard.tsx - Result states
client/src/components/EmptyState.tsx - Error state
client/src/components/ErrorState.tsx
User API
- User routes
server/src/routes/userRoutes.ts - User controller
server/src/controllers/user.controller.ts - Query validation
server/src/validations/userQuery.validation.ts - User service
server/src/services/userService.ts - User repository
server/src/repositories/user.repository.ts - API server
server/src/index.ts
SQLite data
- SQLite connection
server/src/db/database.ts - Database schema
server/src/db/schema.sql - Data seeding
server/src/db/seed.ts
Other components
- Directory visitor
- SQLite database
Connections 24
- Directory visitor → Client app: opens
- Client app → Directory page: shows
- Directory page → URL filters: reads and updates
- Directory page → User data hook: loads results
- Directory page → Name search: renders
- Directory page → Facet filters: renders
- Directory page → Sort controls: renders
- Directory page → Virtual user list: renders
- Virtual user list → User card: renders users
- Directory page → Result states: shows empty state
- Directory page → Error state: shows errors
- User data hook → API client: requests pages
- API client → User routes: HTTP requests
- API server → User routes: mounts
- User routes → User controller: dispatches
- User controller → Query validation: parses query
- User controller → User service: requests results
- User service → User repository: queries users and facets
- User repository → SQLite connection: executes SQL
- SQLite connection → SQLite database: reads and writes
- SQLite connection → Database schema: initializes from
- API server → SQLite connection: initializes
- API server → Data seeding: seeds if empty
- Data seeding → SQLite connection: inserts records