Homeowner experience: dashboard, properties, profile, discovery, and settings
PosterDashboard — usePosterProfile, usePosterJobs, getUnreadCount
PosterDashboard — Empty: hasJobs === false, propertyList.length === 0
PosterDashboard — actionData.needsBidReview > 0, unreadCount = 5
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
posterUsers
posterProfile
posterProperties
jobs
jobBids
notifications
favorites
escrow
usePosterProfile()
usePosterJobs()
api.poster.dashboard.getOverview
api.poster.dashboard.getRecentActivity
api.poster.dashboard.getActionRequired
api.poster.properties.list
api.poster.properties.get
api.poster.notifications.getUnreadCount
api.poster.properties.create
api.poster.properties.update
api.poster.properties.remove
api.poster.properties.setPrimary
api.poster.favorites.remove
api.users.posters.updateProfile
api.poster.settings.scheduleAccountDeletion
PosterDashboard (tabs/index)
PosterProperties (properties/index)
PropertyDetailScreen (properties/[id])
AddProperty (properties/add)
PosterProfile (profile/index)
PosterDiscoverScreen (discover/index)
FavoritesScreen (favorites/index)
PosterSettings (settings/index)