[PR #1886] feat: bookmark reminder #1919

Open
opened 2026-03-02 11:59:46 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/karakeep-app/karakeep/pull/1886
Author: @xuatz
Created: 9/3/2025
Status: 🔄 Open

Base: mainHead: feat/705-remind-me


📝 Commits (1)

📊 Changes

29 files changed (+4370 additions, -37 deletions)

View changed files

📝 apps/web/app/dashboard/layout.tsx (+6 -0)
apps/web/app/dashboard/reminders/page.tsx (+5 -0)
📝 apps/web/components/dashboard/bookmarks/AssetCard.tsx (+4 -0)
📝 apps/web/components/dashboard/bookmarks/BookmarkActionBar.tsx (+8 -0)
📝 apps/web/components/dashboard/bookmarks/BookmarkCard.tsx (+16 -1)
📝 apps/web/components/dashboard/bookmarks/BookmarkLayoutAdaptingCard.tsx (+58 -24)
📝 apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx (+172 -0)
📝 apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx (+26 -3)
📝 apps/web/components/dashboard/bookmarks/EditBookmarkDialog.tsx (+112 -8)
📝 apps/web/components/dashboard/bookmarks/LinkCard.tsx (+4 -0)
apps/web/components/dashboard/bookmarks/RemindMeButton.tsx (+57 -0)
📝 apps/web/components/dashboard/bookmarks/TextCard.tsx (+4 -0)
📝 apps/web/components/dashboard/bookmarks/UnknownCard.tsx (+4 -0)
apps/web/components/dashboard/reminders/RemindersList.tsx (+151 -0)
apps/web/components/dashboard/reminders/RemindersPage.tsx (+128 -0)
apps/web/components/shared/ReminderBanner.tsx (+65 -0)
apps/web/components/ui/date-time-picker.tsx (+138 -0)
packages/db/drizzle/0066_bookmark_reminders.sql (+13 -0)
packages/db/drizzle/meta/0066_snapshot.json (+2728 -0)
📝 packages/db/drizzle/meta/_journal.json (+7 -0)

...and 9 more files

📄 Description

Description

  • introduce bookmark RemindMeLater functionality to karakeep
  • added RemindMeButton to action bar for quick action
  • edit remindAt manually in bookmark edit modal
  • added /dashboard/reminders page with 3 tabs (due, upcoming, dismissed)

TODOs

  • extract translation strings
  • handle for infinite scroll / pagination
    • im lazy, maybe we can implement this in a different PR lol

Separate PRs maybe

  • mobile implementation
  • push notification in native app
    • im lazy, maybe we can implement this in a different PR lol
  • optional "hide" in home behaviour that can be toggled in user settings when bookmark is set to "RemindMeLater"
    • i personally want this, but im lazy, maybe I will implement this in a different PR lol

fixes #705

Note

Even though the issue original request is for in-app notifications,
it is not implemented yet, to first implement the groundwork (e.g. database schema)
the web ui is implemented first so that there is a meaningful way to see and interact with the RemindMeLater feature to get some initial feedbacks

Details

RemindMeLater button sets reminder at one of 3 timeslots

Based on the intuition that we just want to quickly set a reminder, when clicking the action button in the BookmarkCard, I simply set the remindAt time to be either in the morning/afternoon/evening timeslot, based on current time, that I predefined as 9am, 1pm, 8pm.
I'm not sure if we like/want this idea yet, but if we do, we can extend this by allowing the users to add/remove/edit the timeslots for RemindMeLater.
We can also add incremental delay duration for bookmarks that have been snoozed multiple times.

However its not like we can't specify the remindAt datetime, I leave it to be user editable manually in the edit dialog. It's not implemented yet tho, wanted to get some (if any) feedback about the initial implementation and see how we want refine the direction how this feature should go.

/dashboard/reminders bookmarks are hardcoded to render as list type

I've made the decision to make /dashboard/reminders render the BookmarkCard fixed as list view, instead of based on user setting. If anyone thinks that this page should also be dynamic based on the user setting, let's discuss about it more.

Screenshots (latest commit is variant D)

Early impressions of the implementation. Open to feedbacks and suggestions on the final UX for the remind me feature.

No reminders

image

Variant A (basic)

Image

Variant B (slightly stylized + menu button)

image image

Variant C (full card background color)

image image image

Variant D (less verbose)

image

Additional (conditional) Options

image

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/karakeep-app/karakeep/pull/1886 **Author:** [@xuatz](https://github.com/xuatz) **Created:** 9/3/2025 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/705-remind-me` --- ### 📝 Commits (1) - [`1d9c60b`](https://github.com/karakeep-app/karakeep/commit/1d9c60b1b0ffc2ff70b429d7cd6fd38b970d4fc0) feat: remind me ### 📊 Changes **29 files changed** (+4370 additions, -37 deletions) <details> <summary>View changed files</summary> 📝 `apps/web/app/dashboard/layout.tsx` (+6 -0) ➕ `apps/web/app/dashboard/reminders/page.tsx` (+5 -0) 📝 `apps/web/components/dashboard/bookmarks/AssetCard.tsx` (+4 -0) 📝 `apps/web/components/dashboard/bookmarks/BookmarkActionBar.tsx` (+8 -0) 📝 `apps/web/components/dashboard/bookmarks/BookmarkCard.tsx` (+16 -1) 📝 `apps/web/components/dashboard/bookmarks/BookmarkLayoutAdaptingCard.tsx` (+58 -24) 📝 `apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx` (+172 -0) 📝 `apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx` (+26 -3) 📝 `apps/web/components/dashboard/bookmarks/EditBookmarkDialog.tsx` (+112 -8) 📝 `apps/web/components/dashboard/bookmarks/LinkCard.tsx` (+4 -0) ➕ `apps/web/components/dashboard/bookmarks/RemindMeButton.tsx` (+57 -0) 📝 `apps/web/components/dashboard/bookmarks/TextCard.tsx` (+4 -0) 📝 `apps/web/components/dashboard/bookmarks/UnknownCard.tsx` (+4 -0) ➕ `apps/web/components/dashboard/reminders/RemindersList.tsx` (+151 -0) ➕ `apps/web/components/dashboard/reminders/RemindersPage.tsx` (+128 -0) ➕ `apps/web/components/shared/ReminderBanner.tsx` (+65 -0) ➕ `apps/web/components/ui/date-time-picker.tsx` (+138 -0) ➕ `packages/db/drizzle/0066_bookmark_reminders.sql` (+13 -0) ➕ `packages/db/drizzle/meta/0066_snapshot.json` (+2728 -0) 📝 `packages/db/drizzle/meta/_journal.json` (+7 -0) _...and 9 more files_ </details> ### 📄 Description ## Description - [x] introduce bookmark RemindMeLater functionality to karakeep - [x] added RemindMeButton to action bar for quick action - [x] edit remindAt manually in bookmark edit modal - [x] added `/dashboard/reminders` page with 3 tabs (due, upcoming, dismissed) ### TODOs - [ ] extract translation strings - [ ] handle for infinite scroll / pagination * im lazy, maybe we can implement this in a different PR lol ### Separate PRs maybe - [ ] mobile implementation - [ ] push notification in native app * im lazy, maybe we can implement this in a different PR lol - [ ] optional "hide" in home behaviour that can be toggled in user settings when bookmark is set to "RemindMeLater" * i personally want this, but im lazy, maybe I will implement this in a different PR lol fixes #705 > [!NOTE] > Even though the issue original request is for in-app notifications, > it is not implemented yet, to first implement the groundwork (e.g. database schema) > the web ui is implemented first so that there is a meaningful way to see and interact with the RemindMeLater feature to get some initial feedbacks ## Details ### RemindMeLater button sets reminder at one of 3 timeslots Based on the intuition that we just want to quickly set a reminder, when clicking the action button in the BookmarkCard, I simply set the remindAt time to be either in the morning/afternoon/evening timeslot, based on current time, that I predefined as 9am, 1pm, 8pm. I'm not sure if we like/want this idea yet, but if we do, we can extend this by allowing the users to add/remove/edit the timeslots for RemindMeLater. We can also add incremental delay duration for bookmarks that have been snoozed multiple times. However its not like we can't specify the remindAt datetime, I leave it to be user editable manually in the edit dialog. It's not implemented yet tho, wanted to get some (if any) feedback about the initial implementation and see how we want refine the direction how this feature should go. ### `/dashboard/reminders` bookmarks are hardcoded to render as `list` type I've made the decision to make `/dashboard/reminders` render the BookmarkCard fixed as `list` view, instead of based on user setting. If anyone thinks that this page should also be dynamic based on the user setting, let's discuss about it more. ## Screenshots (latest commit is variant D) Early impressions of the implementation. Open to feedbacks and suggestions on the final UX for the remind me feature. ### No reminders <img width="1512" height="539" alt="image" src="https://github.com/user-attachments/assets/e6ee803a-317f-4f40-af51-cfb77eca143d" /> ### Variant A (basic) <img width="1512" height="557" alt="Image" src="https://github.com/user-attachments/assets/d08c547a-8488-4740-b7fa-2a118cf4e31a" /> ### Variant B (slightly stylized + menu button) <img width="1512" height="528" alt="image" src="https://github.com/user-attachments/assets/68e80021-f8c4-410d-8871-cffbb01c21c4" /> <img width="1512" height="520" alt="image" src="https://github.com/user-attachments/assets/6f14dbec-0e75-4c5a-a2bd-6cee9939dc3d" /> ### Variant C (full card background color) <img width="1512" height="520" alt="image" src="https://github.com/user-attachments/assets/9318da86-5ad9-4829-aa7a-960248711b37" /> <img width="1512" height="547" alt="image" src="https://github.com/user-attachments/assets/f90407fa-0b22-4fbe-b9dd-6c869fa5f8e9" /> <img width="1512" height="525" alt="image" src="https://github.com/user-attachments/assets/d981fde5-49df-4678-96a9-7176b13f1f13" /> ### Variant D (less verbose) <img width="1030" height="461" alt="image" src="https://github.com/user-attachments/assets/78ce3f63-7e51-4815-8e26-e2cf78cc7119" /> ### Additional (conditional) Options <img width="363" height="384" alt="image" src="https://github.com/user-attachments/assets/67742e18-99f1-47cc-9c4d-c00c2d449938" /> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/karakeep#1919
No description provided.