Homeowner experience: dashboard, jobs, properties, profile, discovery, and settings
PosterDashboard — usePosterProfile, JobTypeSearchBar, PromoCard ×4
PosterDashboard — Empty: no profile data yet, default greeting
PosterDashboard — Banners: needsBidReview > 0, pendingContract, unreadCount = 5
PosterJobsScreen — usePosterJobs, TABS: bidding/in_progress/completed/expired/appointments, FAB menu
PosterJobsScreen — activeTab: in_progress, contractor avatar + name on card
PosterJobsScreen — activeTab: completed, pagination controls, 10 per page
PosterJobDetail — job.status === 'draft', publishJob mutation, ConfirmationDialog
PosterJobsScreen — Empty: processedJobs.length === 0, all tabs at 0
PosterProperties — useQuery(api.poster.properties.list), SearchBar, sort, pagination
PropertyDetailScreen — useQuery(api.poster.properties.get, { propertyId }), jobs list
AddProperty — AddressAutocomplete, createPropertyMutation, PROPERTY_TYPES chips
PosterProfile > ProfileInfoTab — useQuery(api.users.posters.me), Avatar, Badge
PosterDiscoverScreen — FilterPillButton, StoryCard, contractor feed
FavoritesScreen — useQuery(api.poster.favorites.list), FavoriteCard, removeFavorite
PosterSettings — signOut (Clerk), Switch toggles, payment methods list
screenapp/(poster)/(tabs)/index.tsx
screenapp/(poster)/(tabs)/jobs.tsx
screenapp/(poster)/jobs/create.tsx
screenapp/(poster)/jobs/[id].tsx
screenapp/(poster)/jobs/post.tsx
screenapp/(poster)/properties/index.tsx
screenapp/(poster)/profile/index.tsx
screenapp/(poster)/settings/index.tsx
queryapi.users.posters.me
queryapi.poster.notifications.getUnreadCount
queryapi.poster.jobs.list
queryapi.poster.appointments.getMyAppointments
queryapi.poster.appointments.getAppointmentCounts
queryapi.poster.properties.list
queryapi.poster.properties.get
queryapi.jobs.jobs.get
mutationapi.poster.jobs.publishJob
mutationapi.poster.properties.create
mutationapi.poster.properties.update
mutationapi.poster.properties.remove
mutationapi.poster.properties.setPrimary
mutationapi.poster.favorites.remove
mutationapi.users.posters.updateProfile
mutationapi.payments.escrow.approveRelease
posterUsers
posterProfile
posterProperties
jobs
jobBids
notifications
favorites
escrow
contracts
appointments
Hero search bar with JobTypeSearchBar drives all job creation. PromoCards replaced quick-action icons for clearer CTAs and better discoverability.
Bidding, Active, Done, Closed, and Appointments tabs with counts. Segmented control keeps all states one tap away. Pagination at 10 items per page.
Jobs created via wizard land in draft status. Explicit Publish button with confirmation dialog transitions draft to open, making the job visible to contractors.
Floating action button on Jobs tab for quick job creation. Sort dropdown (8 options) and search with debounce for power users managing many jobs.