Skip to content

becloudway/onetimesharing

Repository files navigation

Safely share your secrets.

Screenshot

Introduction

Welcome to the official repository for OneTimeSharing! This open-source project aims to provide end-to-end encryption when sharing secrets over the web. The project was made open-source to provide transparency about how your secrets will be stored/handled in the application.

For more information on how to use OneTimeSharing, take a look at the Usage Guide

Table of Contents

Installation

Prerequisites:

  • Node.JS 18.X

First of all install the dependencies in all 3 parts of the application.

Frontend:

cd app
npm install

Lambda handlers:

cd handlers
npm install

Infrastructure:

cd infra
npm install

AWS CLI

When all the dependencies are installed, you need to configure the AWS CLI. First make sure you follow the guide here in order to successfully install the AWS CLI.

AWS CLI Credentials

When the CLI is successfully installed you need to give the AWS CLI credentials so that it has access to deploy the application using this guide here.

Deployment

If the AWS CLI is configured correctly, you should be able to successfully deploy the application by running the "deploy" script. This deploys a production and development environment, if you only wish to deploy one of the 2. You can use the designated scripts "deploy-prod" and "deploy-dev".

Deploy both production and development environment.

cd infra
npm run deploy

Deploy the production environment.

cd infra
npm run deploy-prod

Deploy the environment environment.

cd infra
npm run deploy-dev

Hosting

This application is fully integrated with AWS. For this reason it can only be deployed on the AWS platform. You can deploy the application on your own AWS account, for this you can follow the guide here.

How it works

The app section of the application will encrypt (based on the encryption type) the data. When the encryption is complete the app will then send the

The application is divided into 3 sections:

App
Handles the frontend (client-side) of the application. The frontend encrypts the data and sends this to the API for storage.

Handlers
These are the handlers for the Lambda functions, these will check if all the data is present for the requested encryption type and stores the secrets into the database as well as retreives them.

Infra
In this section the infrastructure is defined as code. For this the Amazon CDK is used to define all services necessary and deploy them.

Methods and Encryption

More technical information can be found in the Technical Usage Guide

We Develop with Github

We use github to host code, to track issues and feature requests, as well as accept pull requests.

Contribution guide

Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:

  1. Fork the repo and create your branch from main.
  2. If you've added code that should be tested, add tests.
  3. If you've changed APIs, update the documentation.
  4. Ensure the test suite passes.
  5. Issue that pull request!

Report bugs using Github's issues

We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!

Write bug reports with detail, background, and sample code

Great Bug Reports tend to have:

  • A quick summary and/or background
  • Steps to reproduce
    • Be specific!
    • Give sample code if you can. This stackoverflow question includes sample code that anyone with a base R setup can run to reproduce what I was seeing
  • What you expected would happen
  • What actually happens
  • Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)

License

MIT