Tiny Moon is a tiny Swift library to calculate the moon phase for any given date, works super fast, and works completely offline.
All of this started when I realized that we only have 12, sometimes 13, full moon's in a year. That doesn’t seem like that many.
I set out to build a MacOS app to remind me when a full moon occurs, so that I could take a moment and step outside to appreciate it.
The MacOS app I ended up creating can be found at https://apps.apple.com/us/app/tiny-moon/id6502374344 along with the source code [0], all powered by the Tiny Moon library.
I knew that I wanted the app to work offline, so working with a network request was out of the picture. Taking inspiration from SunCalc [1] and Moontool for Windows [2], I decided to create my own library and wrote Tiny Moon as a Swift Package to power my app.
The app tries to be as minimal as possible, does what it does very fast, and works completely offline.
[0] https://github.com/mannylopez/TinyMoonApp
[1] https://github.com/mourner/suncalc
[2] https://www.fourmilab.ch/moontoolw/
I used this approach because most platforms supports islamic calendar.
I really like the offline first approach, and would definitely use the library when there’s a need.
Thanks for sharing!