Giter Site home page Giter Site logo

goyalmunish / reminder Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 4.0 12.23 MB

Terminal-based interactive app for organising tasks with minimal efforts.

License: MIT License

Go 98.67% Dockerfile 0.31% Shell 0.76% Makefile 0.26%
ad-hoc asdf calendar command-line google-calendar hjkl interactive linux macos meeting-minutes notes productivity productivity-booster productivity-tools reminder tags tasks terminal-based unix vim

reminder's Introduction

reminder's People

Contributors

dependabot[bot] avatar goyalmunish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

reminder's Issues

Create automatic backups

Rather than leaving it to the user to take manual backup, take automatic backups once in every 24 days (upon start).

We may need to register last backup date in the data file.

Issue with by default JSON getting set as HTML Safe

For context,

Refer https://github.com/goyalmunish/reminder/blob/master/internal/model/reminder_data.go#L33

func (reminderData *ReminderData) UpdateDataFile(msg string) error {
	// update UpdatedAt field
	// note that UpdatedAt of a whole ReminderData object is different
	// from corresponding field of each note
	reminderData.UpdatedAt = utils.CurrentUnixTimestamp()
	// marshal the data
	// Refer https://pkg.go.dev/encoding/json#MarshalIndent
	// Note: String values encoded as JSON strings are coerced to valid
	// UTF-8, replacing invalid bytes with Unicode replacement rune. So
	// that the JSON will be safe to embed inside HTML <script> tags, the
	// string is encoded using HTMLEscape.
	byteValue, err := json.MarshalIndent(&reminderData, "", "    ")
...

Functionality to tag certain notes a "main project" and get summary

In day-to-day work, you take care of some main projects (let's say "main projects") and some incidental things.

When these main projects go beyond a certain number (for example, in my case around 5), you tend to forget about what's the current status and next action item for each individual project. In the case of the reminder app, if we associate a project with a "note", then comments under it are more like transactional records (or data streams). But, at each moment what you also need is a summary (or data table). We need functionality to get this summary without having to read through each transaction.

Marking current recurrent items as done

Need to figure out a way to mark "done" the current recurrent (monthly/annual) note as done. ATM, even if it is done for the current cycle, it remains visible in "Approaching due date".

One way is to add another field "CycleStatus" with a dictionary of status and date. This can be used in visibility logic for repeated tasks and will be overridden every time it is set.

Fix sync issues

Look at the cases, where tags/notes don't get updated unless we go up a level and come back. Need to fix them.

Filter all pending notes

ATM the search functionality is not able to filter pending/done notes. Rather than "Done Notes" (and additionally "Pending Notes") it would be nice to bing able to filter them via "Search Notes".

Cannot paste multiline text as comment

At the moment the new line is considered as the end of input while providing a note's text or tag's slug. So, if one tries to paste a multi-line text, only the first line is captured.

Add functionality to clear the due date.

Currently, once the due date is set, it can only be updated, by cannot be cleared. By providing a blank date, one should be able to clear the existing date (but at present, it raises an invalid date exception).

Relook at design and performance

I just worked on it to pick up GoLang. As it is all up and running now, need to relook at its design, data structures, and algorithms, to make it better.

Work on fluidity of the interface

Currently, in a small window size, the output overflows and doesn't look good. It would be better to truncate the text based on the terminal window size.

Review by Josephine

Following are points suggested by Josephine in her review ๐Ÿ™:

  • Would like to skip the user email prompt (so empty input should be valid) Done
  • User email prompt behaves unexpectedly when repeatedly entering empty input, e.g. output displays multiple times Done
  • When navigating on any menu, it keeps playing a sound https://drive.google.com/file/d/1BamdOA-8GcsTJwSkZuI4u1VKGOwf0ksY/view?usp=sharing Done
  • Note comment timestamp in epoch milliseconds, would be nice to have it in readable form Done
  • Would be nice to be able to navigate up one level, i.e. go back. Fixed by #70. Done
  • Would be nice to have a way to delete a note and tag Permanent delete is disabled deliberately, but one can soft delete by marking it as "Done", and optionally by adding a comment on reason or something. I'll keep it for future: #72
  • Updating a notes tags only allows you to add, not to view existing tags or remove tag Updating tag functionality replaces existing set of tags for given note, also now it shows the current tags (as part of note description)
  • After adding a new tag to a note, Iโ€™m unable to view the note under the new tag https://drive.google.com/file/d/1t79lxbrI_oDqHvz5ugbET5MQh_p-bjlo/view?usp=sharing Fixed by #67 Done
  • No way to filter expired notes Expired notes (the notes which are pending, but their due date has passed) keep showing up under "Pending Urgent Notes" sections.

Handle newlines within text in search functionality

Searching through notes with any of them containing multi-line text, spoils the "supposed to be one-line display".

One idea could be to replace new lines with "\n" character for search display purpose.

Alerts on macOS for upcoming deadlines

At present one has to make use of the "Pending Notes" option from Main Menu to check tasks/notes with upcoming (within 7 days) deadlines. Explore possibilities to send alerts to macOS for such deadlines.

Integration with Google Calendar

Getting notifications via Google Calendar would be convenient. Need to first work on this functionality to think of a workflow that would make sense.

Point `reminder` command to a script which reuses the existing container

Invocation of the below alias, creates a temporary docker container when it is invoked:

alias reminder='docker run -it -v ~/reminder:/root/reminder goyalmunish/reminder'

On exiting the tool, this leaves the stopped container. The next invocation creates another temporary docker container. This is something we would like to avoid, but we also don't want to keep a container always running.

Adjust visibility of notes with near due dates

At present, the tool follows:

Note: Following are the pending notes with due date:
  - within a week or already crossed (for non repeat-annually or repeat-monthly)
  - within a week for repeat-annually and 2 days post due date (ignoring its year)
  - within 3 days for repeat-monthly and 2 days post due date (ignoring its year and month)

But, in general for repeated items like bill, they come around a specific date and have a period in which they can be paid. So, it would make sense to adjust the pre- and post- due dates visibility period.

Functionality to delete a note and tag

At the moment,

  • tags without any notes are listed as blank.
  • a note can be hidden by marking it as "done", and optionally by adding a comment on it with reason. So, this way, a note is soft-deleted (but can be seen under "Done Notes").

Keeping functionality for deleting a tag/note permanently for future.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.