Remove docs, guides, and readmes relocated to old_files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-07 07:09:37 -06:00
parent d3b6b14e78
commit 8941d4f458
33 changed files with 0 additions and 9885 deletions

View File

@@ -1,276 +0,0 @@
# Android Subscription & Upgrade UI Parity Plan
## Goal
Bring Android subscription/upgrade functionality and UX to match iOS implementation:
1. Show full inline paywall (not teaser + dialog)
2. Implement Google Play Billing integration
3. Disable FAB when upgrade screen is showing
## Current State
### iOS (Reference)
- `UpgradeFeatureView` shows full inline paywall with:
- Promo content card with feature bullets
- Subscription product buttons with real pricing
- Purchase flow via StoreKit 2
- "Compare Free vs Pro" and "Restore Purchases" links
- Add button disabled/grayed when upgrade showing
- `StoreKitManager` fully implemented
### Android (Current)
- `UpgradeFeatureScreen` shows simple teaser → opens `UpgradePromptDialog`
- FAB always enabled
- `BillingManager` is a stub (no real billing)
- No Google Play Billing dependency
---
## Implementation Plan
### Phase 1: Add Google Play Billing Dependency
**Files to modify:**
- `gradle/libs.versions.toml` - Add billing library version
- `composeApp/build.gradle.kts` - Add dependency to androidMain
```toml
# libs.versions.toml
billing = "7.1.1"
[libraries]
google-billing = { module = "com.android.billingclient:billing-ktx", version.ref = "billing" }
```
```kotlin
# build.gradle.kts - androidMain.dependencies
implementation(libs.google.billing)
```
---
### Phase 2: Implement BillingManager
**File:** `composeApp/src/androidMain/kotlin/com/example/honeydue/platform/BillingManager.kt`
Replace stub implementation with full Google Play Billing:
```kotlin
class BillingManager private constructor(private val context: Context) {
// Product IDs (match Google Play Console)
private val productIDs = listOf(
"com.tt.honeyDue.pro.monthly",
"com.tt.honeyDue.pro.annual"
)
// BillingClient instance
private var billingClient: BillingClient
// StateFlows for UI
val products = MutableStateFlow<List<ProductDetails>>(emptyList())
val purchasedProductIDs = MutableStateFlow<Set<String>>(emptySet())
val isLoading = MutableStateFlow(false)
val purchaseError = MutableStateFlow<String?>(null)
// Key methods to implement:
- startConnection() - Connect to Google Play
- loadProducts() - Query subscription products
- purchase(activity, productDetails) - Launch purchase flow
- restorePurchases() - Query purchase history
- verifyPurchaseWithBackend() - Call SubscriptionApi.verifyAndroidPurchase()
- acknowledgePurchase() - Required by Google
- listenForPurchases() - PurchasesUpdatedListener
```
**Key implementation details:**
1. Initialize BillingClient with PurchasesUpdatedListener
2. Handle billing connection state (retry on disconnect)
3. Query products using QueryProductDetailsParams with ProductType.SUBS
4. Launch purchase flow with BillingFlowParams
5. Process purchase results and verify with backend
6. Acknowledge purchases (required or they refund after 3 days)
7. Update SubscriptionCache after successful verification
---
### Phase 3: Update UpgradeFeatureScreen
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/subscription/UpgradeFeatureScreen.kt`
Transform from teaser+dialog to full inline paywall matching iOS:
**Current structure:**
- Icon, title, message, badge
- Button opens UpgradePromptDialog
**New structure:**
```kotlin
@Composable
fun UpgradeFeatureScreen(
triggerKey: String,
icon: ImageVector,
onNavigateBack: () -> Unit,
billingManager: BillingManager? = null // Android-only, null on other platforms
) {
// ScrollView with:
// 1. Star icon (accent gradient)
// 2. Title + message from triggerData
// 3. PromoContentCard - feature bullets from triggerData.promoHtml
// 4. SubscriptionProductButtons - show real products with pricing
// 5. "Compare Free vs Pro" button
// 6. "Restore Purchases" button
// 7. Error display if any
}
```
**New components to add:**
- `PromoContentCard` - Parse and display promo HTML as composable
- `SubscriptionProductButton` - Display product with name, price, optional savings badge
---
### Phase 4: Create Android-Specific Product Display
**File:** `composeApp/src/androidMain/kotlin/com/example/honeydue/ui/subscription/SubscriptionProductButton.kt`
```kotlin
@Composable
fun SubscriptionProductButton(
productDetails: ProductDetails,
isSelected: Boolean,
isProcessing: Boolean,
onSelect: () -> Unit
) {
// Display:
// - Product name (e.g., "HoneyDue Pro Monthly")
// - Price from subscriptionOfferDetails
// - "Save X%" badge for annual
// - Loading indicator when processing
}
```
**Helper function for savings calculation:**
```kotlin
fun calculateAnnualSavings(monthly: ProductDetails, annual: ProductDetails): Int?
```
---
### Phase 5: Disable FAB When Upgrade Showing
**Files to modify:**
- `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/ContractorsScreen.kt`
- `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/DocumentsScreen.kt`
**Changes:**
```kotlin
// In ContractorsScreen
val shouldShowUpgradePrompt = SubscriptionHelper.shouldShowUpgradePromptForContractors().allowed
// Update FAB
FloatingActionButton(
onClick = { if (!shouldShowUpgradePrompt) showAddDialog = true },
containerColor = if (shouldShowUpgradePrompt)
MaterialTheme.colorScheme.onSurface.copy(alpha = 0.3f)
else
MaterialTheme.colorScheme.primary,
contentColor = if (shouldShowUpgradePrompt)
MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f)
else
MaterialTheme.colorScheme.onPrimary
) {
Icon(Icons.Default.Add, "Add contractor")
}
// Add .alpha() modifier or enabled state
```
Same pattern for DocumentsScreen.
---
### Phase 6: Initialize BillingManager in MainActivity
**File:** `composeApp/src/androidMain/kotlin/com/example/honeydue/MainActivity.kt`
```kotlin
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Existing initializations...
TokenStorage.initialize(...)
ThemeStorage.initialize(...)
ThemeManager.initialize()
// Add BillingManager initialization
val billingManager = BillingManager.getInstance(applicationContext)
billingManager.startConnection(
onSuccess = { billingManager.loadProducts() },
onError = { error -> Log.e("Billing", "Connection failed: $error") }
)
setContent {
// Pass billingManager to composables that need it
App(billingManager = billingManager)
}
}
```
---
### Phase 7: Wire Purchase Flow End-to-End
**Integration points:**
1. **UpgradeFeatureScreen** observes BillingManager.products StateFlow
2. User taps product → calls BillingManager.purchase(activity, productDetails)
3. **BillingManager** launches Google Play purchase UI
4. On success → calls SubscriptionApi.verifyAndroidPurchase()
5. Backend verifies with Google → updates user's subscription tier
6. **BillingManager** calls SubscriptionApi.getSubscriptionStatus()
7. Updates **SubscriptionCache** with new status
8. UI recomposes, upgrade screen disappears, FAB becomes enabled
---
## Files Summary
| File | Action |
|------|--------|
| `gradle/libs.versions.toml` | Add billing version |
| `composeApp/build.gradle.kts` | Add billing dependency |
| `BillingManager.kt` | Full rewrite with real billing |
| `UpgradeFeatureScreen.kt` | Transform to inline paywall |
| `ContractorsScreen.kt` | Disable FAB when upgrade showing |
| `DocumentsScreen.kt` | Disable FAB when upgrade showing |
| `MainActivity.kt` | Initialize BillingManager |
---
## Reference Files (iOS Implementation)
These files show the iOS implementation to mirror:
- `iosApp/iosApp/Subscription/StoreKitManager.swift` - Full billing manager
- `iosApp/iosApp/Subscription/UpgradeFeatureView.swift` - Inline paywall UI
- `iosApp/iosApp/Subscription/UpgradePromptView.swift` - PromoContentView, SubscriptionProductButton
---
## Testing Checklist
- [ ] Products load from Google Play Console
- [ ] Purchase flow launches correctly
- [ ] Purchase verification with backend works
- [ ] SubscriptionCache updates after purchase
- [ ] FAB disabled when upgrade prompt showing
- [ ] FAB enabled after successful purchase
- [ ] Restore purchases works
- [ ] Error states display correctly
---
## Notes
- Product IDs must match Google Play Console: `com.tt.honeyDue.pro.monthly`, `com.tt.honeyDue.pro.annual`
- Backend endpoint `POST /subscription/verify-android/` already exists in SubscriptionApi
- Testing requires Google Play Console setup with test products
- Use Google's test cards for sandbox testing

View File

@@ -1,89 +0,0 @@
# Onboarding Statistics Sources
This document provides citations for the statistics used in the honeyDue iOS onboarding screens.
## Statistics Used in the App
### 1. "$6,000+ spent yearly on repairs that could've been prevented"
**Sources:**
- [Real Estate Witch Survey](https://www.realestatewitch.com/) - Homeowners spend an average of $6,087 every year on unexpected fixes
- [CNBC / Hippo Insurance Report](https://www.cnbc.com/2023/01/05/homeowners-spent-up-to-6000-average-on-repairs-maintenance-in-2022.html) - In 2022, homeowners spent an average of $6,000 on maintenance and repairs
- [Hippo Insurance Report](https://news.nationwide.com/homeowners-putting-off-home-upkeep-risking-damage/) - 65% of respondents who had something go wrong said they could have prevented it with proactive maintenance
---
### 2. "46% of homeowners spent $5,000+ on surprise repairs"
**Source:** Hippo Insurance / Bluefield Group Report (2024)
- [Average Homeowner Spent Over $5000 On Repairs In 2024](https://www.bluefieldgroup.com/blog/average-homeowner-spent-over-5000-on-repairs-in-2024/)
**Key Findings:**
- Almost half (46%) of surveyed homeowners reported spending more than $5,000 on unexpected home repairs in 2024
- This was a 10% increase from 2023 (36%)
- 83% of homeowners faced unexpected issues in 2024—nearly double the 46% reported in 2023
---
### 3. "47% of homebuyers lack emergency funds for repairs"
**Source:** Self Storage / Moving.com Survey
- [SURVEY: Nearly Half of Homebuyers Lack Emergency Savings for Home Costs](https://moving.selfstorage.com/cost-of-owning-a-home/)
**Key Findings:**
- 47% of American homebuyers lack an emergency fund to cover unexpected homeownership costs
- Only 21% of Americans feel very prepared for unexpected homeownership costs
- Over 1 in 3 panic when a home maintenance issue occurs due to lack of funds
---
### 4. "56% say sharing chores is key to a happy home"
**Source:** Pew Research Center (Religious Landscape Study)
- [Sharing chores a key to good marriage, say majority of married adults](https://www.pewresearch.org/short-reads/2016/11/30/sharing-chores-a-key-to-good-marriage-say-majority-of-married-adults/)
**Key Finding:**
- More than half of married U.S. adults (56%) say sharing household chores is "very important" to a successful marriage
---
## Additional Statistics for Reference
These statistics were found during research and may be useful for future marketing materials:
### HVAC & Filter Maintenance
- **82%** of Americans fail to change their air filter monthly ([The Zebra Survey](https://www.thezebra.com/resources/research/air-filter-survey/))
- **29%** of Americans never change their air filter at all
- **85%** of HVAC repairs are related to lack of proper maintenance ([Design Comfort](https://www.designcomfortco.com/blog/hvac-services/studies-show-hvac-maintenance-pays-for-itself/))
- HVAC replacement costs average $5,000-$10,000+ vs $200-400/year for maintenance
- Homeowners can save **15%** on energy bills by keeping up with filter replacement (U.S. Department of Energy)
### Cost of Neglect Examples
- Roof: $300-800/year maintenance vs $15,000-40,000 replacement
- Water damage: Average repair cost of $2,386-$3,342
- Foundation repairs: Average $8,000-15,000
- Emergency repairs average **$1,200+** vs ~$100 for preventive maintenance
### Homeowner Behavior
- **60%** of homeowners delay routine maintenance due to cost ([FinanceBuzz](https://financebuzz.com/homeowner-maintenance-repairs-survey))
- **59%** have put off necessary repairs due to cost ([AHS](https://www.ahs.com/home-matters/homebuyer-hub-resources-and-guides/home-maintenance-issues-statistics/))
- **41%** have paid for major repairs they believe could have been avoided with better maintenance ([Nationwide](https://news.nationwide.com/homeowners-putting-off-home-upkeep-risking-damage/))
### Annual Spending Data
- Average homeowner spends **$3,018/year** on maintenance (Angi Survey)
- Average homeowner spends **$2,321/year** on emergency repairs (Angi)
- Zillow/Thumbtack estimate **$9,390/year** on total home-related expenses
- Recommended savings: **1-4%** of home value annually for maintenance
### Digital Organization Benefits
- Families using digital organization tools report **37% more** completed responsibilities ([Journal of Family Psychology, 2023](https://www.familydaily.app/blog/digital-chore-chart-systems))
- **42% decrease** in household-related conflicts with digital tools
---
## Notes
- Statistics gathered December 2024
- All percentages rounded for presentation
- Sources should be periodically reviewed for updates
- Consider adding app-specific statistics as user data becomes available

View File

@@ -1,191 +0,0 @@
# TODO Audit - Incomplete Functionality
This document tracks all incomplete functionality, TODOs, and missing features across the iOS and Android/Kotlin codebases.
**Last Updated:** December 3, 2024
---
## iOS (SwiftUI)
### 1. Push Notification Navigation
**File:** `iosApp/iosApp/PushNotifications/PushNotificationManager.swift`
Three TODO items related to deep-linking from push notifications:
```swift
// TODO: Navigate to specific residence
// TODO: Navigate to specific task
// TODO: Navigate to specific contractor
```
**Status:** Push notifications are received but tapping them doesn't navigate to the relevant screen.
**Priority:** Medium - Improves user experience when responding to notifications.
---
### 2. File/Document Download
**File:** `iosApp/iosApp/Documents/DocumentDetailView.swift`
```swift
// TODO: Implement file download functionality
```
**Status:** Document viewing is partially implemented, but users cannot download/save documents to their device.
**Priority:** Medium - Documents can be viewed but not saved locally.
---
### 3. Subscription Upgrade Flow
**File:** `iosApp/iosApp/Subscription/FeatureComparisonView.swift`
```swift
// TODO: Implement upgrade functionality
```
**Status:** Feature comparison UI exists but the actual upgrade/purchase flow is not connected.
**Priority:** High - Required for monetization.
---
### 4. Widget App Groups
**File:** `iosApp/TaskWidgetExample.swift`
```swift
// TODO: Implement App Groups or shared container for widget data access.
```
**Status:** Widget shell exists but cannot access shared app data. Widgets always show empty state.
**Priority:** Low - Widgets are a nice-to-have feature.
---
## Android/Kotlin (Compose Multiplatform)
### 1. Document Download
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/DocumentDetailScreen.kt`
```kotlin
// TODO: Download functionality
```
**Status:** Same as iOS - documents can be viewed but not downloaded.
**Priority:** Medium
---
### 2. Subscription Navigation from Residences
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/ResidencesScreen.kt`
```kotlin
// TODO: Navigate to subscription/upgrade screen
```
**Status:** When user hits residence limit, there's no navigation to the upgrade screen.
**Priority:** High - Blocks user from upgrading when hitting limits.
---
### 3. Subscription Navigation from Residence Detail
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/ResidenceDetailScreen.kt`
```kotlin
// TODO: Navigate to subscription screen
```
**Status:** Same issue - hitting task limit doesn't navigate to upgrade.
**Priority:** High
---
### 4. Profile Update Disabled
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/ProfileScreen.kt`
```kotlin
// Update profile button is disabled/not implemented
```
**Status:** Profile editing UI exists but the save/update functionality may be incomplete.
**Priority:** Medium - Users expect to be able to edit their profile.
---
### 5. Contractor Favorite Toggle
**File:** `composeApp/src/commonMain/kotlin/com/example/honeydue/ui/screens/ResidenceDetailScreen.kt`
```kotlin
// Contractor favorite toggle not fully implemented
```
**Status:** Favorite toggle button exists on contractor cards but may not persist correctly.
**Priority:** Low
---
### 6. Platform-Specific Image Pickers
**Files:**
- `composeApp/src/jvmMain/kotlin/ImagePicker.jvm.kt`
- `composeApp/src/wasmJsMain/kotlin/ImagePicker.wasmJs.kt`
- `composeApp/src/jsMain/kotlin/ImagePicker.js.kt`
```kotlin
// TODO: Implement for Desktop
// TODO: Implement for WASM
// TODO: Implement for JS
```
**Status:** Image picker only works on mobile (Android/iOS). Desktop and web targets show placeholder implementations.
**Priority:** Low - Mobile is primary target.
---
## Summary by Priority
### High Priority
1. Subscription navigation from ResidencesScreen (Android)
2. Subscription navigation from ResidenceDetailScreen (Android)
3. Subscription upgrade flow (iOS)
### Medium Priority
4. Push notification navigation (iOS)
5. Document download (iOS & Android)
6. Profile update functionality (Android)
### Low Priority
7. Contractor favorite toggle (Android)
8. Widget App Groups (iOS)
9. Platform-specific image pickers (Desktop/Web)
---
## Recommendations
1. **Subscription Flow (High):** Both platforms need proper navigation to upgrade screens when users hit feature limits. This is critical for monetization.
2. **Push Notification Deep Links (Medium):** iOS push notification taps should navigate to the relevant residence/task/contractor detail screen.
3. **Document Download (Medium):** Implement share sheet / file saving for both platforms.
4. **Profile Update (Medium):** Verify the profile update API call is connected and working.
5. **Low Priority Items:** Widget, desktop/web image pickers, and contractor favorites can be addressed in future iterations.

View File

@@ -1,125 +0,0 @@
## Weekly Tasks (10)
| # | Task | Category | Description |
|---|------|----------|-------------|
| 3 | Wipe kitchen counters | Cleaning | Clean countertops and stovetop after cooking |
| 5 | Take out trash | Cleaning | Empty full trash cans to prevent odors and pests |
| 6 | Vacuum floors | Cleaning | Vacuum all carpets and rugs, especially high-traffic areas |
| 7 | Mop hard floors | Cleaning | Mop tile, hardwood, and laminate floors |
| 8 | Clean bathrooms | Cleaning | Scrub toilets, sinks, showers, and mirrors |
| 9 | Change bed linens | Cleaning | Wash and replace sheets, pillowcases, and mattress covers |
| 10 | Do laundry | Cleaning | Wash, dry, fold, and put away clothes |
| 11 | Clean kitchen appliances | Cleaning | Wipe down microwave, dishwasher exterior, coffee maker |
| 12 | Dust surfaces | Cleaning | Dust furniture, shelves, and decorations |
| 13 | Clean out refrigerator | Cleaning | Discard expired food and wipe down shelves |
| 14 | Water indoor plants | Landscaping | Check soil moisture and water as needed |
| 15 | Check/charge security cameras | Safety | Ensure wireless cameras are functioning and charged |
Check and/or replace water heater anode rod
Test interior water shutoffs
Test gas shutoffs
Test water meter shutoff
Check water meter for leaks
Run drain cleaner
Clean vacuum
Clean microwave
Clean and reverse ceiling fans (fall/spring)
Clean floor registers
Clean toaster
Mop floors 1/2
Clean bathroom exhaust fans
Clean garbage disposal
Flush HVAC drain lines
Test smoke and carbon monoxide detectors
Clean return vents
Test water heater pressure relief valve
Clean ovens
Clean fridge compressor coils
Clean dishwasher food trap
Mop floors 2/2
Check fire extinguishers
Replace water filters
Clear HVAC drain lines
Check water meter for leaks
Clean HVAC compressor coils
Test water sensors
Schedule chimney cleaning
Test GFCIs
Schedule HVAC inspection and service
Replace fridge hose
Replace smoke and carbon monoxide detectors
Replace laundry hoses
---
## Monthly Tasks (10)
| # | Task | Category | Description |
|---|------|----------|-------------|
| 16 | Change HVAC filters | HVAC | Replace air conditioning/furnace filters for efficiency |
| 17 | Test smoke detectors | Safety | Press test button on all smoke and CO detectors |
| 18 | Clean garbage disposal | Appliances | Run ice cubes and lemon peels to clean and deodorize |
| 19 | Inspect for leaks | Plumbing | Check under sinks and around toilets for water damage |
| 20 | Clean vent hood filters | Appliances | Soak and scrub range hood filters to remove grease |
| 21 | Vacuum under furniture | Cleaning | Move furniture to vacuum underneath, especially beds |
| 22 | Clean inside trash cans | Cleaning | Wash and disinfect garbage and recycling bins |
| 23 | Inspect caulking | Plumbing | Check bathroom and kitchen caulk for cracks or mold |
| 24 | Weed garden beds | Landscaping | Remove weeds and prune plants as needed |
| 25 | Check tire pressure | Vehicle | Inspect vehicle tires and refill as needed |
---
## Quarterly Tasks (8)
| # | Task | Category | Description |
|---|------|----------|-------------|
| 26 | Deep clean oven | Appliances | Clean inside oven; remove baked-on grease and spills |
| 27 | Clean refrigerator coils | Appliances | Vacuum dust from condenser coils for efficiency |
| 28 | Test GFCI outlets | Electrical | Press test/reset buttons on bathroom and kitchen outlets |
| 29 | Flush water heater | Plumbing | Drain sediment from bottom of tank |
| 30 | Clean dishwasher | Appliances | Run empty cycle with cleaner; clean filter and door seals |
| 31 | Inspect fire extinguishers | Safety | Check pressure gauge and ensure accessibility |
| 32 | Clean window tracks | Cleaning | Remove dirt and debris from window and door tracks |
| 33 | Pest control treatment | Safety | Inspect for signs of pests; treat or call professional |
---
## Semi-Annual Tasks (7)
| # | Task | Category | Description |
|---|------|----------|-------------|
| 34 | Clean gutters | Exterior | Remove leaves and debris; check for proper drainage |
| 35 | HVAC professional service | HVAC | Have system inspected before heating/cooling seasons |
| 36 | Clean dryer vent | Appliances | Remove lint buildup to prevent fires (15,500 fires/year) |
| 37 | Wash windows | Exterior | Clean interior and exterior glass and screens |
| 38 | Inspect roof | Exterior | Look for missing shingles, damage, or debris |
| 39 | Deep clean carpets | Cleaning | Professional carpet cleaning or DIY steam clean |
| 40 | Replace batteries | Safety | Replace smoke/CO detector batteries (if not hardwired) |
---
## Annual Tasks (10)
| # | Task | Category | Description |
|---|------|----------|-------------|
| 41 | Chimney/fireplace inspection | Safety | Professional inspection before first use of season |
| 42 | Septic tank inspection | Plumbing | Have septic system inspected and pumped if needed |
| 43 | Termite inspection | Safety | Professional inspection for wood-destroying insects |
| 44 | Service garage door | Exterior | Lubricate springs, hinges, and rollers |
| 45 | Inspect weather stripping | Exterior | Check doors and windows; replace worn seals |
| 46 | Winterize outdoor faucets | Plumbing | Shut off water supply and drain lines before freeze |
| 47 | Pressure wash exterior | Exterior | Clean siding, driveway, sidewalks, and deck |
| 48 | Touch up exterior paint | Exterior | Address peeling or cracking paint to prevent moisture damage |
| 49 | Service sprinkler system | Landscaping | Inspect heads, adjust coverage, winterize if needed |
| 50 | Replace washing machine hoses | Appliances | Replace rubber hoses to prevent flooding |
## Sources
- [Care.com - Ultimate Household Chore List](https://www.care.com/c/ultimate-household-chore-list/)
- [Bungalow - Complete Household Chores List](https://bungalow.com/articles/the-complete-household-chores-list)
- [AHIT - Home Maintenance Checklist](https://www.ahit.com/home-inspection-career-guide/home-maintenance-checklist/)
- [Homebuyer.com - Home Maintenance Checklist](https://homebuyer.com/learn/home-maintenance-checklist)
- [Frontdoor - Home Maintenance Checklist](https://www.frontdoor.com/blog/handyman-tips/ultimate-home-maintenance-checklist)
- [Travelers Insurance - Monthly Home Maintenance](https://www.travelers.com/resources/home/maintenance/home-maintenance-checklist-10-easy-things-to-do-monthly)
- [American Family Insurance - Home Maintenance](https://www.amfam.com/resources/articles/at-home/home-maintenance-checklist)