Technical Documentation & User Guide
Easy Task is your personal assistant for managing deadlines, meetings, and invoices. It helps you stay organized with visual countdowns and professional tools.
The app follows the Model-View-ViewModel pattern using SwiftUI.
Deadline, Invoice).
HomeView,
InvoiceDetailView).
DeadlineManager, InvoiceManager).Local (UserDefaults) Used for Invoices and Deadlines. Simple JSON encoding.
Cloud (Firebase) Used for User Profiles and Premium Subscription status.
private func saveInvoices() {
invoices.sort { $0.createdAt > $1.createdAt }
if let encoded = try? JSONEncoder().encode(invoices) {
UserDefaults.standard.set(encoded, forKey: userDefaultsKey)
}
}
func saveUserToFirestore(_ user: User) async throws {
let userDict = user.toDictionary()
try await db.collection("users").document(user.id).setData(userDict, merge: true)
}
Prevents users from scheduling two tasks at the same time.
func checkForOverlap(startDate: Date, duration: TimeInterval) -> Bool {
let newEnd = startDate.addingTimeInterval(duration)
for deadline in deadlines {
// Checking intersection: (StartA < EndB) && (EndA > StartB)
let taskEnd = deadline.date.addingTimeInterval(deadline.duration)
if startDate < taskEnd && newEnd > deadline.date {
return true
}
}
return false
}
Uses `UIGraphicsPDFRenderer` to draw invoices programmatically.
let renderer = UIGraphicsPDFRenderer(bounds: pageRect, format: format)
let data = renderer.pdfData { (context) in
context.beginPage()
// Drawing Title
"FACTURE".draw(at: CGPoint(x: 40, y: 40), withAttributes: titleAttributes)
// Drawing Items...
}
Do you want support getting started with the assistant?
Do you have an app idea and want to discuss it?
Do you want to learn how to build iOS mobile apps?
Contact me via this contact form:
https://yann-dipita.com/#contact
Discover the behind-the-scenes of creating Easy Task. A challenge: 1 Month to set up your assistant.