Skip to main content

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​

Manages user authentication, profile data, and session information for job seekers and employers.

PropertyDescriptionUsage Example
loggedInUserCurrently authenticated userDisplay user info, check permissions
userIndividual user being viewed/editedProfile pages, user details
usersList of users for admin managementUser management, directory listings
sessionStateCurrent session information and token dataSession validation, token management
sessionTypeSession storage method (cookie or local_storage)Session configuration
hasVerificationEmailBeenSentEmail verification statusUI feedback for email verification
isCreateUserSuccessUser creation success flagRegistration workflow feedback
invitationsTeam member invitations (sent/received)Invitation management, notifications
acceptInvitationDataData for processing team invitationsInvitation acceptance flow
resetPasswordTokenPassword reset tokenPassword reset workflow

🏒 Organization Management​

Handles employer organization data, team memberships, and organizational job postings.

PropertyDescriptionUsage Example
organizationCurrently selected/viewed employer organizationOrganization profile pages
organizationsList of employer organizationsOrganization directory, search results
organizationMembersTeam members of current organizationTeam management, member listings
organizationProductsJob postings belonging to organizationOrganization job catalog
organizationProductsCountTotal count of organization job postingsPagination, analytics
paymentDashboardUrlPayment dashboard URL for organization billingPayment integration

πŸ’Ό Job Posting & Catalog Management​

Manages job posting information, categories, skill attributes, and file attachments.

PropertyDescriptionUsage Example
productCurrently selected/viewed job postingJob detail pages
productsList of job postingsJob listings, search results
homeProductsFeatured job postings for homepageHomepage job showcase
categoriesJob categories (e.g., engineering, design)Category navigation, filtering
homeCategoriesFeatured job categories for homepageHomepage category display
attributesJob skill attributes and requirementsJob filtering, skill tagging
attributesPageCurrent attributes page/sectionAttributes navigation
productAttachmentJob posting file attachmentFile downloads, job descriptions
productAttachmentUploadUrlPre-signed URL for job attachment uploadsFile upload functionality
productUploadFileResponseFile upload response dataPost-upload processing

πŸ“ Application & Order Management​

Handles job application management and processing workflows.

PropertyDescriptionUsage Example
orderCurrently selected job applicationApplication detail pages
ordersListList of job applicationsApplication history, management

πŸ’¬ Real-time Communication​

Manages real-time messaging between employers and job seekers.

PropertyDescriptionUsage Example
topicsChat topics/conversations between employers and candidatesChat interface, conversation list
topicIdCurrently active conversation topic IDMessage routing, active chat
messagesMessages in current conversationChat message display
chatSearchTextChat search query for messages/topicsMessage/topic search functionality

πŸ” Search & Filtering​

Provides advanced search and filtering capabilities for job listings and applications.

PropertyDescriptionUsage Example
searchFilterComplex job search configurationAdvanced job search functionality
searchFilter.keywordJob search keywordSearch input value
searchFilter.keywordQueryProcessed keyword query for backendBackend search parameter
searchFilter.filterQueryCombined filter query stringAPI query string
searchFilter.selectedFiltersActive filter selections (skills, location, etc.)Filter UI, search refinement

πŸ“„ Pagination​

Manages pagination for all list-based data throughout the application.

PropertyDescriptionUsage Example
paginationPagination info object for all listsLoad more functionality, page navigation
pagination.productsJob posting list paginationJob listing pagination
pagination.ordersApplication list paginationApplication history pagination
pagination.organizationsOrganization list paginationOrganization directory pagination
pagination.usersUser list paginationUser management pagination
pagination.topicsConversation topics paginationChat topics pagination
pagination.messagesMessage history paginationChat message history
pagination.invitationsTeam invitations paginationInvitation management
pagination.organizationMembersOrganization members paginationTeam member listing
pagination.organizationProductsOrganization job postings paginationOrganization job catalog

🧭 Navigation & UI Control​

Controls application navigation, routing, and user interface state.

PropertyDescriptionUsage Example
currentPageCurrent page/route identifierPage-specific logic
isMenuOpenMobile/sidebar menu stateMenu toggle functionality
intendedUrlURL to redirect after loginPost-login navigation
signUpWizardPageCurrent step in signup wizardMulti-step registration
defaultWizardPageDefault wizard starting pageWizard initialization
loggedInRedirectUrlDefault redirect for authenticated usersPost-login routing
logoutRedirectUrlRedirect URL after logoutPost-logout routing
needsPaymentSetupRedirectPayment setup redirect URLPayment flow routing
notLoggedInRedirectRedirect for unauthenticated usersAuthentication enforcement
organizationRegistrationNotCompleteRouteIncomplete organization setup redirectOrganization onboarding
successDeactivateAccountUrlAccount deactivation success pageAccount management flow
verifyChangeEmailUrlEmail change verification redirectEmail update flow
verifiedEmailUrlPost email verification redirectEmail verification flow

πŸ”§ Configuration​

Application-wide configuration settings and preferences.

PropertyDescriptionUsage Example
attributesNameCustom name for skill attributes (default: "skills")Dynamic labeling throughout UI
pageSizeDefault page sizes for all data listingsPagination configuration

🚨 Error Handling​

Global error handling and display management.

PropertyDescriptionUsage Example
errorsApplication errors arrayError display, logging
hasErrorGlobal error flagError state indication

πŸ”§ Technical State​

System-level state for loading indicators and technical operations.

PropertyDescriptionUsage Example
isLoadingGlobal loading stateLoading 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 />;
}
}