Skip to content

This repository contains all the source code for a simple file sharing app powered by Java Spring Boot and AWS

License

Notifications You must be signed in to change notification settings

cptdanko/file-sharing-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Day To-Do - File sharing app

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.

Objective

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,

  1. Upload to AWS S3 bucket from Java Spring Boot app
  2. File share app - social file share feature
  3. How to build a Spring Boot API with reactjs frontend

Features

This app is composed of a Spring boot API with a simple and function reactjs based UI. It features the following,

  1. New user sign up
  2. Upload and Manage files from cloud storaege
  3. Security with basic authentication
  4. 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.

fileShareAppScreen

Tech stack

The app is built using

  • Java 17
  • Spring Boot 3
  • Spring Security
  • Lombok
  • AWS DynamoDB
  • AWS S3
  • CI/CD via Github actions

Setup and run

To run this spring boot project,

  1. Clone the repository and navigate to the repo directory
git clone git@github.com:cptdanko/file-sharing.git
cd file-sharing
  1. Open application.yml file in either VSCode or IntelliJ
  2. 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>
  1. Once you have setup everything, when running for the first time, execute the following,
mvn clean install package 
  1. 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.

How to run the monolithic web app with react based UI

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.

Any help?

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.

Tutorials

Have a read of some of the tutorials with code samples on my blog,

and you can find more at https://www.mydaytodo.com/blog/

More great tutorials and code samples

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.