How aitullalimon/workinghoursapp works
WorkingHoursApp is an iOS time-and-earnings tracker. Users manage companies and their billing rates, record or edit company-specific work entries, then review cross-company time lists, billing-cycle or custom-range invoice totals, and monthly summaries. Invoice summaries can create due or withdrawn payment records, which appear in the Payments tab. The shared DataStore connects the SwiftUI screens and is documented as persisting through UserDefaults. Models.swift was not sampled, so its detailed implementation and persistence wiring are represented only at the level supported by the README and view references.
Main entry points: Models.swift Shared data store · ContentView.swift Tab navigation · CompanyListView.swift Company list · CompanyDetailView.swift Company detail
Components 16
App navigation
- App entry
WorkingHoursAppApp.swift - Tab navigation
ContentView.swift
Company management
- Company list
CompanyListView.swift - Add company
AddCompanyView.swift - Company detail
CompanyDetailView.swift
Time tracking
- Time entry list
TimeEntryListView.swift - Add time entry
AddTimeEntryView.swift - Edit time entry
EditTimeEntryView.swift - Domain models
Models.swift - Shared data store
Models.swift
Earnings and payments
- Invoice filters
InvoiceView.swift - Invoice totals
InvoiceSummaryView.swift - Monthly summary
MonthlySummaryView.swift - Payment records
PaymentView.swift
Other components
- App user
- UserDefaults
Connections 25
- App user → App entry: launches
- App entry → Tab navigation: shows
- App entry → Shared data store: creates and injects
- Tab navigation → Company list: shows tab
- Tab navigation → Time entry list: shows tab
- Tab navigation → Invoice filters: shows tab
- Tab navigation → Monthly summary: shows tab
- Tab navigation → Payment records: shows tab
- Company list → Add company: opens
- Company list → Company detail: opens
- Company list → Shared data store: reads and deletes
- Add company → Shared data store: adds company
- Company detail → Shared data store: reads and deletes entries
- Company detail → Add time entry: opens
- Company detail → Edit time entry: opens
- Add time entry → Shared data store: adds entry
- Edit time entry → Shared data store: updates or deletes entry
- Time entry list → Shared data store: reads and deletes entries
- Invoice filters → Shared data store: reads companies
- Invoice filters → Invoice totals: passes company and period
- Invoice totals → Shared data store: reads entries; adds payment record
- Monthly summary → Shared data store: reads companies and entries
- Payment records → Shared data store: reads and deletes records
- Shared data store → Domain models: uses domain types
- Shared data store → UserDefaults: persists data