Skip to content

Roadmap

For the tech stack and design decisions, see Architecture → Overview.

RoutePurpose
/Home (Hero + featured + recent searches)
/propertiesProperty search with map + filters
/properties/[listingId]Property detail (gallery, specs, contact, tours)
/agentsPublic agent directory
/agents/[agentId]Agent profile + listings + curated lists
/agents/[agentId]/lists/[slug]Agent’s curated property list
/agencies/[teamId]Agency public page (team info + members + listings)
/sitemap.xmlDynamic sitemap
RoutePurpose
/portal/profileCustomer profile management
/portal/favoritesFavorited properties (SSR grid)
/portal/inboxCustomer chat inbox
/portal/my-listingsHomeowner listings + create/manage + filters
/portal/recently-viewedRecently viewed properties
/portal/saved-searchesSaved search filters
/portal/become-agentAction-only — Dialog mounted at root layout
RoutePurpose
/dashboard/profileAgent profile management
/dashboard/settingsTour availability + notification preferences
/dashboard/listingsAgent listings grid + create/manage/preview
/dashboard/listsCurated property lists
/dashboard/leadsInquiry pipeline (5 statuses)
/dashboard/inboxAgent chat inbox
/dashboard/calendarFullCalendar tour management
/dashboard/teamsTeam management (14 form actions)
/dashboard/analyticsAnalytics (placeholder — pending real cross-team aggregation)
/dashboard/admin/failed-leadsAdmin-only DLQ review / replay for failed lead ingestions
RoutePurpose
/api/addressesAddress CRUD
/api/avatar, /api/agent-avatarAvatar upload/delete
/api/chat/channels, /api/chat/tokenGetStream channel + token
/api/favoritesFavorite toggle
/api/floor-plansFloor plan PDF upload/delete
/api/inventoryUnit inventory management
/api/locations/*Meilisearch search, enrich, reverse-geocode, zip-lookup
/api/places/*Google Places autocomplete + details proxy
/api/properties/*Property data + recommended
/api/property-imagesProperty image upload/reorder/delete
/api/property-videosProperty video URL add/reorder/delete
/api/saved-searchesSaved search CRUD
/api/stream-webhookGetStream webhook handler
/api/team-imagesTeam logo/banner upload
/api/toursTour request CRUD
/api/agents/searchAgent + team search (for owner assignment)
/api/ai-jobs/[id]AI job status polling (auth + ownership scoped)
PackagePurpose
@repo/databaseKysely client (pg) + SQL migrations + generated types
@repo/authBetter Auth shared configuration
@repo/apiShared tRPC routers + service layer (detail)
@repo/cacheRedis / Valkey client (ioredis wrapper)
@repo/redis-searchProperty search on Valkey with GEOSEARCH
@repo/validationZod schemas, property rules engine
@repo/notificationsKnock workflow translations (es / en) + HTML email layout + escapeHtml. Shared by svelte-web and worker.
@repo/server-servicesCross-app server helpers (IP-trust gate, email transport, IP rate limiter).
@repo/contractZod wire schemas → generated native Swift/Kotlin model DTOs
@repo/eslint-config, @repo/typescript-configShared tooling

Per-feature deep-dives live next to canonical code as *.FEATURE.md. The full manifest is in Features.

FeatureCanonical FEATURE.md
Authenticationpackages/auth/FEATURE.md
Property managementpackages/api/src/services/listings.FEATURE.md
Property searchpackages/api/src/services/properties.FEATURE.md
Property detailpackages/api/src/services/properties.FEATURE.md
Leadspackages/api/src/services/leads.FEATURE.md
Tourspackages/api/src/services/tours.FEATURE.md
Chatpackages/api/src/services/chat.FEATURE.md
Notificationspackages/notifications/FEATURE.md
Agentspackages/api/src/services/agents.FEATURE.md
Teamspackages/api/src/services/teams.FEATURE.md
Locationspackages/api/src/services/locations.FEATURE.md
Portal (favorites, profile, saved searches)packages/api/src/services/portal.FEATURE.md
Imagesapps/svelte-web/src/lib/server/images.FEATURE.md
Native contract codegenpackages/contract/FEATURE.md

Local-only drafts and design intent live in /context/features/ (gitignored).