Giter Site home page Giter Site logo

club-1 / webdav-drive Goto Github PK

View Code? Open in Web Editor NEW
15.0 2.0 4.0 753 KB

WebDAV Drive is a file explorer running in a web browser that adds a Google-Drive-like experience to an existing WebDAV share

License: GNU General Public License v3.0

CSS 4.79% HTML 1.58% JavaScript 4.39% Svelte 38.22% TypeScript 46.64% Makefile 4.38%
webdav webdav-client file-explorer drive google-drive javascript js typescript browser

webdav-drive's Introduction

WebDAV Drive

build status Translation status

WebDAV front-end that adds a Google-Drive-like experience to an existing WebDAV share, written in TypeScript with Svelte, Carbon and perry-mitchell/webdav-client.

screenshot

It can be configured at runtime, not suckless style, with a config.json file in public/app.

Build...

  1. Install the dependencies:

    make node_modules
  2. Copy the sample config file into config.ts then edit it:

    make config.json

...for production

To create an optimised version of the app:

make

The public directory now contains the fully built production app.

...for development

Start the dev server using the following comand, then navigate to localhost:8080:

make dev

Translations

It is easier to manage the translations via Weblate, but it is also possible to directly edit the files. Always run make translations-sort after manually editing the translation files.

Translation status

webdav-drive's People

Contributors

arcticlampyrid avatar comradekingu avatar dependabot[bot] avatar mement0o avatar n-peugnet avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

webdav-drive's Issues

Upgrade to webdav-client V5

webdav-client v5 has some breaking changes that affect us quite a lot:

Breaking changes:

[...]

[...]

A workaround is suggested, by using a ReadableStream in the body of the Request element but this is not supported by Firefox nor Safari as to now12.

See also:

Footnotes

  1. https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#browser_compatibility, look for the "Send ReadableStream in request body" in the compatibility table

  2. https://caniuse.com/mdn-api_request_request_request_body_readablestream

Download folder as an archive

Tar, tar.gz or zip

This would require to design an extension to the webdav protocol and to write a plugin Sabre dav.

So it would be a good Idea to write it as a plugin for webdav-drive also.

Depends on club-1/webdav-server#2

add account statitics

It would be useful to display account storage usage ideally but at least size used on the drive of the user home folder.

Think about plugins

Because if we want webdav-drive to be used with another WebDAV server, it will become necessary to export our specific features outside of the core and in separated plugins.

Fonts are loaded via a CDN

This is because of the carbon-components-svelte stylesheet.

Related to: carbon-design-system/carbon-components-svelte#1516, carbon-design-system/carbon-components-svelte#493, carbon-design-system/carbon-components-svelte#1593

I first thought about compiling the SCSS stylesheet ourselves but the parameter that we need is only there in the newer carbon stylesheets.

See: carbon-design-system/carbon-components-svelte#1385 (comment)

carbon-components must be used as @carbon/styles applies to v11.

public upload page

One thing I missed in many drive-like application is the ability to create a drop zone to allow non-unix-users to upload some files.
I don't know how we could integrate this feature. It may totaly be impossible.
But I think the idea interesting as it has been a question for me at multiple times for different projects that needed to gather archives from different sources.
It would be smoother than opening multiple WeTransfert from many people and then uploading them manualy.

But I agree this must be very dangerous in many ways.

  • amount of data -> but if each unix user have a limit this should be fine
  • viruses -> I don't know, maybe writing file and not allowing them to be executable is a little frontier. And an external user should'nt be more trustfull than a regular user.

I've already worked on a tool to achieved this in PHP but I don't remember at which stage was I...

https://github.com/vincent-peugnet/droppage

Upgrade to Carbon Components Svelte v1.0.0

This is a major change to Carbon Components Svelte as it also upgrades the Carbon stylesheet from v10 to v11. It is not released yet, but we can already try to see if anything breaks or if we will need to change some things.

See carbon-design-system/carbon-components-svelte#1614

Svelte projects consuming carbon-components-svelte will need to include SCSS preprocessors.

This is interesting as it will allow use to fix #58 in a proper way, as I imagined initially, by setting the $font-path parameter to an appropriate value. This in turn will allow to get rid of rollup-plugin-bundle-fonts introduced in 635ad42, and probably also the commonjs loader as I think it is the only non ES module of the project (and newer project are almost all ES modules).

Try to guess and display max upload size

I did it on Wcms, and I found this quite useful.

In my case, I think I was reading PHP parameter and admin parameter and then then displaying the bottleneck value. Maybe it's very complicated to browse all the chain of settings on a server and display the bottleneck.

Dynamic settings loading

Currently, the settings must be changed before compiling (suckless style), but it would probably be good to make it dynamically loaded so that I can release a packaged version.

I18n

Probably using svelte-i18n

Displaying upload progress forever

When I upload files it shows the progress bar for uploading the file but it never finishes.
upload
When I reload the page the file is uploaded.

Create share-link

  • enable apache userdirs on public directory
  • add action that creates a symlink in public/links based on a hash
    • define the hash function
    • define the content of the hash (filename + date [+ secret ?])
  • display the resulted link in a box and pre-select the content

Depends on #11

add a small footer that link to githup project

I personally really like to be able to jump to github when I found idea or bug. (I'm using this with antilope and I use it a lot !)

this could of course be a feature that can be deactivated by admins, but when software are at this stage of development it can help users to get an idea of how they can have more info, discover and help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.