# AIC Federated Storage Project

## Teammembers

+ Tobias Eidelpes (01527193)
+ Manuel Hude (01502712)
+ Martin Schett (01633073)
+ Martin Weick (01627760)
+ Marco Zeisler (01628030) 


## Who worked on what?

+ Tobias Eidelpes - Update Functionality, Docker Deployment, AWS Config, Presentation 2
+ Manuel Hude - Mongo DB CRD, Parts IoT Client, Docker Deployment, Presentation 1
+ Martin Schett - IoT Client, Recovery Logic, AWS Config, Dropbox Service, Presentation 1
+ Martin Weick - AWS Service, IoT Client Simulation, Presentation 2
+ Marco Zeisler - Hashing, User Frontend, Presentation 2

## How to start the program

* In the project root run: `docker-compose up -d`
* Go to `http://localhost:8080` for the frontend
* Run `docker ps` to see the container ID of the image aic_g4t2_iot_client
* Enter `docker exec -it <ContainerID> /bin/bash` to enter the shell of the iot_client
* Get a usage message by entering `help`


## Technologies used

* Python 3.8.6 with Django for the backend
* Angular 9 for the frontend
* Dropbox API for an image storage
* AWS S3 as an object storage
* MongoDB as a metadata storage

## Detailed description of a usecase

Follow: [How to start the program](#How-to-start-the-program) to setup the program. To simulate that a device sent some 
picture enter `trigger` into the iot_client. You can now see the pictures distributed over the 
different storages. Write `set 0` to position the cursor to the first image sent. Issue `update` to update the image. 
The new image shows up in the dashboand and a new version in the corresponding storages is created. Navigate  to the Map 
in the frontend to see a location marker where the image was taken.


## Credentials for AWS and Dropbox

### AWS
* Login URL: https://www.awseducate.com/student/s/
* Mail: e1633073@student.tuwien.ac.at
* Passwort: OH2uMfNTwlOYBB364zqf!
* Bucket: https://s3.console.aws.amazon.com/s3/buckets/aic-fun-bucket-2020?region=us-east-1&tab=objects

### Dropbox

* Username: e01633073@student.tuwien.ac.at
* Password: aicdropboxpassword
