What does HackerNews think of filestash?

🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...

Language: JavaScript

#22 in Emacs
#3 in Web app
I am getting through the same phase of rewriting my OSS [1] in vanilla JS [2], the solution I settled down on is to write components in pure es6 like this:

  export default function(render) {
      const $page = createElement(`
          
whatever here
`); render($page); $page.addEventListener("xxxx"); onDestroy(/* remove listeners */); }
Yes I sort of had to write my own mini framework but it's well under 100 lines of codes [0] with the idea that maintaining that 100 lines of codes is gonna be a massive win compared to keeping up with any "modern framework" npm hell

The core idea is that instead of trying to pretend some cool ideas like HOC or render props, we call a dog a dog and say "decorator pattern" and just use the pattern directly [3] and when we need to compose things we do so as well [4]

ref:

- [0] the skeleton I started to settle on a nice API before starting the full rewrite https://mickael-kerjean.github.io/skeleton/example/index.htm...

- [1] original oss project which I'm migrating: https://github.com/mickael-kerjean/filestash

- [2] current state of the rewrite where you can see this pattern in action https://github.com/mickael-kerjean/filestash-rewrite/tree/ma...

- [3] https://github.com/mickael-kerjean/filestash-rewrite/blob/ma...

- [4] https://github.com/mickael-kerjean/filestash-rewrite/blob/ma...

The infamous FTP top answer on the Dropbox launch is what led me to open source a solution to the Dropbox problem [1] after spending a bit too much time on the drawing board trying to understand the limit of FTP and why we couldn't have a Dropbox solution based on FTP. From that reflection I then made it work with every possible file transfer protocol you could think of.

[1] https://github.com/mickael-kerjean/filestash

Where do you put the bar of the legal vs morale argument? A few days ago, I discovered a government entity in Pakistan was using my AGPL software [1] to handle censoring of media through their "ministry of information and broadcasting". I did release my software under AGPL as I like the underlying ideology of free software with a large emphasis on the freedom and not the free of charge but would have never expect some regime would come to use it to handle censoring.

[1]: https://github.com/mickael-kerjean/filestash

> lately upgraded their gallery, but it is still slow. It generates thumbnails on-the-fly

generating thumbnails on the fly doesn't have to be slow. It can be slow and often is as most implementation would rely on something like image magick or similar tool but you can get several order of magnitude faster if you go deeper.

I've spent a lot more time than I would dare to admit on that exact topic while working on my OSS project (https://github.com/mickael-kerjean/filestash) and I figured you could build tailored tool in C that rely on say libjeg and leverage very low level tricks like DCT scaling to do things much faster. Typically in Filestash creating a thumbnail takes about 15ms for a picture taken from my camera and it doesn't make a raspberry pi to break a sweat.

I've made one such frontend for not only backblaze but also Nextcloud (via webdav), and pretty much every protocol like FTP, SFTP, S3, ... It's all open source: https://github.com/mickael-kerjean/filestash
With so many people laughing at the infamous top comment of the Dropbox HN launch[1], I got obsess with the idea one day we would be able to generate Dropbox like UI for any protocol like FTP by implementing this simple interface:

```

interface IBackend {

   ls(path)            []file

   cat(path)           stream

   save(path, stream)

   rm(path)

   mv(from, to)

   mkdir(path)
}

```

So I open source my work [2] as a result of that thought experiment. Almost 7k github star later, there's about 40k users who use my tool every month to access their FTP server, SFTP server, S3, WebdAV and more protocols and was contacted by people in places I would have never dream like NASA and MIT.

That project is a few order of magnitude more impact full than anything I've done in my professional life and I'm super excited to the prospect of developing the idea further as file manager are an amazing abstraction. My mum can navigate through folders and click on files but I would have a hard to time to explain her what a tree is and a lot of complex system can be model as simple file managers. A good example which was implemented in Filestash [3] is a relational database, the db can be modeled as different folders, tables as subfolders and rows as file which can be edited and save back which would under the hood simply generate a bunch of sql queries

There's still a lot to do but at this stage, it doesn't make enough money to make it a full time job yet.

I learned how to code from a massive rabbit hole that started in high school while trying to make myspace pages look nice

[1] https://news.ycombinator.com/item?id=8863

[2] https://github.com/mickael-kerjean/filestash

[3] https://github.com/mickael-kerjean/filestash/blob/master/ser...

Filestash - https://github.com/mickael-kerjean/filestash

Organice - https://github.com/200ok-ch/organice

org-web - https://github.com/DanielDe/org-web

Org Mode tools! - https://orgmode.org/worg/org-tools/index.html

Connect to a machine running emacs with an in browser terminal - https://xtermjs.org

Alternatively use ssh in an actual terminal instead of the browser.

The infamous top comment from the HN Launch of Dropbox [1] which has been widely discussed and dismissed over the years.

This is the comment that got me onto thinking: "how awesome would it be to have a software capable of decoupling the UI from the actual storage" so you wouldn't be tied to one vendor and do so by implementing a simple programming interface [2]

I did open source my solution [3] and have refined it over the year with plugins that implement storage for any storage you could think of like SFTP, S3, Samba, WebDAV and many more. Most of the money is coming from enterprise who need help to join authentication, authorisation and storage in 1 complete solution to do things like SAML based SSO on S3, 2FA layer on a samba server, audit capabilities, ....

The part i'm super proud of is it feel faster to browse Dropbox from my app than it is from Dropbox itself [4]

[1] https://news.ycombinator.com/item?id=8863

[2] https://github.com/mickael-kerjean/filestash/blob/a91df1637d...

[3] https://github.com/mickael-kerjean/filestash

[4] the technic that's used consist in caching the list of files/folder in indexDB and render the content of a folder with the data coming from indexDB first then refresh it with the new data essentially making a visit to an folder you've seen before be instant without any loading whatsoever. It's very simple but it seems nobody else is doing it

Django admin is quite an awesome tool but very stack specific. If you don't use Django, I have open source [1] a tool that takes another approach which is to query the DB schema directly so people can fill up form and follow along the different foreign keys of the db. An example of this approach can be seen there: https://demo.filestash.app/login?type=mysql&host=88.99.185.5... which is using a sample DB [2]

[1] https://github.com/mickael-kerjean/filestash

[2] https://www.mysqltutorial.org/mysql-sample-database.aspx

> If we can sift through 1,000 free users and find one who converts to $25k per month, we're delighted.

Does this ever happen? I was contacted by a F500 who needed some custom version of my open source project (https://github.com/mickael-kerjean/filestash). 25k sounds unreal but hey I have no experience in purchasing enterprise grade software and it's not simple to find actual figures so I was aiming at making an offer at 2.4k/month. Is it a rock bottom figure in enterprise grade software?

The solution I've used for the last 2-3 years:

1. a cronjob on my android phone (via termux) does an rsync to a VPS

2. the VPS has a cronjob to sync everything with S3

3. the frontoffice tool for people to access those photos is my open source Dropbox like frontend that is bring your own backend: https://github.com/mickael-kerjean/filestash My wife and I got an account and family members can access it through shared links.

The S3 bill goes to a shared account so that If I die, the VPS will probably be quickly removed but S3 should stay in there with my wife paying for it.

Another article which mention both FTP and Dropbox. The infamous top comment on the Dropbox HN launch back is what led me down the rabbit hole of building a Dropbox like UI for FTP: https://github.com/mickael-kerjean/filestash

FTP is amazing on so many perspective. About a month ago, I crawled the entire IPv4 range looking for anonymous FTP and found about 200k of them. As I wanted to publish the results and provide a way to get through those servers, I ended up building crawlers but quickly stopped as the sheer amount of movies, series, music I found would have been more problems than it's worth.

600$ a month from my open source project (https://github.com/mickael-kerjean/filestash) whose idea came from the infamous HN launch of Dropbox (https://news.ycombinator.com/item?id=8863).

I made that cool frontend for FTP server with an interesting twist as I've abstracted:

1. the backend storage: meaning it connects to a wide range of existing storage like FTP, SFTP, S3, Dropbox, ...

2. the authentication layer: meaning you can use your own identity provider to put your S3 buckets behind your corporate SSO

3. the authorization layer to create business rules

At its core, the software is a framework to develop file manager like web applications by implementing a simple interface (https://github.com/mickael-kerjean/filestash/blob/f7a4e52703...). This does enable all sort of interesting use case. For example, the mysql implementation shows database name as first level folder, tables as second level folders and each row in a table is shown as a file within the table folder which a user can edit directly through the generated form built from the schema information. That way people who are used to the Dropbox interface can edit the database directly, create shared links, search through stuff without having to know about sql

Most of the money comes from companies who needed various degree of customisation and support or didn't want to host on premise.

On my open source project (https://github.com/mickael-kerjean/filestash), there's a nyan cat that move around whenever the app takes more than 1s to load. I had quite a few companies contacting me to get rid of it

To see the nyan cat moving around your screen, you got to throttle the bandwidth: https://demo.filestash.app/

I've built an org mode editor that connects to git repo and works form the browser, it looks like this: https://demo.filestash.app/login?next=/view/org/emacs.org#ty...

Pages can be exported in a wiki that is rendered dynamically by emacs like this: https://demo.filestash.app/api/export/hn/text/html/emacs.org or if you prefer pdf: https://demo.filestash.app/api/export/hn/application/pdf/ema...

The code is on github: https://github.com/mickael-kerjean/filestash

This comment is what led me down the rabbit hole of building a Dropbox like UI for FTP [1] and generalise the approach to work with SFTP, WebDAV, S3 and ultimately any system that can be modelled as a filesystem [2] with the magic of interfaces in OO [3]

[1] https://github.com/mickael-kerjean/filestash

[2] https://www.filestash.app/img/illustration/filestash-framewo...

[3] https://github.com/mickael-kerjean/filestash/blob/cddbcfc6d1...

Take a server with sftp access, so you can mount it locally and browse with winscp if you need to. Put filestash on top and you have a nice ui. That's probably 90% of the original features

=> https://github.com/mickael-kerjean/filestash

Not parent but if 1% of the people who use my FOSS software [1] did pay for it, I'd be making a pretty good salary. I'm just a datapoint but my contributions don't cover the server cost alone and out of the many companies who did contact me, I've refused almost all of them as I'd be making more money flipping burgers than what they were willing to offer considering the time involvement

[1] https://github.com/mickael-kerjean/filestash

Yes! I can't count how many people have tried to use my software (https://github.com/mickael-kerjean/filestash), flushing some entire directories with docker volume and creating support tickets and emails as things got broken.

The landscape of tools supposed to solve that problem isn't great. Things are changing way too fast with projects being archived or deprecated with mention to migrate to another solution which after another year is deprecated again. Because of those issue, I've went with go generate which isn't ideal but is at least stable. That proposal would be a game changer and hopefully it will become a reality as Brad is quite a prominent figure in the Golang world.

I did build a tool for this: https://github.com/mickael-kerjean/filestash. The idea is to link your github repo and let people use it (for example: https://demo.filestash.app/login?next=/files/_posts#type=git...) or create a shared links to make it really easy for anyone to manage the repository without requiring any knowledge of GIT https://demo.filestash.app/s/jekyll
> building just an administration GUI based on SQL introspection

I built exactly this. The idea was to make databases look and feel like a file manager where databases are shown as folder, tables as subfolders and rows are shown as files that once open shows a fully editable form that look like this: https://archive.kerjean.me/public/2020/screenshot_20200117_2... It understands foreign keys and create relevant links to easily navigate through. The entire code is there: https://github.com/mickael-kerjean/filestash

I made an integration with only office a few days ago for my open source project: https://github.com/mickael-kerjean/filestash Got very impressed compared to collabora and libre office online. Thank you for making this!
> Full text search ... I found the database got a little sluggish, and nearly 1/2 a GB in size when using it so I am leaving it out for now.

That's surprising, I did solve the same problem for my org-mode client (https://github.com/mickael-kerjean/filestash) but using the full text search capabilities of sqlite. I was amazed by its performance, not sluggish at all and could handle anything I'd throw at it, especially with a number of files that doesn't go much above the thousand. Here is what the code look like from a sqlite perspective: https://github.com/mickael-kerjean/filestash/blob/f5f0f30cea...