Pomodoro timer with categories, reflection, history & statistics.
Developed fully in the open while streaming live on Twitch, full recordings available here on YouTube.
You can find a description of this projects features here.
This project is modularized into many small Swift packages using Point-Free's modularization approach. To work on it, open the OpenFocusTimer/OpenFocusTimer.xcodeproj
file (not the Package.swift
file at the root). Choose the scheme iOSApp
or macOSApp
to run the full app.
The advantage of the modularization is that you can also choose any of the other targets such as TimerFeature
to only build a smaller package for faster build times when working only on that part of the project.
This app applies Point-Free's The Composable Architecture (TCA). For TCA newcomers, it consists of a View
with a related State
struct and Action
enum which are combined in the so called Store
object. All navigation, state updating and side-effects logic is put into a Reducer
, which has access to an Environment
to make the whole feature easily testable.
OpenFocusTimer was brought to you by Cihat Gündüz while streaming live on Twitch. If you want to thank me and support the development of this project, please make a small donation on PayPal. In case you also like my other open source contributions and articles, please consider motivating me by becoming a sponsor on GitHub or a patron on Patreon.
Thank you very much for any donation, it really helps out a lot! 💯
Contributions are welcome. Feel free to open an issue on GitHub with your ideas or implement an idea yourself and post a pull request. If you want to contribute code, please try to follow the same syntax and semantic in your commit messages (see rationale here).
To get the current code of line statistics, install tokei (e.g. via brew install tokei
) and run tokei
in the project folder. For more detailed Swift-statistics, install Sitrep (e.g. via brew install twostraws/brew/sitrep
) and run sitrep
in the project folder.
This project is released under the GNU General Public License, version 3 (GPL-3.0).