Skip to content
This repository was archived by the owner on Sep 18, 2025. It is now read-only.
This repository was archived by the owner on Sep 18, 2025. It is now read-only.

Storage re-write and more 🚀 #199

@Dimchikkk

Description

@Dimchikkk

Ideas for the issue was contemplated from #184; #184 is closed in favour of this issue that will allow to implement clone & fork note easily

Warning: I can't draw 😄

First of all velo removes concept of "document" and "tab". Instead of documents and tabs there are groups. Group has zero or more notes. Note is abstraction for data, it can be just a note with specific style (paper-like note, rounded rectangle note, circle note), drawing, image, etc. Group is abstraction for organising (connecting) data, say connect notes with arrows or organising notes in specific positions, etc. Of course, the ways of organising data is also a data (!), so app has basically only one type, on pseudocode:

type Note = Circle | RoundedCorners | Paper | Drawing | Image | Group
type Group = { type: Brainstorm, notes: Note[] }

So basically:

image

What is left then? Infinite canvas is left, call it "universe" or "root group". Basically user can zoom-in, zoom-out and move in universe adding/connecting notes. Technically, universe can be seen as "tab". Tab could load different types of notes connected by arrows... in proposed issue it also can load different types of notes connected by arrows BUT functionality is extended to contain another groups, basically tab can contain tabs. To avoid memory overflow group doesn't load contained groups (in future iterations of the feature it may start load groups with specific child depth).

Let's see how it can be represented:

image

User has ability to click on "Group B" and it will despawn current group and load notes from group B (in future iterations of the feature it may start just unfolding/folding groups). User should be able to go back to previous group if needed (going level up so to speak).

Bookmarks panel should be implemented as well. It's something similar to current document list. User can pin any group and it will appear in bookmark panel, then user can quickly open it if needed.

Going deeper in technicalities. There are gonna be "Notes" and "Group" store, also relationships store. Relationships store is needed for implementing "Search everywhere" feature. Say user types "hello": it should look in group store for a group that contains "hello" title, then it should look in notes store and check notes text for "hello" world... it should show list of found notes. While selecting any found note, note preview should be opened allowing to explore note content. Finally there should be a way to see to which groups belongs this note, so that's where relationships store comes in.

There should be group view, so user can quickly find & open any group, or insert group into current group.

There should be notes view, so user can search for specific note and be able to use it across multiple documents. Changing note in one document updates it for another document as well, this is clone note feature speaking in git terminology (in future iterations of the feature ability to fork note will be added as well).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions