Building some-extra-things w/ NativePHP: Things I Like vs. Dislike #744
danielh-official
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Link: https://github.com/danielh-official/some-extra-things
I use Things 3 by Cultured Code, and while I appreciate its minimalism, there are some features and improvements I miss from other apps. Things has many ways of syncing to and from despite being a native Mac app, so I thought I could build some solution that would allow me to sync from Things using upsert via ID.
And some-extra-things is the current culmination of these efforts.
As someone who has used Laravel PHP for most of his career, I decided to give NativePHP a spin to see how the experience would compare to developing a native macOS desktop app with Swift.
Note: The list below applies primarily to some-extra-things and may be different depending on what other project I can use NativePHP for.
Things I Like
Accessible for Laravel devs
As I've mentioned, I've done most work in Laravel PHP, so it's easiest for me to dive into the familiar directory and get to work compared to other stacks like XCode Swift or Electron. Even though I've done work in native Swift (see: Wake Up, Get Up), I still find myself gravitating toward Laravel for full-stack development.
Ability to deploy cross-platform
This doesn't necessarily apply to this project, because Things is Apple-ecosystem-only, but it's a nice-to-have for projects where one source code to multiple platforms would be highly valuable.
Granted, other products offer similar capabilities, but a Laravel dev would appreciate having that capability without having to delve into Flutter or React Native.
Things I Dislike
No Visible App Intents Support
One of some-extra-things' functionalities relies on the localhost server to consume API requests. This means that I can use Apple Shortcuts to get items from Things 3 and send an API request to my local running server to do a one-way upsert.
Another means of syncing is using AppleScript, which is more convenient for non-power users, but Things exposes less data for AppleScript vs. using Apple Shortcuts.
If some-extra-things were developed with Swift, I wouldn't have a localhost server, but I would be able to add actions to Apple Shortcuts directly.
This would:
I could maybe declare a URL scheme and see if it can fix this issue by consuming API requests instead, but I would then have to block all requests via localhost (to secure the app), and it still would be somewhat more complex for power users to understand vs. adding shortcut actions.
Native Is Smaller
When I finally built and deployed some-extra-things, I saw that its build size was over 300 MB. I haven't built a version with Swift, but I imagine it would be significantly smaller.
Conclusion
I like NativePHP and intend to use it for future projects, but for this one specifically, I think I'm going to switch to Swift. I'll look into extracting a feature of some-extra-things (i.e., the tag editing) and rewriting it into a native Swift desktop app that is directly distributed.
Beta Was this translation helpful? Give feedback.
All reactions