Get the top HN stories in your inbox every day.
squarefoot
tentacleuno
> In any case, for now it's not possible to load Files app without internet
This is a major turn-off IMO. One of the main points of self-hosting is that you don't rely on the outer internet. If a self-hosted service relies on externally hosted resources, does this make it partially self-hosted?
EGreg
Well, they can simply embed the static resources in the PHP file itself, why not?
spicybright
Or even simpler just download the JS and put it next to the script if single file isn't a hard requirement (which I don't see a use case for besides simplicity)
girvo
Yeah. There are easy tools to use to automate it as well if they're relying on it to be updateable from other JS build tools and so on.
quenix
Weird, they could embed all of this in the php file and echo it, keeping it one file.
tentacleuno
They sure could with a build script that just dumped all those resources into the single PHP file. It looks generated anyway.
julianwachholz
I don't understand the marketing behind "single file" projects like this anymore. Sure, it was a very neat and useful thing to have back when everyone was deploying their sites by uploading in Filezilla. But today we have everything in a single container which seems far more useful and maintainable.
JD557
I think it makes sense in this particular case. I was actually looking for something like this for a while.
I just want a glorified `autoindex on`. I don't want to manage an extra container just for that.
(I'm speaking in regards to the file viewer option, looks like there's also a file manager option on the pro version and I have a bit more mixed feeling regarding that)
rovr138
> back when everyone was deploying their sites by uploading in Filezilla
There are a lot of people still doing this. Some of us have gotten away from it, but I support some people on the side that have multiple projects that still manage it this way and it works for them.
I would not want to be the one to explain to them what docker is, how it works and how to use it.
mjau-mjau
What do you mean "have everything in a single container"? Many users want to view or manage some files in a folder, and then delete the app shortly after. It doesn't get easier than dropping a single file, and then deleting it afterwards.
rovr138
When I’m working on something and need to poke around in a MySQL database, one of the things I rely on is adminer. One wget and I can log in graphically and see the database.
Afterwards, I just delete and that’s it.
axegon_
I think there's problem but it's elsewhere. Sure it's a single file, yes. However in order to run it you need a php interpreter, which I for example, do not have installed and an internet connection. But that would go for just about every scripting language in one form or another. Sure, just about every linux distribution has python for instance and same goes for macos afaik. This isn't the case for windows however(again afaik). Package it into a single binary file and I'd be all up for it: I do love AppImages.
dspillett
> that would go for just about every scripting language in one form or another
You could use bash and be supported on almost every unix-a-like OS¹, or plain-'ol sh for even wider compatibility. You'd need to configure CGI/FCGI as well as dropping the script(s) in, but you have to do similar work for PHP/python/other if you don't already have them installed and configured for the site/directory in question.
[1] and others: it'll work with IIS if the server has a bash/sh interpreter² available
[2] plus any externals that the script relies upon, of course
really_mcnuggle
> though in your case that might not be practical as this means Files app is essentially no longer a"single file"
First off, its already not a "single file" you need a PHP interpreter.
Secondly, you can cram the JS and CSS into a .phar file, the performance is horrible, but it's probably not noticeable in this scenario.
quenix
It is a single file—that you need an interpreter does not change that fact. It's assumed that the user already has the interpreter.
You can cram the JS and CSS into the PHP file itself, no phar needed. Performance change is unnoticeable on any modern machine.
madduci
A zip package containing all the files will be a single file as well :-)
mjau-mjau
Hi, Files app DEVELOPER here. Someone notified me that the app had been posted here. A lot of negative comments, which I don't have a problem with, but I can perhaps clarify a few things.
About Files app not being "single file" because it loads JS/CSS resources from the CDN (internet). That is of course a correct observation, and this is already noted on the website. From an operational perspective, there is only one file to download/move/install, and from a functional perspective for the vast majority, it will be viewed in browser with an active internet connection. Furthermore, it was INTENDED BY DESIGN to load all JS/CSS from CDN, because ultimately it improves the user-experience, and makes it plausible to make an app like this wrapped into a single index.php file.
It's not reasonable to add ALL Javascript/CSS directly into the index.php file. PHP is only 10% of the codebase, and it would bloat the file to insane dimensions and make it difficult to maintain. JS/CSS is loaded from CDN service jsdelivr.com, with multi-level redundancy (Amazon, Cloudfront, Cloudflare), and will load faster and cache more effectively than anything served from within the index.php app on your own server. Furthermore, some plugins are served on-demand, for example when browser needs a "polyfill" or for specific features. For functional reasons, benefiting the vast majority who do not care how/where the JS/CSS is loaded from, JS and CSS files are therefore served from CDN. If this does not suit you, nobody has any problem with that.
Does anyone have any examples of any other single-file app with a comprehensive interface like Files app that is entirely self-contained?
There will be a future release where you can assign all scripts/css to be loaded from local path, but then of course all these files will need to be installed alongside Files app index.php. We will NOT be adding all JS/CSS directly into the index.php file.
About license, as stated on the website, you can use it as a file viewer for free (with the nag). If you want to remove the nag and use it as a file manager, license is required. Those who expect apps like this to be entirely free with updates and support, are living in dream land. It's hardly worthwhile in the first place. There are loads of other free apps, and if you can't see any difference, then your choice is easy.
I have noted comments about license info being unclear, thanks.
dreadnaut
> Does anyone have any examples of any other single-file app with a comprehensive interface like Files app that is entirely self-contained?
phpLiteAdmin (https://github.com/phpLiteAdmin/pla) is developed as separate PHP, JS, and CSS files. A "build" script merges all into a single PHP script, which includes compressed resources inlined after a call to `__halt_compiler()`. The same code can run as separate files, or as a single one.
I wrote the original "build", years ago, as we started extracting classes out of a procedural single file.
[edit] Link to the interesting bit: https://github.com/phpLiteAdmin/pla/blob/master/phpliteadmin...
mjau-mjau
That's good, but surely you won't compare phpliteadmin with Files app in terms of the interface.
BeefWellington
Furthermore, it was INTENDED BY DESIGN to load all JS/CSS from CDN, because ultimately it improves the user-experience, and makes it plausible to make an app like this wrapped into a single index.php file.
I get the rest of the points you're making but I think the flak you're getting is largely about what you consider the "user" here. You're responding from the point of view of the person I am sharing my photos with, whereas most of the respondents are responding from the point of view of the me, the guy who is gonna actually use this app. There's a mid-sized vocal crowd of self-hosters here on HN and from my own observation a tendency to prefer control over these sorts of things. Does anyone have any examples of any other single-file app with a comprehensive interface like Files app that is entirely self-contained?
Your app is, as you noted, not single-file. Setting that aside though, the density of the interface is kind of irrelevant to where the CSS and JS are hosted. There's loads of on-premise enterprise apps that do not load data from CDNs and have much more convoluted user interfaces. Plus they work on an otherwise disconnected network, do not subject users to potential tracking, etc.I would also warn you, having seen this happen to a friend's project, the absence of any robust license text inside the package and/or spelled out on the website is going to give you some headaches. For example, does "use" of the app include customization? What type of customization is possible and accepted? If you allow some customization, you'd need to be careful to spell out explicitly that people can't just edit the PHP and remove the nag, etc.
One other thing to note: The application is very vulnerable to Cross-Site Scripting.
premun
> It's not reasonable to add ALL Javascript/CSS directly into the index.php file. PHP is only 10% of the codebase, and it would bloat the file to insane dimensions and make it difficult to maintain.
I guess no one says that's the way you want to maintain the project. The final `index.php` with HTML/CSS/JS can just be built out of parts that can be maintained separately.
neop1x
You can easily bundle all resources in that PHP as someone said. Or the script can download them from CDN and cache locally and then use the local version. I also don't like external resources, it makes no sense. It is often not even faster as most people think. It is fast only if that file is already cached in the browser and given the number of various js/css projects and their versions it is generally unlikely to have the proper version cached.
moozeek
Great work, I love this! Don't let the petty comments drag you down.
> Does anyone have any examples of any other single-file app with a comprehensive interface like Files app that is entirely self-contained?
Adminer comes to mind: https://www.adminer.org/ https://github.com/vrana/adminer/
As far as I can tell, they "compile" everything, including JS, into one PHP file.
billpg
I don't know PHP that well, but could the JS/CSS/Images be base64-encoded inside the PHP and decoded and streamed out on demand?
janvdberg
This looks great, and like something I was looking for a couple of months ago. I couldn't find anything, so I created my own [0] (limited) solution. But the Files app looks like it might replace this.
[0] https://j11g.com/2021/11/23/corbin-static-responsive-image-a... [1] https://github.com/jan-vandenberg/corbin
abcd_f
Hijacking top comment with a shallow compliment and a self-promo is not nice.
janvdberg
Apologies. I asked the mods to delete my comment, because this was not my intention.
dang
It was a fine comment and I don't think there was any intention to hijack the thread - but I've detached it from https://news.ycombinator.com/item?id=30241128 now.
undefined
pkdpic
I like what I see on the site and in the comments here. Im looking forward to checking this out more maybe.
Im kind of surprised that as a species we dont have a conclusive ubiquitous solution to the foggy problem of digital photo storage / management. So many of my photos are just in drawers on old hard drives and phones.
Anyway maybe its getting better. Or maybe Im just stupid.
jrm4
The answer is simple, it's just kind of says an ugly thing about how computing has shifted; it's essentially the same reason e.g. the iPad didn't have a file manager.
Interfaces got really good and slick at the same time it became profitable/useful to alienate people from their own data for profit.
jdonaldson
Files have some drawbacks... they're difficult for multiple people to work on together (slides). They're often not easy to organize, and they're often not available where you want them.
tentacleuno
If you use something like Syncthing[0] (great, can recommend) you'll get them available exactly where you want them: on all your devices.
The only real problem with it is conflicts, where one file is edited simultaneously on two devices. I think Dropbox has solved that (?), but I'd rather keep my data on my own computers.
pkdpic
Thats really interesting, I never thought about the fact that restrictive seeming mobile apps shift focus from local file storage to remote db file storage via apps.
jrm4
You can have other interfaces in addition to the files, that discourage, perhaps strongly, getting to them directly.
But it's always been straight up evil to completely remove all meaningful access to them, and yet Apple et al chose to go in this direction.
distrill
I understand the risks of this approach, but I just dumped everything into google photos and I'm very happy with how it's working for now. I do not miss the days of keeping track of those devices at all.
subpixel
The thing about Google photos that explodes my brain is that if I use albums to share with family members, Google prioritizes the use case of the recipients _joining_ the album and _adding_ my photos to their own albums. Google is trying to use me as a way to get my family members signed up for Google photos.
Then my family is confused about where photos live, etc.
hunter2_
Yeah, I made a Google Photos album to send a link to various potential contractors to show where I want some work done on my house, and since the Photos app for Android has the relevant URI registered, the link gets opened with it instead of just the browser, and the first thing the app does is a very prominent "join" CTA. Then the next person to view the album sees them as a member, gross. It works great incognito though, where the browser doesn't hand off links to any apps regardless of URI registration.
Might try something like this instead.
pkulak
That was my solution since 2011, but just a few months ago I bought a nas that came with a Google Photos clone and moved everything over to that. Too scary knowing that Google can and will lock me out of my account at any time and forever.
girvo
I did the same, but with Apple Photos. I have a hard drive that holds an offline copy of the library too, which is nice.
MildlySerious
I just want to say that the minimal design of the site feels very pleasant to me. Some days I struggle to make the simplest things feel right even with tools like Tailwind. Well done!
ropeladder
As somebody who recently spent two weekends trying to figure out a self hosted photo solution that actually for my needs and was easy to install, this looks fantastic.
(I ended up using PhotoView, which works fine, but this looks like it might have been better.)
NKosmatos
Hey thanks for sharing with us https://photoview.github.io It's worth a look :-)
ezconnect
Your demo has a login and has no default values for the credentials.
AnyTimeTraveler
The credentials demo /demo are directly above the button that says "Demo-Site".
Lukas_Skywalker
Annoyingly, the demo broke the back button of my Safari on iOS
leavenotracks
Had a look, and it was worth it! Will consider using for sure
red_admiral
I really don't mind charging for software, as developers need to eat as much as the next person. $39 for something like this is really not excessive.
But I think it could have been made clearer that (1) you only download one file but it loads more from their CDN, it's not truly "single file" and (2) the free version is heavily limited and gated with a pop-up.
That said, I like the demo - it looks really slick and has a lot of features.
mberning
I am still looking for a simple tool to deduplicate, organize, and tag all the photos I have accumulated over the years. Old laptop hard drives, old cell phones, iPhoto libraries, aperture libraries, etc. I want to dump them into a staging area, remove all dupes, and start organizing and tagging them into a folder structure.
mceachen
I'm writing PhotoStructure to do exactly this task!
My to-do list is still long, but I'm plugging through it and I believe PhotoStructure already has the most robust tag extraction, inference, and image deduplication heuristics around, and has a novel browsing approach that scales well to very large (100k+ - 1mm+) libraries.
https://photostructure.com/faq/why-photostructure/
(Disclaimers: I'm the solo author, and although I am an open source author, PhotoStructure is commercial software. There are both a free and paid tiers of functionality: details are on the pricing page.)
squarefoot
I use regularly Shotwell to import from my camera and cellphones, and Geeqie works quite well in finding (also not exact) duplicates.
https://wiki.gnome.org/Apps/Shotwell (it doesn't require Gnome, my desktop is XFCE)
Gorgor
Have you looked at DigiKam? It offers directories, tagging (with custom tag hierarchies), deduplication and also face recognition. I think it can do quite a bit more, but I'm not a heavy user, at all. I just use it for keeping track of my modest library and it works great for that.
mberning
I will check it out
wolfhumble
Another (paid) solution is Imageranger.com (don't have anything to do with them, but installed it for my father). I really like the import function that gets rid of duplicates (dedupes) and that put files into directories (video, photos, etc) and year/months based on how you have set up the import function.
The image viewing interface itself is okay although it might not be as smooth as e.g. Apple Photo (which I feel has its own challenges with how convoluted its image directories are e.g). ImageRanger has also tags and Face Detection and Recognition.
I have only installed the Home edition, and it seems to re-index the images to create thumbnails (relatively fast) if you have stored images on an external disk that is detached/attached between openings of the program. From what I understand, the Professional version does not have this issue as the images are cached (not tested out this myself). I don't think the face Detection and Recognition is on par with e.g. Apple Photo, but haven't tested it extensively enough to say that with 100% certainty.
What I like most about ImageRanger is its import functions and the way it stores the images in common folders and subfolders based on preferences and not in a convoluted DB.
pmontra
I used https://github.com/Jack000/Expose a couple of times. Advantage: it generates a static site. Disadvantage: it must be customized almost certainly. It's a bash script.
kbrisso
Very nice tool indeed, funny how the world works. I'm writing an Electron/React/PouchDB application that works kinda like this called "Filebase", you create a library and name it like "pictures", you pick a directory / or single file on your PC and it scans/indexes it, this allows you to tag individual files and folders so you remember what's in it (you can search these tags). you can search and filter by type. The last feature will be archiving but keeping the directory info handy so you can search for items that are archived. I came up with this idea after watching my partner try and organize Cricket art and PDF's. I realized that Windows Explorer kinda sucked for organizing. I wanted to build something that did not modify or touch files itself. It's been a great way to learn Electron. I have to say Electron makes building UI's easy for applications.
trvz
A few alternatives have already been mentioned here; yet another one: https://larsjung.de/h5ai/
quyleanh
My favorite one for years of sharing files.
This dev also has others cool tool. Check it out on his Github page [0]
seszett
I use https://sye.dk/sfpg/ myself, another single-file PHP photo gallery.
It's less polished, but it's free.
huhtenberg
There are plenty of these.
This submission is notable is because it's free and polished.
--- Edit ---
AH, DAMN. It is NOT indeed free, at least not as demoed.The child comment below is 100% correct.
It also pulls piles of stuff from cdn.jsdelivr.net and can't function without it. That's no bueno.
forgottofloss
> the original submission is free and polished
No, it's not free. Every time you load up the page to view your own files with files.gallery, a big honkin' pop-up shows up instructing you to buy a $40 license for additional features:
Purchase a license [$39] to unlock features and support dev! - Remove this popup - Upload - Download folder - Code and text editor - Create new file - Create new folder - Rename - Delete - Duplicate file - Dedicated support - Multi-user, panorama and much more coming soon! [payment button]
The files.gallery website only hints at this restriction at the very bottom of the page in the "License" section, which devs would expect to mean an OSS license: "Files is free to use with basic features. To remove the license-popup and unlock additional features, you may purchase a license [$39] from within the app."
Now if you look at the rest of the landing page you can see it very carefully does not mention the ability to use basic file browsing features so that it's not technically a lie to present a tool that can "browse files and folders without complicated installations" that doesn't allow you to do anything more than download your own files without opening your wallet.
The dev is just another hustler.
huhtenberg
... and you are correct! Edited my comment above to reflect that.
> The dev is just another hustler.
But this was really uncalled for even if this does look kinda deceiving and dark-pattern-ish.
sdoering
Maybe the dev isn't very clear about this. I agree it could be more clear up front.
But does this mean devaluing their work by calling them "just another hustler"? I believe this isn't necessary.
And sadly it totally devalues your comment for me.
dewey
> The dev is just another hustler.
Are you working for free or do you ask for a salary from your employer?
ratsmack
I think what is worse is the fact that it is not a "one file app", and rather a php script that pulls in many js scripts of the net.
someburner
Not quite the same thing but I'm a big fan of Filebrowsr: https://github.com/filebrowser/filebrowser
Backend in Go, frontend in Vue, deployed as a single binary.
Get the top HN stories in your inbox every day.
The output is very polished and fast, I like it a lot. Unfortunately it's not technically a single file as it depends on code downloaded from their server, therefore it can't be deployed locally without Internet connection.
From the forum:
"In terms of license, you don't need an internet connection. However, Files app loads it's own Javascript, CSS and several plugins from CDN (jsdelivr.com), and this requires internet. We already have a request to allow serving all assets locally (as an option), although in your case that might not be practical as this means Files app is essentially no longer a"single file", but multiple files that you need to be included with each installation (although you could assign a global path perhaps). In any case, for now it's not possible to load Files app without internet."