A public open source S3 explorer for public/private buckets that can be deployed anywhere.

Overview

AWS S3 Explorer

This is an S3 Explorer for AWS. It provides a simple and straightforward way for users to login using SSO and explore available S3 Buckets. Everything is done in the browser and requires only minimal setup using either AWS Cognito or Authress.

Rhosys hosts an explorer to use out of the box for the community. For obvious security reasons, this is a UI only tool, and makes ZERO api calls to anywhere other than AWS. The following is a link to that explorer. However, if for some reason, other than security there is a benefit to hosting a clone of this, feel free to fork the repo and make any necessary changes. Alternatively, please contribute!

Go to the => AWS S3 Explorer

Folder selected screen

The only setup step

Jump over to the AWS S3 explorer configuration to deploy the Cognito CFN template, and configure your SSO provider. That's it!

Screenshots

View all objects in folder: Folder selected screen

View all objects in bucket: Bucket traversal screen

Upload objects to a bucket: Bucket upload request screen

Upload objects to a bucket succeeded: Bucket upload confirmation screen

Delete objects from a bucket: Bucket object delete request screen

Delete objects from a bucket succeeded: Bucket object delete confirmation screen

Contribution

Development

This project uses Vue 3, and as this is much different from Vue 2, recommend reading is available:

Comments
  • Custom Domain Settings for S3 bucket

    Custom Domain Settings for S3 bucket

    Thanks for sharing this project. I am trying to set up a Cognito access to one of my private S3 buckets so that Cognito users can view contents of the bucket and download contents. Your projects appears to be best fit for my requirements. I have set up as per your instructions and added generated callback url to Cognito app client settings. Then I created a user pool and when I try to sign in I see an error message. Also, not sure at what stage I can point to my private bucket. Please, let me know what I'm missing. Thanks image

    opened by melnur 16
  • Integration with existing Cognito User Pool

    Integration with existing Cognito User Pool

    @wparad thanks for batch download feature. I was trying to integrate the app with existing Cognito user pool. I tried to edit configuration file in S3 bucket and edit S3_Explorer_Authenticated_User-${AWS::Region} to associate with identityPoolId (trust relationship conditions). However, it didn't work. When I try to go to my app, it is still going to CF created Amazon Cognito domain rather than existing one (which I definedin config file). I assume it is because, Cloudfront is directing there. I couldn't figure out how to use an existing user pool so far. Not sure even if it is possible. Please, let me know if that can be implemented. Thanks in advance

    opened by melnur 14
  • Add Search widget for easy searching within the displayed bucket prefix items

    Add Search widget for easy searching within the displayed bucket prefix items

    Hi!

    Would it be possible the have the v2-alpha version from AWS with this cognito integration? https://github.com/awslabs/aws-js-s3-explorer/tree/v2-alpha

    opened by roening 5
  • Async S3 listing

    Async S3 listing

    Hi,

    When we try to access a folder with many objects, it takes a long time without showing anything on the page. To the user, it looks like the folder is empty. In AWS alpha-v2 repo, the listing is paginated and the contents of the first page are shown while the application is still listing the contents of the folder.

    Would it be possible to add this change?

    opened by roening 1
  • Call refresh function if current bucket is present

    Call refresh function if current bucket is present

    Hi @wparad.

    I noticed the following behavior after login to the app.

    Even if the store.currentBucket value contains the name of a bucket, you must click on the Refresh button to display the contents of the bucket.

    The idea I propose is to call the refresh function if the store.currentBucket value is filled.

    onMounted(async () => {
      if (store.loggedOut) {
        store.showSettings = true;
        store.globalLoader = false;
        return;
      }
    
      if (!store.initialized) {
        await login();
        await fetchSharedSettings();
        store.globalLoader = false;
    
        if (!store.tokens) {
          store.showSettings = true;
          store.objects = [];
          return;
        }
    
        if (!store.currentBucket) {
          if (getBuckets().length) {
            store.currentBucket = getBuckets()[0].bucket?.trim().toLowerCase();
            return;
          }
          store.showBucketSelector = true;
          store.objects = [];
    
          return;
        }
        // Call refresh() function if store.currentBucket contains a bucket name
        else {
          refresh()
        }
      }
      store.globalLoader = false;
    });
    
    opened by Manouchka94 1
  • Display percentage of data uploaded

    Display percentage of data uploaded

    Hello @wparad,

    I use your project to upload big files (100 mo and more) to S3 bucket. During the upload step the percentage of data uploaded is initially fixed at 0% and when upload is finished it's set to 100%.

    In the progressUpdatedHandler function in uploadModal.vue file I use two properties of the evt (evt.loaded and evt.total) to calculate the percentage of data uploaded.

    Thus, the percentage value is updated dynamically and helps to follow the progress of the upload for big files. What do you think about this proposal ?

    const progressUpdatedHandler = evt => {
      DEBUG.log('File:', file, 'Part:', evt.part, evt.loaded, 'of', evt.total);
      // Use evt.loaded and evt.total to calculate the percentage of data uploaded
      state.completionPercentageMap[fileIndex] = Math.round((evt.loaded * 100) / evt.total);
    };
    
    opened by Manouchka94 1
  • Replace BootBox

    Replace BootBox

    Alerts from bootbox are always met with the same error:

    TypeError: Cannot read properties of undefined (reading 'extend')
        at f (VM87:1)
        at m (VM87:1)
        at Object.u.alert (VM87:1)
        at VM86:1
    
    opened by wparad 0
  • Running locally

    Running locally

    Hi @wparad,

    Is there any way to run this locally as when I try to build, it launches SAM and Cloudformation to provision resources on AWS? Is there any way, to run it locally like any other vue app? Please, let me know. Thanks

    opened by mengo-eng 3
  • Enable sorting S3 objects by date

    Enable sorting S3 objects by date

    Hi @wparad . How easy is to sort objects by last modified date (or perhaps toggle sorting ascending - descending on column headers click)? I have tried to change

    const sortedObjects = computed(() => store.objects.sort((a, b) => a.key.localeCompare(b.key)));
    

    to

    const sortedObjects = computed(() => store.objects.sort((a, b) => new Date(a.date) - new Date(b.date)));
    

    and

    <tr v-for="path in sortedObjects.filter(o => o.type === 'PATH' && o.key.split(store.delimiter).slice(-1)[0])"
      :key="path.key">
    

    to

    <tr v-for="path in sortedObjects.filter(o => o.type === 'PATH' && o.key.split(store.delimiter).slice(-1)[0])"
      :key="path.lastModified">
    

    something like that. Vue and JS are not really area of my specialty so I might have done something completely wrong hence it didn't work. Please, let me know if that can be implemented by changing lines above? Thanks

    opened by melnur 5
Dockerizable Vue 3 framework on Nginx which can be deployed to Cloud like Azure.

vue-docker-azure Dockerizable Vue 3 framework on Nginx which can be deployed to Cloud like Azure. Technologies Used Vue3, Vue-cli, Pinia, Axios, Devex

Hyunbae 2 May 19, 2022
seikatsu nft website. built with vue deployed with firebase. includes a metamask plugin extension injects the Ethereum web3 API into every website's javascript context, so this dapp can read from the blockchain

seikatsu nft website. built with vue deployed with firebase. includes a metamask plugin extension injects the Ethereum web3 API into every website's javascript context, so this dapp can read from the blockchain

Alisha Husain 2 Sep 28, 2022
Source code for a deployed web application

lisper.ch-Ekagra: The full source code for the webapp @https://lisper.ch/Ekagra (online yoga lessons) Why? This is not by any means a showcase of my p

Salvatore Uras 10 Jun 12, 2022
GenVue is a hostable, web application that lets confidential users upload and share private files. Tech stack: Net Core 2.0 + Vue.js + Vuex + OpenIddict + Vuetifyjs + EF + SQLServer/Postgress

Asp.NETCore 2.0 Vue 2 with WebApi Authorization Starter template This repo contains an AspNetCore 2.1 + Vue.js 2 starter template (VS2017) + NetCore W

Adam Adamczyk 128 Dec 15, 2022
Torrust - a suite of client-server software for hosting online (private) torrent indexes

Torrust Project Description Torrust is a suite of client-server software for hosting online torrent indexes. Torrust only works with the torrust track

Torrust 99 Dec 20, 2022
Send your loved ones a vibe with a lovely sound, so they know you miss them. Anytime you want to, anywhere they are.

An app to send your loved one a vibration with a lovely sound, so they know you miss them. Anytime you want to, anywhere they are.

fotiecodes 32 Aug 6, 2022
Remote control Windows machine from anywhere powered by UltraVNC Server and Piping Server

piping-vnc-server-for-windows Remote control Windows machine from anywhere powered by UltraVNC Server and Piping Server How to use Suppose that Window

Ryo Ota 8 Dec 26, 2022
A feature-rich Portal Plugin for Vue 2, for rendering DOM outside of a component, anywhere in your app or the entire document.

PortalVue A Portal Component for Vuejs, to render DOM outside of a component, anywhere in the document. For more detailed documentation and additional

Thorsten Lünborg 3.7k Jan 6, 2023
Simple portal component which allows to mount component anywhere.

vue-simple-portal Simple portal component which allows to mount component anywhere. This component only does one thing that already existed in portal-

EGOIST 6 Dec 1, 2019
A single-page web-app made to browse and download your Netlify deploys. Built with Vue.js and Vite, deployed on Netlify.

A single-page web-app made to browse and download your Netlify deploys. Built with Vue.js and Vite, deployed on Netlify.

Hrishikesh Kokate 0 Aug 30, 2022
github-explorer(vue)

github-explorer Rebuild with Vue 2.1 Introduction THIS github-explorer is based on Vue. You can check out the ORIGINAL version, which is based on Reac

Sid 118 Nov 17, 2022
🐙🔍 VueJS 2 Github Explorer Using API v3

Vue-Github-Explorer Technology Used API by Github v3 https://developer.github.com/v3/ Vue.js Vue-Router Axios Webpack Development Checkout Code : git

Irfan Maulana 53 Dec 25, 2022
⚡️ Icon Explorer with Instant searching, powered by Iconify

Icônes Icon Explorer with Instant searching, powered by Iconify Go to App Electron is comming... Dark Mode is now Live! Features Instant Fuzzy Searchi

Anthony Fu 2.8k Dec 29, 2022
Technical (JSON viewer) explorer for XRPL devs. Click on account / hash / ... to zoom in.

XRP Ledger Technical Explorer A technical (geeky) JSON viewing explorer for the XRP Ledger. BETA! Early beta of a new (technical) tx / ledger / object

XRP Ledger Foundation (Official) 8 Dec 19, 2022
MQTT5 Explorer is a simple yet feature-rich client to visualize data of any MQTT broker.

MQTT5 Explorer About this project Project setup npm install Compiles and hot-reloads for development npm run electron:serve Generate app icons npm run

null 6 Dec 28, 2022
JavaScript and Vue based ICICB explorer.

JavaScript and Vue based ICICB explorer.

Galaxy developer Team 10 Jan 6, 2022
Icpscan is a Block Explorer and Analytics Platform for Dfinity, ICP is a global computing platform.

Icpscan is a Block Explorer and Analytics Platform for Dfinity Project includes: Transactions (Search) Project (Project) Rank (ICP Holder Address Rank

NnsDAO Labs 20 Jul 16, 2022
An Electron File Explorer made with Quasar v2 (Vue v3)

File Explorer (electron-quasar-file-explorer-v2) This is a follow-up to an article I wrote and published on Medium. This File Explorer now uses Quasar

Jeff Galbraith 23 Dec 13, 2022
This project allows each person to write down their goals. You can add multiple lists that you want to run. After you complete a goal from the list, you can delete it.

This project allows each person to write down their goals. You can add multiple lists that you want to run. After you complete a goal from the list, you can delete it.

null 2 May 22, 2021