A semi-curated blog of computer graphics and rendering.

Have you ever wondered about the self-hosted digital cabinet solutions, or the lack thereof? Have you ever thought about DEVONthink, how good would that be if it is hostable on Windows/Linux machines, very fast, and twisted beyond recognition to my liking? Look no further, because I am here to introduce PENEfiles, a self-hosted digital canbinet solution! And here’s my pitch.

PENEfiles intro image

Store Your Files Online and Locate Them Instantaneously!

We sure move around a lot everyday. How good would it be, if some of our most important files are stored online, able to be fetched at any time? After batch-uploading your files by dragging them right into the sidebar, you can multi-select your files and give them appropriate tags. PENEfiles supports partial file name search and tag search, and powered by a WebAssembly version of SQL.js, can do so within one sixtieth of a second. Sort it by date, file name, date & file name, the possibility is endless. See it work in action:

PENEfiles quick search demo

Quick Note for Quick Thought

What if when you are in an internet café, and inspiration struck? What are you gonna do, write it in Apple Notes using your iPhone with a tactile keyboard, or worse, Notion, the Monstrously Slow Thing? PENEfiles supports adding quick notes with the tap of a button. Click on the little note thingy beside the search bar, and you’re set. With a markdown syntax-highlited editor (powered by CodeMirror) and builtin LaTeX support, you can write whatever you want, whenever you want.

PENEfiles quick notes demo

Both Apple Notes and Notion are actually awesome, and I have drawn inspiration from both.

Cross Reference. Share the Notes. With the World.

When you are writing a note, sometimes you may want to cross reference other notes, or some files stored in PENEfiles. Don’t worry, we’ve got you covered. By simply clicking on other files while opening a note, you can effectively cross reference and link the whole PENEfiles system together.

After finishing on writing a note, you may also want to share it with a friend. Well, turns out you can do that in PENEfiles as well. Clicking on the sharing button, PENEfiles notes can render notes in a standalone web pages, with all of its references intact, with no traces of PENEfiles itself.

PENEfiles Sharing demo

No Animation. Quick AF.

The speed and previous-century UI are meticulously designed to make you spend as little (or as much) time on this website. Imagine you are going to a printing shop and want to print something. The computer, unsurprisingly, is Windows 7 with a Chrome. Are you going to login to Google Drive or whatever, or login to Telegram web version and send yourself that file? Hells no. Open PENEfiles, type / to search for print, and double-click to download the file in seconds. Think about it. We don’t really need our softwares to look elegant and modern, with a slow, clunky UI/UX React frontend, where every button is hidden in some kind of burger menus. A file cabinet only needs cold, hard efficiency. And that’s what PENEfiles will (hopefully) deliver.

Preview Documents

With Mozilla’s PDF.js and Volodymyr’s Docx.js, you can preview all kinds of documents online with PENEfiles. The software supports images, videos, and music as well. Just want a sneak peak on some documents? No need to download them. Bust out PENEfiles and you’ll see what it is.

Preview PENEfiles documents

The Tagging System

The tagging system is the crown jewel of information organization. Tag your files in all kinds of tags conceivable to mankind. PENEfiles will infer some initial tags based on your file extension and tag them for you. You can always come back later to change the tags. Combining the tagging system and the AND/OR/NOT quick search, you can locate all of your files in seconds.

PENEfiles doesn’t have an admin system. That is why it will foreverly be a self-hosted solution only. Your files will have your own tag. Your friend’s will have theirs. Collaborate on a note by adding your friend to the tag. Or not. Gift your friend a file by adding their tag and removing your own. With the tagging system in place, PENEfiles tackle the file ownership problem by simply checking the tags. If you own the file, you can delete it, rename it, or if it’s a note, edit it; and if you don’t, you can only download it. Such is the power of the tagging system.

Confidential Level

Sometimes, you just want some files to yourself. It’s alright, PENEfiles got that covered as well. With 3 different confidential levels, files can range from public to unlisted, and to confidential. Public files are for everyone to see on this PENEfiles instance. Unlisted files can only be accessed via a URL. And you get the confidential files all to yourself. Logout and see the files vanish in real time.

Confidential file demo

Backend Written in C++

That’s right. The backend is written in C++, powered by Oat++. Again, very quick - but I guess you get tired of this selling point at some point. As the backend is written in C++, it has a small memory footprint, with a very small executable. Just setup a reverse proxy URL in the nginx config and BOOM! PENEfiles is up and running.

Small executable

PENEfiles have a decoupled frontend and backend. It means the frontend can be served as a static web page, and everyone can implement a new backend as long as it conforms to the PENEfiles API standards.

…and More to Come!

Are you interested? I am still developing the digital cabinet system now, with great passion. At this point, the source code is not publicly available (because written in vanilla JavaScript, it’s not pretty.) If you want to try out PENEfiles, please contact me, and I will send you a demo version (together with the source code). In the future, I plan to refactor and clean up the codebase to make it more presentable. If you have some thoughts on how to further improve the system, maybe some features you would like, or really just whatever, feel free to reach out as well.

+ Loading comments +
Copyleft 2023 42yeah.