It's time to figure out what exactly Lotus is going to do, work and look like. There are several features I want this app to have:
When you click on a notification on GitHub and it takes you to a linked issue or pull request, GitHub automatically marks this notification as read, meaning it automatically removes it from the list of your notifications. Then you can click a "Mark as unread" button and it will bring it back.
I think this is counter-intuitive, because most of the time you just want to see what see what was the recent comment or update that triggered this notification and you don't always have time to react. It'd be nice to treat this as a "Quick Look" functionality in macOS, where you get to preview the file without actually opening it.
I imagine Lotus could show the linked thread in a web view, stripping all of GitHub's UI and only showing you the comments. Then you'd get a "Mark as read" and "Reply later" buttons to determine what to do next.
If there's one thing maintainers hate, it's certainly "+1" or "any update?" comments. You can read more why here - https://blog.sindresorhus.com/issue-bumping-e3b9740e2a0.
It would be nice if Lotus didn't count such comments as a new notification and simply ignored them.
Notifications can quickly add up and in the end you stare at a long list of things to do and it's not the most motivating thing in the world. I think it would help to organize notifications into batches of 10 to motivate maintainers to resolve them and feel a sense of accomplishment. When you finish a batch, you can generate a new one if you feel like it... or not.
GitHub UI already does this. There's an icon to unsubscribe from each thread. It would also be nice to unsubscribe from the entire repository. This is useful when you were contributing to some repository a long time ago, but you're no longer interested in it.
You should be able to bookmark threads which you think are useful to come back later or reference in the future. As soon as you do that, it's going to stay forever in "Bookmarks" page.
If you're not ready to deal with a certain thread now, you should be able to click "Reply later", which is going to remove this notification immediately from the list and it will reappear a week later. You can also view these postponed notifications in a "Reply later" category.
I have a full-time job and I definitely don't want to see work-related notifications on a weekend or after work hours. I think it would be nice to automatically hide those until 9am.
This feature may not be essential for initial release, but I'm going to write it down anyway to make sure I don't forget.
I'm sure more stuff will pop up as I build this app, but these are the core features I want it to have. Now I'm going to sketch how the UI could look like.
Ideally this would be a native app written in Swift and SwiftUI, but I'm not familiar with these technologies enough to build this in 3 days. I'm going to go with good old Electron. I've considered just making a web app, but I don't want to deal with user authentication, databases, storing sensitive GitHub credentials or server maintenance. I know React pretty well, so that will certainly help speed up the development process.
As for UI, there are two options I can go with here:
As much as I love Tailwind, Primer is a better first choice here, because it provides React components I can use for UI out-of-the-box. If it's not going to look good or it will look too much similar to GitHub, I can always switch to Tailwind.
Alright, now the roadmap is more or less clear and I can actually start building it. I'll talk to you soon.
I'm building Lotus in the open and I'm sending out progress updates just like this one every Sunday.
I won't send spam and you can unsubscribe anytime.