M.Y.T.E. Plugin - Manage Your Time Effortlessly

Hello everyone, I’ve got something to ask the Obsidian Community (I hope this is the correct category for this).

I’ve been using Obsidian for some time now, and I’ve learn a lot of things along the way: How to build and develop your own PKM, what CSS/SCSS is and how to use it in order to create a new theme, how to use a lot of the plugins that the app offers, and so much more.

This app keeps helping me how to manage my knowledge and my projects in a way that is efficient and time lasting. I’m very glad that all the people involved in this project (the Obsidian team, the theme and plugin developers and all the Forum and Discord users (pretty much any Obsidian user)) have made this possible, thank you very much.

Even thought there are a lot of tools available to us, there is one particular thing that I think would be interesting to add, and that would be a proper calendar tool. All this time I’ve been using different plugins in order to manage time in my projects and personal life: Kanban, OG Calendar, Full Calendar, Fantasy Calendar, Big Calendar, Google Calendar, just to name a few.

These plugins, to some degree, satisfy some of the needs that I have for time management, but there are some pieces that I’m still missing. A lot of said pieces already exists in some of the plugins, but said pieces have difference functions and purposes.

At the end of the day, I always end up using the Dataview plugin to filter the different elements that I want to keep an eye, would it be a task, and event or anything that had a timestamp on it.

Thanks to dataview, I can access all the notes of my vault, and filter them in order to see what I need where I need it, something that with the previous plugins is not possible (since each plugin have its own functionality). But it’s not enough for what I would want to have.

So, I decided to take matters into my own hands, and decided to took the path of “developing my own plugin” (that’s why I asked for a little help/guidance a while back).

And that it’s where my journey starts (and kinda ends for a while). I started developing a Calendar plugin using React. It didn’t end very well, since I didn’t knew what React was and how to properly use it. Even thought I didn’t knew a lot, I end up creating what would be an early version of the plugin I’m hoping to have. But, as expected, it had a lot of issues: Wrong rendering cycles, sub-optimal algorithms, wrong packages used, and so on.

But, despite all the issues, I kinda was happy to see that some improvement was being made. I started knowing pretty much nothing to have a kinda functional plugin. But I didn’t (and still don’t) think that that version of the plugin should have been released, so I just left it there as it was.

Luckily for me, a few month down the line, one of my college teachers asked if any student knew how to develop using React and was interested to be part of a project that was going to be developed using it. I didn’t need to think twice, and so here I am, one year later.

This past week I decided to give this plugin project another chance, and for said week I’ve been developing it. I didn’t get too far, but I’m kinda happy with what I’m getting for now.

demostration

As you can see, there is not a lot you can do: There is a calendar, you click on the + sign, you create a task or and event, and that’s it. Pretty straight forward. All the information that is represented in the calendar is saved on the MYTE/Calendar folder, having each day a note on its own.

---
myte:
  events:
    - id: 1692877560548
      title: Bites the dust
      description: ""
      timestampStart: 1692136800000
      timestampEnd: 1692309600000
      tasks:
        - id: 1692877551765
          title: EventTask 1
          description: ""
          timestampStart: 1692136800000
          timestampEnd: 1692136800000
        - id: 1692877555261
          title: EventTask 2
          description: ""
          timestampStart: 1692136800000
          timestampEnd: 1692136800000
        - id: 1692877558988
          title: EventTask 3
          description: ""
          timestampStart: 1692136800000
          timestampEnd: 1692136800000
  tasks:
    - id: 1692877760133
      title: Maybe a task
      description: ""
      timestampStart: 1692136800000
      timestampEnd: 1692136800000
---

As you can see, everything is stored in the frontmatter. This is made on purpose, since I still wan’t to be able to access it via Dataview.

There are a few features that I really want to implement:

  • Drag&Drop and Resize functionality - Since it’s much more intuitive and direct.
  • New note from item (task/event) - If you want to create a new note from an item, you should be able to do so.
  • Register on the calendar any other note on the vault - For now, the calendar only show the information that is store inside the MYTE/Calendar folder, but I want to it to be able to take ALL the notes that have a myte: {} property inside (with all the required information) and also represented it on the calendar.

This are just the first of many functionalities that I want to implement in this plugin. But, for now, I need to focus on work again before I can come back to developing this plugins.

The reason that I wanted to post this is to ask you (pretty much every/any one) some questions regarding this plugin:

  • Questions to any developer
    • How much should I worry about efficiency? - One of my main focus during the developing of the plugin is that is as efficient as possible. I already fixes a few mistakes that cost some efficiency, but not sure if everything. Which could be the elements that I need to make sure I don’t mess up so that any device can run this plugins smoothly?
    • Maintenance / Future proof - Lately I’ve seen some plugins stop being maintained or improved. I’m sure it’ll come the day that I can no longer keep developing the plugin, so another one of my main goals is to make it as future-proof as possible, meaning that you should be able to use the plugin in any current or future versions of the app. What think I need to consider in order to obtain that stability (if that is even possible to begin with)? I try to rely on the Obsidian API as little as possible, since I guess that’s the main reason the plugin could stop working/start giving problems as the app keeps updating, but I’m not sure if there is anything else that I need to keep track of.
  • Questions to maybe future users / anyone
    • Do you thing is worth using it? - I want to read your opinion about the few things that I posted here about the plugin. Do you thing is useful enough? If not, what should I try to add? I can’t assure you that I’ll end up adding said functionality to the calendar, but I’ll try my best if said feature is good/important/fundamental enough.

    • Should I publish it? - I will finish the plugin, at least to some degree (whenever I have time). This plugins is something that I’m doing it out of enjoyment and to learn how to develop this kind of stuff (using Preact this time).

      But, as you already red above, there is a lot of Calendar plugins out there, and I’m not sure if the one that I’m making right now is adding anything of value (right now the Full Calendar is doing pretty much the same (and more) than the current state of my plugin).

      My goal is to have it ready for Obsidian October (or at least try, since my time is kinda limited by work) and, if possible/have permission, publish it and enter the “competition” (I’m pretty sure that some really amazing plugins will come out, and better than mine, since I’m still learning stuff).

      But, if there aren’t going to be a lot of users, I won’t add it to the plugin store, since there is a lot of plugins for the job already.

If you got to this point, thank you very much for your attention and time (and if you comment anything as well, thank you in advance. I appreciate it a lot). I hope you have a beautiful day :smile:

1 Like

definitely publish it :slight_smile: