Cronica is an app to remind you about your new movies, and tv shows.
Cronica is built using Swift and SwiftUI, it uses Core Data to persist the user's watchlist, and CloudKit to sync the list effortlessly between the user's device.
To provide release notifications, the app takes advantage of local notifications to notify users about new episodes or a movie release. To keep notifications useful, there's a background task that updates item values with new information using TMDb API, if needed.
Thanks to CloudKit and SwiftUI, Cronica also can run on every Apple device, and the information will automatically sync.
If you want to contribute with code, here are some important details about the project's organization:
- The code-base for the Mac, iPhone, iPad, and Apple TV versions is shared and resides within the "Shared" folder.
- While the Apple Watch also utilizes the same networking as the other platforms, it has a different user interface (UI) design. The Apple Watch-specific UI components are located in the "Apple Watch" folder. However, certain UI components are shared among all platforms and can be found in the "Shared" folder.
- The views are organized based on their relationship with models or functionality. For instance, the "ItemContent" struct represents data fetched from the TMDb service, which can refer to a movie or a TV show. The UI elements associated with this struct are grouped under the "ItemContent" group in the "Views" folder. An example of such a UI element is the details page that users see when they open a movie.
- If you have any questions, feel free to reach out to me via email, Twitter, or iMessage. I'll be happy to assist you.
This project targets iOS 16.4, iPadOS 16.4, watchOS 9.4, macOS 13.4, tvOS 16.4 and requires Xcode 15.
To get started you'll need to:
- Get an API key to use TMDb API, you can get yours at their website, after that, go to Shared/Configuration/Key and replace the value of tmdbApi with your own key.
- You can remove TelemetryDeck service if you want to, I use it for the Feedback feature and sending signal when a catch occurs.
You can also download the latest beta from TestFlight
If you any question, you can send me an email at contact@alexandremadeira.dev, I'll try to answer as quick as I can.
I'm also availabe at iMessage, you can send a message at the same email address above.
Follow me on Twitter: _alexMadeira.