# abhi5515521c/estatesync_ios architecture

> Architecture diagram of the GitHub repository abhi5515521c/estatesync_ios, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-05-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abhi5515521c/estatesync_ios
- Repository: https://github.com/abhi5515521c/estatesync_ios

## Overview

1. **Overall shape**
   - EstateSync is a two-tier property management system:
     - a native **iOS SwiftUI client** for tenants/owners,
     - a **Node.js/Express API** backed by **Prisma** and either **SQLite** by default or **MySQL** optionally.
   - The app is centered on remote data access; the iOS layer does not appear to own persistence beyond client-side models/services.

2. **Client application boundary**
   - The iOS app lives under `Estatesync/Estate-sync` and is built with **SwiftUI**.
   - The client boundary is organized into:
     - `Core` for shared models, API access, colors/fonts,
     - `Features` for screen-level modules,
     - `SharedUI` for reusable controls and navigation.
   - This is a classic presentation + view model structure, with feature-specific state logic separated from views.

3. **Primary UI composition**
   - `EstatesyncApp.swift` and `ContentView.swift` are the app entry points.
   - `SharedUI/Navigation/MainTabView.swift` suggests the main shell is tab-based, likely switching between dashboard, listings, payments, maintenance, and profile.
   - `SharedUI/Components/FloatingLabelTextField.swift` indicates a reusable input component used by auth or profile forms.

4. **Client feature modules**
   - `Features/Auth` handles sign-in/authentication UI and state.
   - `Features/Dashboard` contains the tenant dashboard and its view model, likely aggregating current lease, next payment, and maintenance status.
   - `Features/Listings` handles property browsing/listing views.
   - `Features/Payments` handles payment history or upcoming payments.
   - `Features/Maintenance` handles maintenance request creation and request lists.
   - `Features/Profile` contains user account/profile display.

5. **Client data and state layer**
   - `Core/Models/Models.swift` contains shared data structures used by the SwiftUI screens and API decoding.
   - `Core/Models/Database.swift` likely abstracts local database/configuration concerns, but the repo strongly suggests the client primarily consumes backend data rather than owning its own database.
   - Each feature has a corresponding `ViewModel`, which is the main state boundary between network/data and the SwiftUI view.

6. **Client-to-backend communication**
   - `Core/Services/APIService.swift` is the integration point to the backend API.
   - The README explicitly says the app targets an API URL such as `http://localhost:5050/api`, so the mobile app depends on a configurable base URL.
   - This service layer is the key architectural seam: UI/ViewModels call into APIService, which exchanges JSON with the backend.

7. **Backend service boundary**
   - The backend is under `backend/` and uses **Express** (`server.js`) as the HTTP layer.
   - Prisma is the persistence abstraction in `backend/prisma/schema.prisma`, with `seed.js` for initial data loading.
   - The backend is therefore the system of record for users, properties, listings, leases, payments, and maintenance requests.

8. **Data model and seeded domain**
   - The CSV files at the repo root map directly to the business entities:
     - users,
     - properties,
     - property listings,
     - lease agreements,
     - payments,
     - maintenance requests.
   - The seed process imports these datasets into the database, which means the repo is designed to come up with realistic tenant/property data immediately after schema push + seed.

9. **Role-based access and business flows**
   - The README calls out RBAC for Owners and tenants, so the backend likely controls access to owner/admin versus tenant views.
   - The most important cross-cutting flows are:
     - login/authentication,
     - dashboard aggregation,
     - property/listing browsing,
     - payment retrieval,
     - maintenance request retrieval/submission.
   - These are domain flows rather than isolated screens, and they likely converge on the same API and database tables.

10. **Database strategy**
   - Default persistence is **SQLite** via `DATABASE_URL="file:./dev.db"`, minimizing setup for local development.
   - The same Prisma schema can target **MySQL** when pointed at a MySQL connection string, which makes the backend portable across environments.
   - That means the persistence boundary is Prisma-first, with the database engine swappable underneath.

11. **Startup and deployment model**
   - Backend startup is `npm run dev` from `backend/`, with schema provisioning done by `prisma db push` and seeding by `prisma db seed`.
   - The iOS app is launched separately from Xcode via `Estatesync.xcodeproj`.
   - This is a loosely coupled local-dev architecture: mobile client and API run as separate processes, linked only by HTTP.

12. **Repo layout note**
   - There are two similarly named app trees: `Estatesync/Estate-sync/...` and `PropManage/PropManage/...`.
   - They appear to contain the same SwiftUI feature structure, suggesting either a duplicated copy, an in-progress refactor, or a legacy/current app layout.
   - For diagramming, treat them as the same client architecture unless the project intentionally uses both.

13. **Best diagram boundaries**
   - Draw three main boxes:
     - **iOS SwiftUI app**: Views, ViewModels, shared UI, APIService, models.
     - **Express/Prisma backend**: API server, business logic, auth/RBAC, seed/schema.
     - **Database**: SQLite default or MySQL optional.
   - Show CSV seed files feeding only the backend database initialization path, not the iOS client.

Main entry points: [`backend/prisma/seed.js`](https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/prisma/seed.js) (Seed script), [`Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Navigation/MainTabView.swift`](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Navigation/MainTabView.swift) (Main tabs), [`Estatesync/Estate-sync/PropManage/PropManage/Core/Services/APIService.swift`](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Services/APIService.swift) (API service), [`Estatesync/Estate-sync/PropManage/PropManage/Core/Extensions/AppColors.swift`](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Extensions/AppColors.swift) (Theme)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["iOS SwiftUI app"]
  node_estatesync_app["App entry<br/>SwiftUI app"]
  node_content_view["Root view<br/>SwiftUI root<br/>[ContentView.swift]"]
  node_main_tab["Main tabs<br/>navigation shell<br/>[MainTabView.swift]"]
  node_api_service["API service<br/>network client<br/>[APIService.swift]"]
  node_models["Models<br/>shared data<br/>[Models.swift]"]
  node_ui_theme["Theme<br/>ui tokens<br/>[AppColors.swift]"]
  node_auth_vm["Auth VM<br/>view model"]
  node_auth_view["Sign in<br/>screen<br/>[AuthView.swift]"]
  node_dashboard_vm["Dashboard VM<br/>view model"]
  node_dashboard_view["Dashboard<br/>screen"]
  node_listings_vm["Listings VM<br/>view model"]
  node_listings_view["Listings<br/>screen"]
  node_payments_vm["Payments VM<br/>view model"]
  node_payments_view["Payments<br/>screen<br/>[PaymentsView.swift]"]
  node_maintenance_vm["Maintenance VM<br/>view model"]
  node_maintenance_view["Requests<br/>screen<br/>[RequestsView.swift]"]
  node_profile_view["Profile<br/>screen<br/>[ProfileView.swift]"]
  node_floating_input["Input field<br/>shared control"]
end

subgraph group_backend["Node API"]
  node_server["Express API<br/>http server<br/>[server.js]"]
  node_prisma_schema["Prisma schema<br/>data schema<br/>[schema.prisma]"]
  node_seed_script["Seed script<br/>data loader<br/>[seed.js]"]
  node_database[("Database<br/>sqlite/mysql")]
end

subgraph group_data["Seed data"]
  node_users_csv["Users CSV<br/>seed input<br/>[01_users.csv]"]
  node_properties_csv["Properties CSV<br/>seed input<br/>[02_properties.csv]"]
  node_listings_csv["Listings CSV<br/>seed input"]
  node_leases_csv["Leases CSV<br/>seed input"]
  node_payments_csv["Payments CSV<br/>seed input<br/>[05_payments.csv]"]
  node_requests_csv["Requests CSV<br/>seed input"]
end

node_estatesync_app -->|"launches"| node_content_view
node_content_view -->|"hosts"| node_main_tab
node_main_tab -->|"routes to"| node_auth_view
node_main_tab -->|"routes to"| node_dashboard_view
node_main_tab -->|"routes to"| node_listings_view
node_main_tab -->|"routes to"| node_payments_view
node_main_tab -->|"routes to"| node_maintenance_view
node_main_tab -->|"routes to"| node_profile_view
node_auth_view -->|"binds"| node_auth_vm
node_dashboard_view -->|"binds"| node_dashboard_vm
node_listings_view -->|"binds"| node_listings_vm
node_payments_view -->|"binds"| node_payments_vm
node_maintenance_view -->|"binds"| node_maintenance_vm
node_auth_vm -->|"uses"| node_api_service
node_dashboard_vm -->|"uses"| node_api_service
node_listings_vm -->|"uses"| node_api_service
node_payments_vm -->|"uses"| node_api_service
node_maintenance_vm -->|"uses"| node_api_service
node_api_service -->|"HTTP JSON"| node_server
node_server -->|"persists via"| node_prisma_schema
node_prisma_schema -->|"targets"| node_database
node_seed_script -->|"aligns with"| node_prisma_schema
node_seed_script -->|"loads"| node_database
node_users_csv -->|"feeds"| node_seed_script
node_properties_csv -->|"feeds"| node_seed_script
node_listings_csv -->|"feeds"| node_seed_script
node_leases_csv -->|"feeds"| node_seed_script
node_payments_csv -->|"feeds"| node_seed_script
node_requests_csv -->|"feeds"| node_seed_script
node_auth_view -->|"reuses"| node_floating_input
node_ui_theme -->|"styles"| node_auth_view
node_ui_theme -->|"styles"| node_dashboard_view
node_ui_theme -->|"styles"| node_listings_view
node_ui_theme -->|"styles"| node_payments_view
node_ui_theme -->|"styles"| node_maintenance_view
node_ui_theme -->|"styles"| node_profile_view
node_models -->|"shapes data"| node_api_service

click node_estatesync_app "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/EstatesyncApp.swift"
click node_content_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/ContentView.swift"
click node_main_tab "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Navigation/MainTabView.swift"
click node_api_service "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Services/APIService.swift"
click node_models "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Models/Models.swift"
click node_ui_theme "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Extensions/AppColors.swift"
click node_auth_vm "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthViewModel.swift"
click node_auth_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthView.swift"
click node_dashboard_vm "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/DashboardViewModel.swift"
click node_dashboard_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/TenantDashboard.swift"
click node_listings_vm "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyViewModel.swift"
click node_listings_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyListView.swift"
click node_payments_vm "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentViewModel.swift"
click node_payments_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentsView.swift"
click node_maintenance_vm "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/MaintenanceViewModel.swift"
click node_maintenance_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/RequestsView.swift"
click node_profile_view "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Profile/ProfileView.swift"
click node_floating_input "https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Components/FloatingLabelTextField.swift"
click node_server "https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/server.js"
click node_prisma_schema "https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/prisma/schema.prisma"
click node_seed_script "https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/prisma/seed.js"
click node_users_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/01_users.csv"
click node_properties_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/02_properties.csv"
click node_listings_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/03_property_listings.csv"
click node_leases_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/04_lease_agreements.csv"
click node_payments_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/05_payments.csv"
click node_requests_csv "https://github.com/abhi5515521c/estatesync_ios/blob/main/06_maintenance_requests.csv"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_estatesync_app,node_content_view,node_main_tab,node_api_service,node_models,node_ui_theme,node_auth_vm,node_auth_view,node_dashboard_vm,node_dashboard_view,node_listings_vm,node_listings_view,node_payments_vm,node_payments_view,node_maintenance_vm,node_maintenance_view,node_profile_view,node_floating_input toneBlue
class node_server,node_prisma_schema,node_seed_script,node_database toneAmber
class node_users_csv,node_properties_csv,node_listings_csv,node_leases_csv,node_payments_csv,node_requests_csv toneMint
```

## Components

### iOS SwiftUI app

Native SwiftUI client organized by shared core, feature modules, and reusable UI.

- [App entry](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/EstatesyncApp.swift): SwiftUI app · Launches the iOS application. · `Estatesync/Estate-sync/EstatesyncApp.swift`
- [Root view](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/ContentView.swift): SwiftUI root · Top-level app content container. · `Estatesync/Estate-sync/ContentView.swift`
- [Main tabs](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Navigation/MainTabView.swift): navigation shell · Primary tab-based navigation across app sections. · `Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Navigation/MainTabView.swift`
- [API service](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Services/APIService.swift): network client · Shared HTTP boundary to the backend API. · `Estatesync/Estate-sync/PropManage/PropManage/Core/Services/APIService.swift`
- [Models](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Models/Models.swift): shared data · App-wide data structures used by views and decoding. · `Estatesync/Estate-sync/PropManage/PropManage/Core/Models/Models.swift`
- [Theme](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Core/Extensions/AppColors.swift): ui tokens · Shared colors and fonts for the client. · `Estatesync/Estate-sync/PropManage/PropManage/Core/Extensions/AppColors.swift`
- [Auth VM](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthViewModel.swift): view model · Authentication state and login flow logic. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthViewModel.swift`
- [Sign in](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthView.swift): screen · Authentication screen. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Auth/AuthView.swift`
- [Dashboard VM](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/DashboardViewModel.swift): view model · Aggregates tenant dashboard data. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/DashboardViewModel.swift`
- [Dashboard](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/TenantDashboard.swift): screen · Tenant dashboard screen. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Dashboard/TenantDashboard.swift`
- [Listings VM](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyViewModel.swift): view model · Property browsing state and data loading. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyViewModel.swift`
- [Listings](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyListView.swift): screen · Property listing browser. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Listings/PropertyListView.swift`
- [Payments VM](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentViewModel.swift): view model · Payment history and upcoming payment logic. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentViewModel.swift`
- [Payments](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentsView.swift): screen · Payments screen. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Payments/PaymentsView.swift`
- [Maintenance VM](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/MaintenanceViewModel.swift): view model · Maintenance request state and submission logic. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/MaintenanceViewModel.swift`
- [Requests](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/RequestsView.swift): screen · Maintenance requests screen. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Maintenance/RequestsView.swift`
- [Profile](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/Features/Profile/ProfileView.swift): screen · User account and profile screen. · `Estatesync/Estate-sync/PropManage/PropManage/Features/Profile/ProfileView.swift`
- [Input field](https://github.com/abhi5515521c/estatesync_ios/blob/main/Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Components/FloatingLabelTextField.swift): shared control · Reusable labeled text field component. · `Estatesync/Estate-sync/PropManage/PropManage/SharedUI/Components/FloatingLabelTextField.swift`

### Node API

Express server with Prisma-backed domain data and seed pipeline.

- [Express API](https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/server.js): http server · Backend HTTP entry point. · `backend/server.js`
- [Prisma schema](https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/prisma/schema.prisma): data schema · Database schema and ORM contract. · `backend/prisma/schema.prisma`
- [Seed script](https://github.com/abhi5515521c/estatesync_ios/blob/main/backend/prisma/seed.js): data loader · Loads initial domain data into the database. · `backend/prisma/seed.js`
- **Database**: sqlite/mysql · Persistence layer, defaulting to SQLite and optionally MySQL.

### Seed data

CSV inputs used to populate the backend database.

- [Users CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/01_users.csv): seed input · Seed source for users. · `01_users.csv`
- [Properties CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/02_properties.csv): seed input · Seed source for properties. · `02_properties.csv`
- [Listings CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/03_property_listings.csv): seed input · Seed source for property listings. · `03_property_listings.csv`
- [Leases CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/04_lease_agreements.csv): seed input · Seed source for lease agreements. · `04_lease_agreements.csv`
- [Payments CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/05_payments.csv): seed input · Seed source for payments. · `05_payments.csv`
- [Requests CSV](https://github.com/abhi5515521c/estatesync_ios/blob/main/06_maintenance_requests.csv): seed input · Seed source for maintenance requests. · `06_maintenance_requests.csv`

## Connections

- App entry → Root view: launches · App entry presents the root content view.
- Root view → Main tabs: hosts · Root content is organized by the main tab shell.
- Main tabs → Sign in: routes to · Navigation includes authentication.
- Main tabs → Dashboard: routes to · Navigation includes the dashboard.
- Main tabs → Listings: routes to · Navigation includes property browsing.
- Main tabs → Payments: routes to · Navigation includes payments.
- Main tabs → Requests: routes to · Navigation includes maintenance requests.
- Main tabs → Profile: routes to · Navigation includes user profile.
- Sign in → Auth VM: binds · Authentication UI is driven by its view model.
- Dashboard → Dashboard VM: binds · Dashboard screen is driven by its view model.
- Listings → Listings VM: binds · Listings screen is driven by its view model.
- Payments → Payments VM: binds · Payments screen is driven by its view model.
- Requests → Maintenance VM: binds · Maintenance screen is driven by its view model.
- Auth VM → API service: uses · View models call into the shared API service.
- Dashboard VM → API service: uses · View models call into the shared API service.
- Listings VM → API service: uses · View models call into the shared API service.
- Payments VM → API service: uses · View models call into the shared API service.
- Maintenance VM → API service: uses · View models call into the shared API service.
- API service → Express API: HTTP JSON · Client communicates with the backend API over HTTP.
- Express API → Prisma schema: persists via · Backend uses Prisma as its persistence contract.
- Prisma schema → Database: targets · Prisma schema can target SQLite or MySQL.
- Seed script → Prisma schema: aligns with · Seed data follows the schema shape.
- Seed script → Database: loads · Seed script populates the database.
- Users CSV → Seed script: feeds · Users data is imported during seeding.
- Properties CSV → Seed script: feeds · Properties data is imported during seeding.
- Listings CSV → Seed script: feeds · Listings data is imported during seeding.
- Leases CSV → Seed script: feeds · Lease data is imported during seeding.
- Payments CSV → Seed script: feeds · Payments data is imported during seeding.
- Requests CSV → Seed script: feeds · Maintenance data is imported during seeding.
- Sign in → Input field: reuses · Shared input control supports form entry.
- Theme → Sign in: styles · Shared tokens inform client presentation.
- Theme → Dashboard: styles · Shared tokens inform client presentation.
- Theme → Listings: styles · Shared tokens inform client presentation.
- Theme → Payments: styles · Shared tokens inform client presentation.
- Theme → Requests: styles · Shared tokens inform client presentation.
- Theme → Profile: styles · Shared tokens inform client presentation.
- Models → API service: shapes data · Shared models support request and response decoding.
