top | item 41878836

Show HN: Desktop app displaying files on a 2D canvas

45 points| limandoc | 1 year ago |limandoc.com

Hey all! I always wanted to arrange my text/markdown/pdf files on a 2D canvas and visualize them without opening all the windows. An extra feature I added is also visualizing folders within - so kind of a 3D visualization? It was also important to be an offline desktop app, rather than online tool like Miro or Mural, because once I edit files in Sublime or AdobePDF then I want changes to sync in the canvas right away.

Some technical points and lessons learned: being Android developer helped a lot with this project since I used Kotlin Multiplatform with Compose Desktop renderer (actually skiko). It runs on JVM under the hood, which was exciting at first since I can use the app on all of my Mac/Windows/Linux machines. Right? Wrong. One lesson I learned wasn’t “write once - run everywhere”, it was “write once - test everywhere; repeat”. On the other hand, using Kotlin Multiplatform will allow me easily to port to Android and port the logic to iOS.

Anyways, I released LimanDoc v1.0.3, still in Proof-Of-Concept, so I hope to get some feedback and features you think would be helpful.

I was thinking these features would be great for future releases: - adding a local LLM support to search/summarize your docs, books, videos, etc; - sync on local network (including future mobile apps) - Templates, groups, and better diagram integration like in Drawio.

27 comments

order
[+] pilgrim0|1 year ago|reply
Gave it a try on macOS.

My first impression is that it breaks expectations for common operations:

1. Two-finger sideways panning does not work, it zooms erratically; 2. Click and drag pans instead of drawing a selection box; 3. Shift + Click or Cmd + Click does not add item to selection; 4. Two-finger vertical swiping does not zoom when hovering an item; 5. The zoom disregards mouse coordinates, always anchors from the center of viewport;

Still not sure how to select multiple items. I'd recommend you get the fundamentals of navigation/edition right, otherwise it's unworkable. Even for a POC. I can't even explore the scope of built features with excitement because these issues make it super frustrating, makes me wanna give up immediatelly.

Misc:

6. I expected snap to grid; looking for the option but there's no app menu; 7. Adding icons successively stacks them on top of eachother, which is adds repositioning overhead; 8. Very easy to wrongfuly scale small items while attempting to move them; 9. I'm seeing at least 250ms of lag for openning sidebars and getting visual focus feedback;

This last one is tough feedback, please don't take it personally. I want to join the waitlist for notifications of more mature versions. But since you shipped publicly too early, it makes me question if it's worth and the team behind it can actually deliver up to my expectations. In other words, I feel like it jumped the gun. Bad first impresssion for a technical audience.

The bar for minimal UX polish nowadays is very high, all the fundamentals have to be solid, I would gladly trade a thousand features for these solid fundamentals. That's my expectation of a POC: low on features, high on polish.

If it's any conforting, consider that the only reason I bothered to test it and write this feedback (in a rest day with very acute right hand tendinitis) is because I think it's a very cool project idea.

[+] limandoc|1 year ago|reply
This was very important for me, can't appreciate enough for your time trying and reviewing.

Indeed I have been focusing on features more than optimization, but I also had to spend huge amount of time with the new UI tool. For example I had to revert a lot of macOS features like two-finger panning and zooming because on Windows/Linux I would not receive an y-coordinate events from trackpad... Some key shortcuts I had to implement myself for that reason too.

I also wished that the sidebar UI lag was the only one :) There are more if high-def images and big PDFs are rendered. The UI optimization will be the primary focus for next two releases.

Regarding POC - for me it is also a business POC - I primarily want to know if other people will find the idea useful, whether there are alternatives etc. While I'm here I also want to ask what use case would you (if ever) consider using it - personal or work related?

Also feel fee to reach at info[at]limandoc.com, as for the extensive feedbacks I will give a perpetual license in the (possible) near future. Having feedbacks is primary reason for this PoC.

[+] dr_kiszonka|1 year ago|reply
It looks neat. One aspect that I didn't quite get from the clips was accessing "distant" documents. Let's say I work with two files. One file on the very surface and another a few levels deeper. Do I need to zoom in and zoom out all the time to compare the documents? In other words, is there an equivalent of two windows opened next to each other, even if the documents come from two very different locations?
[+] limandoc|1 year ago|reply
There are tabs, like in a browser, so you can have two tabs for your usecase. Perhaps I can work on tab division, like I'm IDEs. I'll be also implementing a search functionality later to find the files and even searching across the content of files.

However for both files to be visually be on the same level, I am now thinking about shortcuts, where the original document will live in a distant folder (board), and you can view it from other board by creating a reference/shortcut to it. Possibilities are endless!

[+] j0d1|1 year ago|reply
That's really cool! I am working on a diagramming editor and I wondered if I could expand the use cases to include knowledge organization. The challenge is mainly to display a lot of data on a canvas and don't kill the CPU/GPU in the process. How do you handle displaying that much information at once?
[+] limandoc|1 year ago|reply
It is indeed hard to optimize it; I haven't fully utilized the potential myself. For now I have an object pool which allows me to create only one instance of a canvas element. Kotlin also allows me to use coroutines easily, also (potentially) have access to GPU/CPU since this is a desktop app.

Another thing I tried (still in backlog) is dynamic quality reducer for images and PDFs - sort of like a game engine rendering where zooming out will reduce quality of images. What are you writing your app on? Electron?

[+] ttoinou|1 year ago|reply
Seems nice, but why would we need synchronization between devices ? if the layout is stored in that hidden file, it will be synced with any sync tool like dropbox, google drive etc.
[+] oulipo|1 year ago|reply
Really cool! This would be a nice integration with Obsidian if you had an open / textual format (and possibly open-source it!)
[+] limandoc|1 year ago|reply
Thanks! The text is not stored in a database, rather I just render the markdown files you have on the canvas. Technically, it is also possible to put your whole Obsidian vault into LimanDoc's vault, and all the files from Obsidian will appear in the canvas :)
[+] mqoca|1 year ago|reply
Any reason why this needs admin rights in windows?
[+] limandoc|1 year ago|reply
Does the installer needs admin rights? Or the app after installing it? One possible answer is that I self-signed the app rather than using 400$ code-signing authority - hence you might get warnings for the installer.
[+] SuperHeavy256|1 year ago|reply
You're onto gold here, my friend.
[+] nemosaltat|1 year ago|reply
I agree! Visualizing a workflow or a project this way seems to have a ton of potential. I already keep most of my knowledge in Obsidian or template folder structures, and this provides a really neat way to visualize it.

An immediate use case that comes to mind is when I’m sending multiple file “deliverables” to a client— i.e. a quote, a report package, some spec sheets, and a relevant CAD diagram)— I could quickly arrange them on as previews on canvas with arrows to visually communicate how they relate and their relative importance rather using multiple paragraphs to explain the seven attachments.

[+] tcper|1 year ago|reply
Great idea, it is very inspiration
[+] puppycodes|1 year ago|reply
I love this idea but its a mistake not to open source it. Especially at an early stage the feedback and work from dedicated contributors is worth it. Not to be rude or presume but I venture to guess nothing in your source code is actually of proprietary value as the app is pretty simple and I think thats a good thing! You only lose by closing the source at this stage of the game.