Giter VIP home page Giter VIP logo

cortx22's Introduction

FreeSheet

Effortlessly move and onboard csv data between Cortx and IPFS into autogenerated starter Jupyter lab notebooks.

Built for the CortX 2022 hackathon on devpost: https://seagate-cortx-hackathon2022.devpost.com/

Demo (youtube): https://youtu.be/tK_bkdXqsmw

Inspiration

There are not a lot of great web tools that support moving between a hosted s3 instance and IPFS. I wanted to build a prototype app that made it easy to transfer csv data between IPFS and S3, and immediately import that data into a functioning jupyter notebook directly from a web interface.

What it does

FreeSheet is an app to help you manage the world of IPFS-hosted data sets and authorized AWS Cortx instances effectively from a web UI.

FreeSheet also 'onboards' any of your files into dynamically generated jupyter notebooks so you can start working with that data immediately.

FreeSheet supports three main actions:

  • Upload - Upload a csv of data either directly to your CortX instance or IPFS.
  • Exchange - push data sets effortlessly from your Cortx or AWS-hosted node to IPFS.
  • Onboard - Onboard your IFPS data sets immediately into runnable starter Jupyter notebooks.

Running the project

FreeSheet requires both the front and backend service to be running with the access keys below available.

Client

Define the following environment variables:

    REACT_APP_STORAGE_KEY={YOUR WEB3 STORAGE KEY} # For connecting/uploading to IPFS.

Generate a web3.storage key here!

From the root folder: yarn; yarn start

The client (website) should now be running on port 3000.

Server

Define the following environment variables:

    FS_S3_URL={YOUR AWS S3 SERVER URL} #  (ex: on seagate/cortx)
    FS_ACCESS_KEY={YOUR AWS ACCESS KEY} # cortx access key (for use with s3 sdk)
    FS_SECRET_KEY={YOUR AWS SECRET KEY} # cortx secret key (for use with s3 sdk)

From the /server folder: yarn; yarn start

The server should now be running on port 3001.

You can also create a bucket in your conncted CortX instance using the command: yarn create

Verifying the end-to-end connection

If the front end is able to successfully connect to your running CortX or S3 instance, you should see a 'Connected' indicator here with the ability to select a bucket from the dropdown here. If you are not connected, a 'Not connected' indicator will show.

After this, you're ready to use FreeSheet as an interface to S3 and IPFS!

How we built it

  • ReactJS
  • AWS sdk with Cortx
  • Node.js / Fastify

Challenges we ran into

  • Integrating csv upload with the different data sources.
  • Creating a simple interface
  • Plugging in variable data source urls into pre-generated notebooks

Accomplishments that we're proud of

It works.

What we learned

  • How to connect to a running CortX instance
  • Dynamically generate a Python notebook from an arbitrary hosted data URL.
  • Manage file uploads with Fastify (Node.js)

Potential future work.

  • Extend the autogenerated python utilities and code based on uploaded data sets.
  • Push back data from IPFS into your S3 service.
  • Perform pre-built visualizations of uploaded data sets within the FreeSheet app.
  • Production hosting as a service (requires secure connections to your cortx/seagate system), or clone this repo and use it as a tool to connect to your S3 or CortX instance locally or within your private corporate network.

Screenshots

Home page

Upload to CortX / S3

Exchange between CortX and IPFS

Onboard dataset to python notebook from the app

Auto-generated python notebook

cortx22's People

Contributors

cbonoz avatar

Watchers

 avatar  avatar

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.