peterfriese / MakeItSo

This is the source code for Make It So, the sample app accompanying my blog post "Replicating the iOS Reminders App Using SwiftUI and Firebase"

Home Page:https://twitter.com/peterfriese/status/1453467058302291975

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FR: Implement lists

peterfriese opened this issue · comments

Currently, MakeItSo stores all tasks in a single list per user. To make managing tasks more flexible, MakeItSo should support adding tasks to lists.

In the spirit of MakeItSo being a replica of the iOS Reminders app, here are a couple of assumptions:

  • lists can have any number of tasks
  • lists are not nested
  • support sharing lists with other people
  • lists have a name, an icon, and an accent color
  • users can specify the ordering of lists
  • there are 4 special lists
    • All: shows all tasks
    • Today: this list shows all tasks that are due today
    • Scheduled: this list shows all tasks that have a due date, grouped by date
    • Flagged: : this list shows all tasks that are marked as flagged

Hi @peterfriese ! ✋

First and foremost, thanks a lot for your series of tutorials, they're really clear, to the point, and are super helpful to get one started with ios/firebase development.

I've followed along the MakeItSo app development tutorial, and as an exercise, I am now trying to continue developing the app to match more features of the official iOS app. When trying to extend the design of the MakeItSo example app to support the concepts of "lists" and "groups" I've found myself having a hard time visualizing how to extend the Repository pattern approach you had adopted so far.

Do you already have ideas on what Repositories would then exist, and what their API would look like already that you'd be willing to share? I'm especially struggling with how the different implementations I can imagine would relate to the Firebase data-model. For instance, if you have a collections/documents looking like lists/{listID}/tasks/{taskID} does that convert to a single ListRepository, or two repositories ListRepository and TaskRepository? Do they allow addressing nested documents (a list's task) directly, do they then proxy the request to the children repository?

Sorry for the lot of questions. I'm a true beginner in the iOS world, and I would love to hear what your approach and design would be in that scenario, and as I found this issue to exist, I thought that might be the right place to ask the question 😄

Cheers! 🦕