Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage re-write and more 馃殌 #199

Open
Dimchikkk opened this issue Jul 19, 2023 · 0 comments
Open

Storage re-write and more 馃殌 #199

Dimchikkk opened this issue Jul 19, 2023 · 0 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Dimchikkk
Copy link
Owner

Dimchikkk commented Jul 19, 2023

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).

@Dimchikkk Dimchikkk added the enhancement New feature or request label Jul 19, 2023
@Dimchikkk Dimchikkk pinned this issue Jul 19, 2023
@Dimchikkk Dimchikkk added the help wanted Extra attention is needed label Aug 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant