Multiple file upload plugin with image previews, drag and drop, progress bars. S3 and Azure support, image scaling, form support, chunking, resume, pause, and tons of other features.

Overview

Fine Uploader is no longer maintained and the project has been effectively shut down. For more info, see https://github.com/FineUploader/fine-uploader/issues/2073.

Build Status npm CDNJS license Twitter URL

Documentation | Examples | Support | Blog | Changelog


Fine Uploader is:

  • Cross-browser
  • Dependency-free
  • 100% JavaScript
  • 100% Free Open Source Software

FineUploader is also simple to use. In the simplest case, you only need to include one JavaScript file. There are absolutely no other required external dependencies. For more information, please see the documentation.

Contributing

If you'd like to help and keep this project strong and relevant, you have several options.

Help us pay the bills

Fine Uploader is currently looking for a sponsor to pay the AWS bills (which have recently lapsed). These add up to about $40/month. Please open an issue if you are interesting in becoming a sponsor. We will happily list you as sponsor on the site and README.

File a bug report

If you see something that isn't quite right, whether it be in the code, or on the docs site, or even on FineUploader.com (which is hosted on GitHub), please file a bug report. Be sure to make sure the bug hasn't already been filed by someone else. If it has, feel free to upvote the issue and/or add your comments.

Join the team

Are you interested in working on a very popular JavaScript-based file upload library with countless users? If you're strong in JavaScript, HTML, and CSS, and have a desire to help push the FOSS movement forward, let us know! The project can always use more experts.

Help spread the word

Are you using Fine Uploader in your library or project? If so, let us know and we may add a link to your project or application and your logo to FineUploader.com. If you care to write an article about Fine Uploader, we would be open to reading and publicizing it through our site, blog, or Twitter feed.

Develop an integration library

Are you using Fine Uploader inside of a larger framework (such as React, Angular2, Ember.js, etc)? If so, perhaps you've already written a library that wraps Fine Uploader and makes it simple to use Fine Uploader in this context. Let us know and it may make sense to either link to your library, or even move it into the FineUploader GitHub organization (with your approval, of course). We'd also love to see libraries that make it simple to pair Fine Uploader with other useful libraries, such as image editors and rich text editors.

Contribute code

The best way to contribute code is to open up a pull request that addresses one of the open feature requests or bugs. In order to get started developing Fine Uploader, read this entire section to get the project up and running on your local development machine. This section describes how you can build and test Fine Uploader locally. You may use these instructions to build a copy for yourself, or to contribute changes back to the library.

Setup

You must have Node.js instaled locally (any version should be fine), and you must have Unix-like environment to work with. Linux, FreeBSD/OS X, Cygwin, and Windows 10 bash all should be acceptable environments. Please open up a new issue if you have trouble building. The build process is centered around a single Makefile, so GNU Make is required as well (though most if not all Unix-like OSes should already have this installed). Finally, you will need a git client.

To pull down the project & build dependencies:

  1. Download the project repository: git clone https://github.com/FineUploader/fine-uploader.git.
  2. Install all project development dependencies: npm install.

Generating build artifacts

  • To build all build artifacts for all endpoint types: make build. You can speed this process up a bit by using the parallel recipes feature of Make: make build -j. If you would like to build only a specific endpoint type, see the Makefile for the appropriate recipe. The build output will be created in the _build directory.
  • To build zip files for all endpoint types: make zip. To build a zip for only a specific endpoint type, see the Makefile for the appropriate recipe. The zip files will be included alongside the build output in the _build directory.
  • To rev the version number: make rev-version target=NEW_VERSION, where NEW_VERSION is the semver-compatible target version identifier.

Running tests

To build, run the tests & linter: npm test (you'll need Firefox installed locally).

Commiting new code and changes

Comments
  • Support AWS Signature Version 4 for S3 uploads

    Support AWS Signature Version 4 for S3 uploads

    I created a new S3 bucket and tried uploading a file (using Fineuploader 5.0.8) when I was confronted with this error message: "The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256."

    I found out that there are currently two ways of creating a signature for an AWS request, v2 and v4. Fineuploader seems to be only supporting the old v2 signatures; this isn't supported by all AWS regions though (e.g. eu-central-1/"EU (Frankfurt)"). See http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html for more details.

    As far as I can tell this goes beyond changing the server side code to sign the request; the request itself needs to include an Authorization header that includes the algorithm used for signing ("AWS4-HMAC-SHA256") and other information, and the string to be signed needs to include the algorithm and other information as well, not just the json encoded policy itself.

    enhancement examples documentation 5 - Done integration S3 
    opened by bustbr 99
  • 5 - Support uploads to S3 via CloudFront distribution

    5 - Support uploads to S3 via CloudFront distribution

    The current plan is to support simple (non-chunked) uploads to a CloudFront distribution. Chunked uploads are currently not possible when targeting a CloudFront distribution since CloudFront rips off the Authorization header containing the signature before forwarding the request on to S3. The Authorization header is a required field in the request when using any of the S3 multipart upload REST calls, which are needed to support Fine Uploader S3's chunking and auto-resume features. I have opened a request in the CloudFront forums asking for this behavior to be modified so multipart uploads requests can target a CloudFront distribution.

    The planned support for this is still mostly undetermined, and it is also not determined if this support will be part of 4.0. Making this part of 4.0 is possible, but looking less likely as I run into issues with CloudFront's handling of upload-related requests. I'm currently struggling to get path patterns for upload requests to work. I've opened another thread in the forum detailing my issue at https://forums.aws.amazon.com/thread.jspa?threadID=137627&tstart=0.

    documentation S3 
    opened by rnicholus 74
  • 13 - Support direct to Azure Blob Storage uploads from the browser (modern browsers)

    13 - Support direct to Azure Blob Storage uploads from the browser (modern browsers)

    This should be possible once Microsoft adds CORS support to Azure's Blob Storage API. It's unclear at this time what features will be supported when uploading to Azure. The following questions remain until CORS support is added by Microsoft:

    • What about non-File-API browsers? Azure will need to support MPE requests via the API. It will also need to be able to allow the response to be redirected to another endpoint, so we can determine if the upload succeeded when uploading from older browsers via iframes.
    • What about chunking? Will Azure have a similar solution offered by S3 that allows files to be sent in chunks?

    The assumption/hope is that this will be very similar to the direct-to-S3 module (Fine Uploader S3) in concept, though the Azure API will likely differ from the S3 API.

    At the last BUILD conference, a promise of CORS support for Blob Storage by the end of the calendar year (2013) was made. This is mentioned on an MSDN blog discussing BUILD as well.

    This is blocked until CORS support is added by MS, and until the items mentioned above are clarified.

    feature 5 - Done Azure 
    opened by rnicholus 70
  • 13 - Support multiple simultaneous chunk uploads

    13 - Support multiple simultaneous chunk uploads

    For resumable uploads where the upload has been divided into chunks, support simultaneously uploading multiple chunks for a single upload at the same time (to increase upload speed)

    feature 5 - Done 
    opened by rodneytamblyn 60
  • 13 - Resize images and upload them automatically

    13 - Resize images and upload them automatically

    A good portion of this work was already completed in 4.0, but we may need to do some work to make it much easier for an integrator to allow submitted images to be resized client side and uploaded (possibly along with the original) transparently. I'm not sure offhand what specific improvements are required at this time. We need to discuss further.

    feature 5 - Done 
    opened by rnicholus 59
  • Adding typescript definition file

    Adding typescript definition file

    Brief description of the changes [REQUIRED]

    Adding TypeScript definitions allows integration with TypeScript based projects

    What browsers and operating systems have you tested these changes on? [REQUIRED]

    N/A

    Are all automated tests passing? [REQUIRED]

    I haven't written tests for this yet

    Is this pull request against develop or some other non-master branch? [REQUIRED]

    yes

    feature 3 - Doing integration 
    opened by singhjusraj 52
  • Discussion: pure-js (2.x) vs. jquery-js (3.x)

    Discussion: pure-js (2.x) vs. jquery-js (3.x)

    I make this topic to discuss about the pure-js ans jquery-js version of library.

    Supposedly will exists two versions of Fine Uploader:

    • 2.x will be pure-js
    • 3.x will be jquery-compatible

    My opnion is not do that. Will be maintenance be extremally hard and could create inconsistencies between versions. My suggestion is create a pure-js API and a wrapper in jQuery (all will be 3.x version).

    For instance:

    var up = qq.FileUpload(x);
    var up = jQuery.FileUpload(x); // -> call qq.FileUpload(x)
    

    Events, methods and vars need be the same to both.

    Files can be:

    • fileuploader.js
    • jquery-fileuploader.js (requires fileuploader.js)
    • prototype-fileuploader.js (requires fileuploader.js) -- for instance

    The desvantages will be couldn't use jQuery helpers. But can be create an advanced solution for that in files. For instance:

    • fileuploader.js (full version, core + helpers)
    • fileuploader-helpers.js (helpers only file, if you don't uses jQuery)
    • fileuploader-core.js (core only file)
    • jquery-fileuploader.js (requires fileuploader-core.js only)

    Or an include once, in build process.

    • fileuploader.js (full version, core + helpers version)
    • jquery-fileuploader.js (core + jQuery wrapper version)

    So you need include only one version.

    opened by rentalhost 50
  • iOS8 GM file input element does not allow files to be read client-side or uploaded to server

    iOS8 GM file input element does not allow files to be read client-side or uploaded to server

    This is a serious bug that prevents any sort of file uploads in iOS8 Safari. There is no known workaround. Below is the content of the bug report I filed with Apple.

    Summary: It seems like there is some issue with access to the files associated with an <input type="file"> element.

    A few big issues:

    1. FileReader can't seem to read any files associated with a <input type="file">.
    2. URL.createObjectURL with a file associated with the element returns an object URL that has no content when loaded.
    3. If files are uploaded to a server, even via a simple multipart-encoded form submit, no actual file bytes are sent with the request.

    None of these issues occurs in Chrome on iOS8, only Safari.

    Steps to Reproduce:

    1. Create a simple form with a file input and a submit button
    2. Create a simple PHP server that handles file uploads via a multipart encoded POST request.
    3. Load the page, select a file, press submit

    Expected Results: File is saved to the server.

    Actual Results: Either an empty file is saved to the server, or the page loading indicator spins forever after clicking submit due to the lack of file bytes included in the request by Safari.

    Version: 8.0 (12A365)

    Configuration: iPad

    3rd-party-bug 5 - Done 
    opened by rnicholus 43
  • iOS scaling bug

    iOS scaling bug

    I have created a JSFiddle to demonstrate the issue: http://jsfiddle.net/Q48cw/8/

    Normally, uploading a photo will result in a value for 'Bytes uploaded' after the upload. However, for some reason, on iOS when using the following example photo, it stays at zero: http://auto-expire.s3.amazonaws.com/bug/upload.JPG

    If you run this script locally and check the server request, the POST data would be empty.

    bug to fix 3rd-party-bug 5 - Done 
    opened by bjornbos 40
  • htmlspecialchars, responseJSON and HTML

    htmlspecialchars, responseJSON and HTML

    I was using an old AjaxUpload till I figured it out it needs to be upgraded. I just love this nice file/fine uploader. It's so simple to integrate into website.

    But it has one strange flaw. When PHP encodes special characters to entities (cos of iFrame limitations) javascript can not decode this response properly.

    Because I generate different html code (divs with delete button) for each file upload types, html needs to be perfect. How can I decode this html entities back in javascript or is there another way of doing that?

    Thanks!

    opened by borut-t 40
  • Re-design of demo page

    Re-design of demo page

    The current demo page is functional, but not very nice looking. It should probably:

    • contain more information/links about the project, such as link to releases page, link to master readme, perhaps an abridged version of the master readme, description of notable features and a summary of Fine Uploader, etc
    • contain code samples on the actual page (not a link to the demo js file)
    • not look like shit

    I've already pulled in twitter-bootstrap css. Perhaps I can make better use of this.

    It would be nice if someone could aid in this effort, perhaps someone a bit more skilled than myself in graphic design? Note that I have zero graphic design skills.

    enhancement documentation 
    opened by rnicholus 40
  • Fine Uploader is shutting down

    Fine Uploader is shutting down

    After almost 7 years of developing and maintaining this project, I've decided that it's time to archive this (and all other) repositories in the Fine Uploader organization and effectively shut down the project.

    I've decided to do this for a number of reasons, here are a few:

    1. I no longer have any use for an enterprise-class JS upload library like Fine Uploader in my personal life or in any work projects.
    2. I lack the motivation to continue to contribute to this project.
    3. I lack the free time at this point in my life to continue to maintain and develop a project of this scale, and the codebase has languished for a little while already.
    4. I've grown tired of continuously defending my inactivity and decisions against trolls on Twitter, the issue tracker, and elsewhere. It's draining and I don't have the patience or energy to deal with it any longer. These same people expect to impose their short-sighted and non-generalized values and goals on a project for which they have contributed nothing and are not willing to maintain. The sense of entitlement from a small but vocal minority that do not understand FOSS and refuse to understand it is very much a concern, and I'm simply not interested in shrugging that off anymore.
    5. There isn't sufficient momentum behind this project any longer, as such I haven't been able to find the appropriate dedication from the community to not only continue developing this library, but to maintain it going forward.
    6. The first incarnation of this codebase is almost 9 years old, and the last major refactor/rewrite was ~5 years ago. That's an eternity in frontend code years. The amount of time required to bring the codebase back up to speed and adjust the mistakes I made years ago as a new frontend developer are simply not possible, due to time and motivation constraints.

    I'm going to archive the project shortly, but anyone, of course, is free to fork it and do whatever they please, as this repo will still be available, albeit in read-only mode. I've also locked this issue, as I'm not soliciting input. I've created this for transparency purposes.

    For everyone that has helped out on this long journey, I appreciate your efforts, and I hope you understand that it's time for this project to fade off into the sunset. Fine Uploader was my first opportunity to develop something meaningful on the frontend, and I've been able to grow tremendously as a developer as a result. I know Fine Uploader has been an important attribute of many applications, and I'm glad I was able to be a part of that.

    opened by rnicholus 0
  • onError callback throws

    onError callback throws "this._uploadData.retrieve(...) is undefined"

    Type of issue

    • Bug report

    Uploader type

    • Traditional
    • S3

    Note: Support requests cannot be accepted due to lack of time.

    Bug Report

    Fine Uploader version

    5.16.2

    Browsers where the bug is reproducible

    Any browser

    Operating systems where the bug is reproducible

    macOS

    Exact steps required to reproduce the issue

    For example:

    1. Multiple uploads on
    2. validate on item limit (eg 3)
    3. Drag too many files (eg 4)

    All relevant Fine Uploader-related code that you have written

    Your Fine Uploader template markup (if using Fine Uploader UI and the issue is UI-related)

    {simply copy and paste your template markup}

    Detailed explanation of the problem

    {describe the bug here}

    [Fine Uploader 5.16.2] Caught exception in 'onError' callback - this._uploadData.retrieve(...) is undefined util.js:241:42 qq.log util.js:241:42 log uploader.basic.api.js:304:16 safeCallback uploader.basic.api.js:1964:20 _wrapCallbacks/</self._options.callbacks[callbackName] uploader.basic.api.js:1975:31 _batchError uploader.basic.api.js:502:12 _batchError uploader.api.js:662:12 _onValidateBatchCallbackSuccess uploader.basic.api.js:1684:16 qq.bind/< util.js:691:23 _handleCheckedCallback uploader.basic.api.js:1086:16 _prepareItemsForUpload uploader.basic.api.js:1723:12 _prepareItemsForUpload uploader.api.js:685:12 addFiles uploader.basic.api.js:110:16 processingDroppedFilesComplete uploader.api.js:150:28 uploadDroppedFiles dnd.js:29:8 onDrop/< dnd.js:180:24 then promise.js:32:16 onDrop dnd.js:178:61 attachEvents/< dnd.js:481:16 and therefore any callbacks hang then

    opened by gullevek 0
  • uploadStoredFiles() fails after adding blob (for autoUpload = false)

    uploadStoredFiles() fails after adding blob (for autoUpload = false)

    Type of issue

    • [x] Bug report

    Uploader type

    • [x] Traditional
    Bug Report

    Fine Uploader version

    5.16.2

    Browsers where the bug is reproducible

    "Firefox"

    Operating systems where the bug is reproducible

    "Windows 10"

    Exact steps required to reproduce the issue

    For example:

    1. Set autoUpload = false
    2. Add a blob addFiles([blob])
    3. Call uploadStoredFiles()

    All relevant Fine Uploader-related code that you have written

        // src is a base64 encoded image
        fetch(src)
          .then(res => res.blob())
          .then(blob => {
            uploader.methods.addFiles([blob]);
            uploader.methods.uploadStoredFiles();
          })
    

    Detailed explanation of the problem

    Blob uploads only work with auto upload. It fails if autoUpload is set to false and uploadStoredFiles() is called subsequently.

    It returns No files error

    opened by sujayjaju 0
  • Error when you use `stopOnFirstInvalidFile: true` option and native dialogs.

    Error when you use `stopOnFirstInvalidFile: true` option and native dialogs.

    Hi, thanks for this great library! I found one issue when using stopOnFirstInvalidFile and <dialog> elements in Chrome.

    Type of issue

    • [x] Bug report
    • [ ] Feature request

    Uploader type

    • [x] Traditional
    • [ ] S3
    • [ ] Azure
    Exception when you use `stopOnFirstInvalidFile: true` option and native dialogs.

    Fine Uploader version

    5.16.2

    Browsers where the bug is reproducible

    Chrome

    Operating systems where the bug is reproducible

    Windows 10

    Exact steps required to reproduce the issue

    1. Use validation.stopOnFirstInvalidFile: true because you don't want to stop uploading files when you select a lot of files and some of them don't pass validation (because their extensions is not provided in validation.allowedExtensions list)
    2. Use HTML 5.1 <dialog> element in template
    3. Drag and drop two files with extensions that are not specified on validation.allowedExtensions list
    4. Error in browser occurs, and uploader state is messed up (visible loader after you close dialog) image And when you close dialog, you got loader that's still visible image

    Looks that we try to call showModal on already opened HTMLDialogElement and this is causing error. Quick fix is to just not use <dialog> element and use alert or some other custom popup. But since <dialog> are in default templates and normally just works out of the box on Chrome it would be nice to have it working in this case also. I guess the best experience is to show second message after first one is close (to resemble behavior of alert calls) but simply showing first message and ignoring other would be ok too (at least there won;t be an error)

    All relevant Fine Uploader-related code that you have written

    Just parts of code, because I can;t share everything

    const fineUploader = new qq.FineUploader({
        element: element,
        template: templateDomElement,
        // .
        // .
        // .
        validation: {
            stopOnFirstInvalidFile: false,
            allowedExtensions: [
                'jpg', 'jpeg', 'png'
            ]
        },
        // .
        // .
        // .
        //showMessage: message => {
        //    alert(message);
        //}
    });
    
            <div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container">
                <div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar"></div>
            </div>
    
    .
    .
    .
            <dialog class="qq-alert-dialog-selector" style="margin-left:auto; margin-right:auto">
                <div class="qq-dialog-message-selector"></div>
                <div class="qq-dialog-buttons">
                    <button type="button" class="qq-cancel-button-selector">@Html.GetResource("Close")</button>
                </div>
            </dialog>
    

    Stack trace

    templating.js:1042 Uncaught DOMException: Failed to execute 'showModal' on 'HTMLDialogElement': The element already has an 'open' attribute, and therefore cannot be opened modally.
        at qq.Templating.showDialog (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:6:13421)
        at Object.showMessage (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:5:31111)
        at qq.FineUploader._itemError (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:5:28231)
        at qq.FineUploader._validateFileOrBlobData (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:3:14787)
        at qq.FineUploader._onValidateCallbackSuccess (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:3:11079)
        at Object.onSuccess (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:2:8652)
        at qq.FineUploader._handleCheckedCallback (http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:3:1001)
        at http://localhost:54080/Scripts/libs/fine-uploader/fine-uploader.min.js:3:5899
    
    opened by mpawelski 0
  • Add function to delete resume data per file

    Add function to delete resume data per file

    Type of issue

    • [ ] Bug report
    • [X] Feature request

    Uploader type

    • [X] Traditional
    • [ ] S3
    • [ ] Azure
    Feature Request

    Allow resume data to be removed for a particular file id/uuid to allow the possibility of restarting an upload without resuming.

    opened by bugspunny 0
  • Resume data (from getResumableFilesData())does not include key or progress

    Resume data (from getResumableFilesData())does not include key or progress

    Type of issue

    • [ ] Bug report
    • [X] Feature request

    Uploader type

    • [X] Traditional
    • [ ] S3
    • [ ] Azure
    Feature Request

    The getResumableFilesData() function could return a few extra bits of interesting information, e.g. the amount already uploaded, number of total parts, and the id of the localStorage key.

    In fact I think it might already be trying to add the key to the object but it is retrieving it from the wrong place (uploadData.key instead of just key): if (uploadData.key) { data.key = uploadData.key; } Would it be possible to also return these in the getResumableFilesData() data structure?

    opened by bugspunny 0
Releases(5.16.2)
Owner
Fine Uploader
Was: The world's best full-featured & customizable JavaScript file upload library. Project was shut down and archived for historical purposes in November 2018.
Fine Uploader
Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.

Dropzone is a JavaScript library that turns any HTML element into a dropzone. This means that a user can drag and drop a file onto it, and Dropzone wi

Dropzone 17k Dec 30, 2022
Moxiecode 5.6k Jan 1, 2023
FileAPI — a set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.

FileAPI A set of JavaScript tools for working with files. Get started Download the files from the dist directory, and then: <div> <!-- "js-fileapi-

Free and open source software developed at Mail.Ru 3.6k Jan 3, 2023
Multi Upload with Progress Bar in Vanilla JS

js-progress-bar-multi-upload Multi Upload with Progress Bar in Vanilla JS Youtube dersinde birlikte hazırladığımız çoklu progress barlı javascript upl

Tayfun Erbilen 11 Jun 10, 2022
A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API.

Flow.js Flow.js is a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API. (Demo) The library is de

HTML5 File upload 2.9k Dec 18, 2022
🌊 A flexible and fun JavaScript file upload library

A JavaScript library that can upload anything you throw at it, optimizes images for faster uploads, and offers a great, accessible, silky smooth user

pqina 13.2k Jan 3, 2023
runk is a simple file and folder sharer.

runk It is a simple file and folder sharer. It uses hyperswarm for sharing over network. Installation: Prerequisite: Node.js To mount, configured fuse

Amansinh Parmar 8 Mar 11, 2022
A simple React App that plays Public Domain TV shows and integrates with Twitch Chat for the controls.

Public Domain Television for Twitch This application plays movies from Public Domain Movies The current version is only used to play Cartoons, but can

Ravavyr 8 Mar 29, 2022
Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.

Dropzone is a JavaScript library that turns any HTML element into a dropzone. This means that a user can drag and drop a file onto it, and Dropzone wi

Dropzone 17k Dec 30, 2022
JavaScript Express.js app serving static vanilla JS. This sample app is used in Microsoft Docs to demonstrate how to integrate Azure Storage, Azure Cosmos DB, and Azure Active Directory.

JavaScript on Azure Learn Path - Module 2 - Deploying a basic app to Azure This Learn module requires the following Azure resources to deploy correctl

Azure Samples 13 Dec 31, 2022
Moxiecode 5.6k Jan 1, 2023
FileAPI — a set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.

FileAPI A set of JavaScript tools for working with files. Get started Download the files from the dist directory, and then: <div> <!-- "js-fileapi-

Free and open source software developed at Mail.Ru 3.6k Jan 3, 2023
Chat app using Azure Web PubSub, Static Web Apps and other Azure services

Chatr - Azure Web PubSub Sample App This is a demonstration & sample application designed to be a simple multi-user web based chat system. It provides

Ben Coleman 55 Dec 31, 2022
Make drag-and-drop easier using DropPoint. Drag content without having to open side-by-side windows

Make drag-and-drop easier using DropPoint! DropPoint helps you drag content without having to open side-by-side windows Works on Windows, Linux and Ma

Sudev Suresh Sreedevi 391 Dec 29, 2022
A student-made, student-tailored Firefox add-on for Veracross. Provides ease of navigation in Veracross, among with other quality of life features. More features in progress.

Check out the Chrome version! This release is version 1.0.0, so the only feature it has is clickable links to the dropbox from the classpage. Any comm

Webb School CS Club 3 Nov 25, 2022
The CCF Backstage Plugin is a tool to estimate energy use (kilowatt-hours) and carbon emissions (metric tons CO2e) from public cloud usage that is meant to be consumed as a plugin into a Backstage application

CCF Backstage Plugin Understand how your cloud usage impacts our environment and what you can do about it. This plugin brings the functionallity of th

Cloud Carbon Footprint 21 Nov 6, 2022
A refined tool for exploring open-source projects on GitHub with a file tree, rich Markdown and image previews, multi-pane multi-tab layouts and first-class support for Ink syntax highlighting.

Ink codebase browser, "Kin" ?? The Ink codebase browser is a tool to explore open-source code on GitHub, especially my side projects written in the In

Linus Lee 20 Oct 30, 2022
🔖 A drag-and-drop form builder for Bootstrap 4.

Bootstrap v4 Form Builder A drag-and-drop form builder for Bootstrap 4. ❓ Get Help There are few ways to get help: Please post questions on Stack Over

Bloggify 107 Dec 22, 2022
A Drag & Drop Form Builder base on Bootstrap v4.x

bsFormBuilder 一个基于 Bootstrap (v4.x) + JQuery 的、拖拽的表单构建工具。 特点 1、基于 Bootstrap (v4.x) + JQuery,简单易用 2、拖动的 html 组件,支持通过 Json 自定义扩展 3、组件的属性面板,支持通过 Json 自定义

Michael Yang 10 Aug 25, 2022