State Management
The domain state provides a centralized, type-safe data layer for job matching platforms. It encompasses all essential business entities including users, organizations, job postings, applications, and real-time messaging.
This state structure serves as the single source of truth for authentication, job catalog management, application processing, search and filtering, pagination, and error handling across all application workflows.
π Table of Contentsβ
- π Authentication & User Management
- π’ Organization Management
- πΌ Job Posting & Catalog Management
- π Application & Order Management
- π¬ Real-time Communication
- π Search & Filtering
- π Pagination
- π§ Navigation & UI Control
- βοΈ Configuration
- π¨ Error Handling
- π§ Technical State
- π‘ Usage Examples
π Authentication & User Managementβ
Manages user authentication, profile data, and session information for job seekers and employers.
Property | Description | Usage Example |
---|---|---|
loggedInUser | Currently authenticated user | Display user info, check permissions |
user | Individual user being viewed/edited | Profile pages, user details |
users | List of users for admin management | User management, directory listings |
sessionState | Current session information and token data | Session validation, token management |
sessionType | Session storage method (cookie or local_storage) | Session configuration |
hasVerificationEmailBeenSent | Email verification status | UI feedback for email verification |
isCreateUserSuccess | User creation success flag | Registration workflow feedback |
invitations | Team member invitations (sent/received) | Invitation management, notifications |
acceptInvitationData | Data for processing team invitations | Invitation acceptance flow |
resetPasswordToken | Password reset token | Password reset workflow |
π’ Organization Managementβ
Handles employer organization data, team memberships, and organizational job postings.
Property | Description | Usage Example |
---|---|---|
organization | Currently selected/viewed employer organization | Organization profile pages |
organizations | List of employer organizations | Organization directory, search results |
organizationMembers | Team members of current organization | Team management, member listings |
organizationProducts | Job postings belonging to organization | Organization job catalog |
organizationProductsCount | Total count of organization job postings | Pagination, analytics |
paymentDashboardUrl | Payment dashboard URL for organization billing | Payment integration |
πΌ Job Posting & Catalog Managementβ
Manages job posting information, categories, skill attributes, and file attachments.
Property | Description | Usage Example |
---|---|---|
product | Currently selected/viewed job posting | Job detail pages |
products | List of job postings | Job listings, search results |
homeProducts | Featured job postings for homepage | Homepage job showcase |
categories | Job categories (e.g., engineering, design) | Category navigation, filtering |
homeCategories | Featured job categories for homepage | Homepage category display |
attributes | Job skill attributes and requirements | Job filtering, skill tagging |
attributesPage | Current attributes page/section | Attributes navigation |
productAttachment | Job posting file attachment | File downloads, job descriptions |
productAttachmentUploadUrl | Pre-signed URL for job attachment uploads | File upload functionality |
productUploadFileResponse | File upload response data | Post-upload processing |
π Application & Order Managementβ
Handles job application management and processing workflows.
Property | Description | Usage Example |
---|---|---|
order | Currently selected job application | Application detail pages |
ordersList | List of job applications | Application history, management |
π¬ Real-time Communicationβ
Manages real-time messaging between employers and job seekers.
Property | Description | Usage Example |
---|---|---|
topics | Chat topics/conversations between employers and candidates | Chat interface, conversation list |
topicId | Currently active conversation topic ID | Message routing, active chat |
messages | Messages in current conversation | Chat message display |
chatSearchText | Chat search query for messages/topics | Message/topic search functionality |
π Search & Filteringβ
Provides advanced search and filtering capabilities for job listings and applications.
Property | Description | Usage Example |
---|---|---|
searchFilter | Complex job search configuration | Advanced job search functionality |
searchFilter.keyword | Job search keyword | Search input value |
searchFilter.keywordQuery | Processed keyword query for backend | Backend search parameter |
searchFilter.filterQuery | Combined filter query string | API query string |
searchFilter.selectedFilters | Active filter selections (skills, location, etc.) | Filter UI, search refinement |
π Paginationβ
Manages pagination for all list-based data throughout the application.
Property | Description | Usage Example |
---|---|---|
pagination | Pagination info object for all lists | Load more functionality, page navigation |
pagination.products | Job posting list pagination | Job listing pagination |
pagination.orders | Application list pagination | Application history pagination |
pagination.organizations | Organization list pagination | Organization directory pagination |
pagination.users | User list pagination | User management pagination |
pagination.topics | Conversation topics pagination | Chat topics pagination |
pagination.messages | Message history pagination | Chat message history |
pagination.invitations | Team invitations pagination | Invitation management |
pagination.organizationMembers | Organization members pagination | Team member listing |
pagination.organizationProducts | Organization job postings pagination | Organization job catalog |
π§ Navigation & UI Controlβ
Controls application navigation, routing, and user interface state.
Property | Description | Usage Example |
---|---|---|
currentPage | Current page/route identifier | Page-specific logic |
isMenuOpen | Mobile/sidebar menu state | Menu toggle functionality |
intendedUrl | URL to redirect after login | Post-login navigation |
signUpWizardPage | Current step in signup wizard | Multi-step registration |
defaultWizardPage | Default wizard starting page | Wizard initialization |
loggedInRedirectUrl | Default redirect for authenticated users | Post-login routing |
logoutRedirectUrl | Redirect URL after logout | Post-logout routing |
needsPaymentSetupRedirect | Payment setup redirect URL | Payment flow routing |
notLoggedInRedirect | Redirect for unauthenticated users | Authentication enforcement |
organizationRegistrationNotCompleteRoute | Incomplete organization setup redirect | Organization onboarding |
successDeactivateAccountUrl | Account deactivation success page | Account management flow |
verifyChangeEmailUrl | Email change verification redirect | Email update flow |
verifiedEmailUrl | Post email verification redirect | Email verification flow |
π§ Configurationβ
Application-wide configuration settings and preferences.
Property | Description | Usage Example |
---|---|---|
attributesName | Custom name for skill attributes (default: "skills") | Dynamic labeling throughout UI |
pageSize | Default page sizes for all data listings | Pagination configuration |
π¨ Error Handlingβ
Global error handling and display management.
Property | Description | Usage Example |
---|---|---|
errors | Application errors array | Error display, logging |
hasError | Global error flag | Error state indication |
π§ Technical Stateβ
System-level state for loading indicators and technical operations.
Property | Description | Usage Example |
---|---|---|
isLoading | Global loading state | Loading indicators across the application |
π‘ Usage Examplesβ
Basic Component Usageβ
function JobListings({ state, middleware, updateState }) {
// Access current user data
const currentUser = state.loggedInUser;
// Check loading state
if (state.isLoading) {
return <LoadingSpinner />;
}
// Display job postings
const jobPostings = state.products || [];
return (
<div>
<h2>Available Positions</h2>
{jobPostings.map(job => (
<JobCard key={job.id} job={job} currentUser={currentUser} />
))}
</div>
);
}
Updating Stateβ
// Direct state update
updateState('isLoading', true);
// Update job listings
updateState('products', newJobPostings);
updateState('isLoading', false);
// Update job search filters
updateState('searchFilter', {
...state.searchFilter,
keyword: 'software engineer',
selectedFilters: [...state.searchFilter.selectedFilters, { type: 'location', value: 'remote' }]
});
Conditional Rendering Based on Stateβ
function JobPlatformApp({ state }) {
// Show login for unauthenticated users
if (!state.loggedInUser) {
return <LoginForm />;
}
// Show error state
if (state.hasError) {
return <ErrorDisplay errors={state.errors} />;
}
// Route based on current page
switch (state.currentPage) {
case 'home':
return <HomePage />;
case 'positions_list':
return <JobListings />;
case 'position_show':
return <JobDetails />;
case 'my_page':
return <UserDashboard />;
case 'orders':
return <ApplicationsList />;
case 'organization_show':
return <OrganizationProfile />;
case 'topics_list':
return <ChatTopics />;
case 'launch_screen':
return <LoadingScreen />;
default:
return <NotFoundPage />;
}
}