Skip to content

blueman82/laundry-timer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laundry Timer

An iOS app to calculate the correct "Ending In" setting for your washer or dryer based on your desired start time and cycle length.

Overview

This app helps you determine what time setting to use on your washer or dryer's delay start feature. Simply enter your cycle length and desired start time, and the app calculates the "Ending In" hours setting you need to configure on your appliance.

Features

  • Real-time Clock: Automatically displays current time in 24-hour format
  • Device Selection: Choose between Washer (3hr base) and Dryer (4hr base)
  • Cycle Length Input: Set your specific cycle duration (hours and minutes)
  • Desired Start Time: Pick when you want the cycle to start
  • Smart Calculation: Automatically calculates the correct "Ending In" setting
  • Push Notifications: Receive a reminder when it's time to start your cycle

Requirements

  • iOS 17.0 or later
  • Xcode 15.0 or later
  • Swift 5.9 or later

Installation

Option 1: Build and Run with Xcode

  1. Open LaundryTimer.xcodeproj in Xcode
  2. Select your development team in the project settings:
    • Select the project in the navigator
    • Go to "Signing & Capabilities"
    • Choose your team from the dropdown
  3. Connect your iPhone or iPad
  4. Select your device from the device menu
  5. Click Run (⌘R)

Option 2: TestFlight Distribution

  1. Archive the app in Xcode (Product → Archive)
  2. Upload to App Store Connect
  3. Add internal testers (you and your wife)
  4. Install via TestFlight app on your devices

Option 3: Direct Install (Sideloading)

  1. Build for your device
  2. Export the IPA file
  3. Use Apple Configurator or similar tool to install

Usage

  1. Launch the app - Current time displays automatically
  2. Select Device - Choose "Washer" or "Dryer"
  3. Set Cycle Length - Tap to open picker and select hours and minutes
  4. Set Desired Start Time - Choose when you want the cycle to start
  5. Tap CALCULATE - Get your result
  6. Set your appliance - Use the displayed "Ending In" hours setting

Example

Current Time: 20:53
Device: Washer
Cycle Length: 2 h 16 m
Desired Start Time: 00:00

Result: Washer — Set to Ending In 6 hours

This means you should set your washer's "Ending In" timer to 6 hours.

Device Rules

Washer

  • Minimum: 3 hours
  • Increment: 1 hour
  • Valid values: 3, 4, 5, 6, 7, 8, ...

Dryer

  • Minimum: 4 hours
  • Increment: 1 hour
  • Valid values: 4, 5, 6, 7, 8, ...

Calculation Logic

The app performs these calculations:

  1. Finish Time = Desired Start Time + Cycle Length
  2. Hours Until Finish = Finish Time - Current Time (adds 24h if negative)
  3. Ending In = Round up to nearest hour, minimum based on device

Architecture

The app follows a clean SwiftUI + MVVM architecture:

LaundryTimer/
├── LaundryTimerApp.swift      # App entry point
├── ContentView.swift           # Main UI
├── Models/
│   ├── DeviceRule.swift       # Device configuration
│   └── LaundryConfig.swift    # App state model
├── ViewModels/
│   └── LaundryViewModel.swift # Business logic
└── Managers/
    └── NotificationManager.swift # Push notifications

Permissions

The app requests the following permission on first launch:

  • Notifications: To send you a reminder when it's time to start your cycle

Privacy

This app:

  • Does NOT collect any data
  • Does NOT connect to the internet
  • Does NOT share information with third parties
  • Stores NO data (everything is in-memory only)
  • Requires NO account or login

Troubleshooting

Notifications Not Working

  1. Check Settings → LaundryTimer → Notifications
  2. Ensure notifications are enabled
  3. Restart the app and grant permission again

Wrong Bundle Identifier

If you get signing errors:

  1. Open project settings
  2. Change Bundle Identifier to something unique (e.g., com.yourname.LaundryTimer)
  3. Select your development team

Build Errors

  • Ensure you're using Xcode 15.0+
  • Ensure deployment target is iOS 17.0+
  • Clean build folder (⌘⇧K) and rebuild

Future Enhancements

Potential features to add:

  • Multiple saved presets for common cycles
  • History of past calculations
  • Support for different increment patterns
  • Dark mode customization
  • Widget support

Test Cases

Current Time Device Cycle Length Desired Start Expected Output
20:53 Washer 2:16 00:00 Set to Ending In 6 hours
20:53 Dryer 3:44 00:00 Set to Ending In 7 hours
22:00 Washer 2:16 00:00 Set to Ending In 5 hours
22:00 Dryer 3:44 00:00 Set to Ending In 6 hours

License

Private use only. Not for distribution.

Support

For issues or questions, contact the developer directly.


Built with SwiftUI for iOS 17+

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages