---
description: >-
  This is a simple Document Management Web application. In this session, we will
  cover the setup part to integrate the Cognito User Pool and the Cognito
  Identity Pool with the application front-end.
---

# Introduction

## ServerlessDocs - Securely store your documents with AWS Serverless

{% hint style="danger" %}
This application is created for the demonstration purpose only :) Please check and validate all the configurations before you upload sensitive data. Remember AWS follows the Shared Responsibility model when it comes to security ([https://aws.amazon.com/compliance/shared-responsibility-model/](https://aws.amazon.com/compliance/shared-responsibility-model/)).&#x20;
{% endhint %}

This application is mainly created to showcase some of the best AWS Managed/Serverless Services like Amazon Cognito, API Gateway, Lambda, and DynamoDB. Below is the list of features that the app will support and we will be using various Amazon Cognito features to accomplish those using the Serverless-way.

* Organization or Whitelisted Users will be able to Signup
* Users can upload Public/Private Files from the web page
* Public files will be visible to all authenticated users
* Users can comment on public files or their own private files
* Users can share their private files with other users

{% hint style="warning" %}
I am using vanilla JavaScript, so don't get offended by the front-end code. The purpose of this doc is to show the walkthrough of various services to solve a use case and not create a state-of-art web application. JavaScript SDK still works, but I would recommend using [Amplify](https://docs.amplify.aws/lib/q/platform/js) instead.
{% endhint %}

## AWS Services we will use

* S3 - For web app hosting and to store actual files
* Cognito - For User Authentication and Authorization&#x20;
* Lambda - Wherever we need to run business logic
* IAM - To control access and other limitations
* API Gateway - For the APIs&#x20;
* Pinpoint - To send Emails

## Architecture Diagram

This is based on the implementation that I have so far, but this may change in the future.&#x20;

![](https://1642315733-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCam2LtfwWxgwwpbHcu%2F-MCfyUEEMwNev0gHxyjq%2F-MCg0mgUY23pGTqV_rmR%2FServerlessDocs.png?alt=media\&token=e21862a9-65d1-406a-a68e-800fd04916b3)

