Skip to content

A robust HTTP REST API, to interact with AWS S3 Buckets. This is a full stack solution, in an Electron desktop application, or as a browser based app.

Notifications You must be signed in to change notification settings

tberey/ts-node-electron-aws-s3-app

Repository files navigation

Workflow Issues Version Stargazers Forks Contributors LinkedIn


TomCo (Technology & Online Media Company) Logo

TS-Node-Electron-AWS-S3-App

A robust Electron application, that serves a REST API to interact with AWS S3.
Contents
  1. About
  2. Startup
  3. Usage
  4. Roadmap
  5. Changelog
  6. Contributing
  7. Contact
  8. Acknowledgements


About This Project

This is a Electron application, built in Node and TypeScript, that delivers a client a REST API to fully interact with AWS's S3 buckets. This is not a web application directly, but it is a web-app packaged into an Electron window, that runs like an executable, using Chromium browser tech.

Tech Stack




Startup

For help or guidance in downloading and running the application, see the following subsections.

Prerequisites

You must have npm (node package manager) and Nodejs installed on your system!

  1. Setup npm:
npm install npm@latest -g

Installation

  1. Clone/Download:
git clone https://github.com/tberey/ts-node-electron-aws-s3-app.git
  1. Install:
npm install && npm update
  1. Start:
npm run start:app




Usage

This is a electron application, which means it runs on your system, rather than a browser web app (yes, electron is technically just doing what a web browser does).
As Such, simply install and run this application and the window will load automatically as if running an executable.

Endpoint Action/Desc. Full URI (hosted locally, on some port; e.g.: 3000) Request Type
  • "/"
Empty response body, but returns a 200 status. GET
  • "/listBuckets"
Lists all buckets that currently exist. GET
  • "/findBucket"
Attempt to find the passed bucket name. GET
  • "/listObjects"
Lists all objects contained within a passed bucket, if the bucket exists. GET
  • "/findObject"
Attempt to find passed object, in the passed bucket, if the bucket exists. GET
  • "/createBucket"
Create a new empty bucket, if one with the same name does not already exist. POST
  • "/uploadFile"
Upload a local file to a specified bucket, if that bucket exists. POST
  • "/downloadFile"
Download a remote file from a specified bucket, if that bucket exists, and the file can be found. POST
  • "/deleteBucket"
Delete a passed bucket, if that bucket exists and it is empty. DELETE
  • "/emptyBucket"
Empty bucket by deleting all containing objects, if the supplied bucket exists and not already empty. DELETE

Screenshots

Logging Sample:

Screenshot#1




Roadmap

Below is the refined and confirmed roadmap, that has been planned for completion. See open issues and also the project board, for any other proposed features or known issues, which may not be listed below.

Feature/Task/Bugfix Details Version (if released) Notes
Bug#1 Bug details... 0.0.1 example#1
Feature#4 Feature details... example#2




Changelog

Version Date Changes
1.0.0 2021-07-10
  • Initial Commit.
  • Add initial directory structure and files.
  • Add Screenshots directory, and images.
  • Create and format README.md
1.0.1 2021-07-14
  • Replace local SimpleTxtLogger with npm module SimpleTxtLogger.
  • Update Electron client script.
  • Update README.md
1.0.2 2021-08-03
  • Fix spelling.
  • Update README.md
1.0.3 2021-08-04
  • Update README.md




Contributing

Contributions are welcomed and, of course, greatly appreciated.

  1. Fork the Project.
  2. Create your Feature Branch (git checkout -b feature/Feature)
  3. Commit your Changes (git commit -m 'Add some Feature')
  4. Push to the Branch (git push origin feature/Feature)
  5. Open a Pull Request.




Contact

Tom Berey; Project Manager, Lead Developer, Principal Tester & Customer Services;
tomberey1@gmail.com;


Acknowledgements




TomCo™ (Technology & Online Media Company ©)