We’re in a digital economy where data is more valuable than ever. It’s the key to the smooth functionality of everything from the government to local companies. Without it, progress would halt. With data becoming enormous so is the requirement for better storage systems.
Therefore building a storage system and understanding the difficulties faced is an important step for research & improvements in the storage technologies.
To trigger curiosity and the critical thinker within you, we at Cloudwiry have decided to formulate this into a hackathon.
- User authentication and session management
- Implementation of the blob storage server
- Client application (CLI/ web based) for file upload, download, rename and delete
- User based access control on who can access the files
- Deploy the application
- (optional - bonus points) - File compression
- FastApi ( Server Implementation )
- React ( UI Implementation )
- Redux ( State Management )
- fluentui/north-star ( UI Components )
- SqlAlchemy ORM ( Database ORM )
- Github Action with Heruko ( Continous Deployment )
- Clone the Project. Following Command Can be used for this purpose -
$ git clone https://github.com/sachinsom93/Blob-Storage-Server-Cloudwiry-Hackathon-2022.git
- Change the present directory to cloned project directory.
$ cd Blob-Storage-Server-Cloudwiry-Hackathon-2022
- Fork, Clone and go inside project directory.
- Important Step Change the
.sampleenv
to.env
. - Create and Enable
virtualenv
.
# Create virtual env
$ virtualenv venv
# activate venv (For Windows)
$ venv\Scripts\activate
- Install the project dependencies. Use the following command.
$ pip install -r requirements.txt
- Run the Server.
$ uvicorn backend.main:app --reload
- Fork, Clone and go inside project directory.
- Go inside
frontend
directory.
$ cd frontend
- Install npm dependencies.
(frontend) $ npm install
- Start react server.
(frontend) $ npm start
- User can create accound and login into account.
- User can upload files.
- User can rename, delete and download any file.
- User can share files with other users.
- Other users can also rename, download the shared file.
- User can logout.
- User (John) logs in to the application using username and password (Authentication to happen over HTTP/HTTPS using REST API)
- John can now view all the files he has access to and has uploaded
- John decides to upload a new file on to the storage system
- John later decides to share that file with 2 other users (Alice & Bob)
- When Alice/Bob login into the system, they should be able to view the file.
- Alice decides to download the file onto her device.
- John renames the file and deletes it later on
- John exits & logout of the application
- General coding standards & usage of git
- Blob storage system implementation
- Database design
- Originality & creativity
- Working & Demo of the application