This is a simple file sharing system similar to Google Drive. In this system anyone who signs up to be a user is able to upload, share and track multiple files.
NOTE: User roles and permissions will NOT be a part of the MVP.
Create a file sharing app powered by Java Spring Boot, React and the uses AWS's public cloud offereing to CRUD data. Once implemented, aspects of this repository will also serve as code samples that anyone that wants to build a system like this can learn from. During development, there will also be a series of blogposts that will be shared on the My Day To-Do blog. Below are some of the blogposts shared so far,
- Upload to AWS S3 bucket from Java Spring Boot app
- File share app - social file share feature
- How to build a Spring Boot API with reactjs frontend
This app is composed of a Spring boot API with a simple and function reactjs based UI. It features the following,
- New user sign up
- Upload and Manage files from cloud storaege
- Security with basic authentication
- Share uploaded files with other users
Show below is a screenshot of the simple reactjs based UI that allows, a user to login, upload, download, delete and share files.
The app is built using
- Java 17
- Spring Boot 3
- Spring Security
- Lombok
- AWS DynamoDB
- AWS S3
- CI/CD via Github actions
To run this spring boot project,
- Clone the repository and navigate to the repo directory
git clone git@github.com:cptdanko/file-sharing.git
cd file-sharing
- Open application.yml file in either VSCode or IntelliJ
- Update the following with your AWS credentials
aws:
region: <your AWS region e.g. 'ap-southeast-2'>
key: <your-key>
secret: <your-secret>
dynamo-db:
amazonDBEndpoint: <get yours from here https://docs.aws.amazon.com/general/latest/gr/ddb.html>
- Once you have setup everything, when running for the first time, execute the following,
mvn clean install package
- Then to run the app as you make changes, from the terminal, git bash or command line, run
mvn spring-boot:run
NOTE: : if you don't add your AWS credentials, the app will fail at startup when trying to create the DynamoDB beans.
By default this repo will only start the API that you can invoke via Postman, but if you want to start the full
monolithic web app with the react based UI, you need to edit the pom.xml file and remove the <puginsManagement>
tag.
If you have difficulty understanding anything about this repo, feel free to reach out to me through this Github account or at bhuman at mydaytodoDOTcom or bhuman.soni@gmail.com.
Have a read of some of the tutorials with code samples on my blog,
- Call Rest API with Spring WebClient
- Jokes API with Spring RestTemplate
- AWS DynamoDB how to (NodeJS/Express & Typescript)
- AWS DynamoDB query by non-primary (NodeJS/Express & Typescript)
and you can find more at https://www.mydaytodo.com/blog/
I will be writing a detailed tutorial on how to work with this repo on my blog. Until then refer to my blog for other tutorials and "how-to" articles with detailed code samples.
If you like what I am doing, you can buy me a coffee
Click on the next link for more info on the [software engineering career journey] of the author.