Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adeshinao/filebox
Simple web-based file storage project
https://github.com/adeshinao/filebox
Last synced: about 1 month ago
JSON representation
Simple web-based file storage project
- Host: GitHub
- URL: https://github.com/adeshinao/filebox
- Owner: adeshinaO
- License: mit
- Created: 2020-11-09T00:17:48.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-10T13:48:55.000Z (about 4 years ago)
- Last Synced: 2024-12-17T07:56:10.691Z (about 1 month ago)
- Language: Java
- Homepage:
- Size: 3.43 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
![build](https://github.com/abdulwahabO/filebox/workflows/build/badge.svg)
## Overview
A simple web-based file storage service built on top of AWS infrastructure. Users upload small files which are
stored on Amazon S3. File metadata and user data are persisted on a DynamoDB table. I chose DynamoDB for the
database because it's a good fit for the one-to-many relationship between users and files.User login is implemented using the OAuth 2.0 authorization code flow with Github as the authorization server.
User session is managed using browser cookies. To make things interesting I chose to implement the OAuth2 flow and
session management manually without using any of the robust integrations offered by the Spring Framework.![](filebox-demo.gif)
## Tech Stack
* Java 11 - The application backend code is written in Java.
* Spring Boot - An application server, web framework and HTML templating engine.
* AWS DynamoDB - NoSQL store for persisting user data and file metadata.
* AWS S3 - For secure storage of the actual files.
* AWS Elastic Beanstalk - For conveniently deploying the application to an AWS production environment.
* Bulma CSS - For the layout and styling of the user interface.## Deploying Locally
To deploy this project on your local machine you'll need a Github OAuth app and AWS credentials. Also, a Maven
profile (in `settings.xml`) with properties as shown below.
```xmlfilebox-local
{TODO}
{TODO}
{TODO}
{TODO}
{TODO}
{TODO}
{TODO}
{TODO}
```
The application can be started using the Spring Boot Maven plugin and passing the name of the Maven profile i.e
`mvn spring-boot:run -Pfilebox-local`.