An open API service indexing awesome lists of open source software.

https://github.com/tberey/ts-node-electron-aws-s3-app

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.
https://github.com/tberey/ts-node-electron-aws-s3-app

amazon amazon-web-services api aws aws-s3 buckets electron javascript node nodejs rest rest-api s3 s3-bucket s3-storage storage typescript

Last synced: 5 months ago
JSON representation

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.

Awesome Lists containing this project

README

          

[![Workflow][workflow-shield]][workflow-url]
[![Issues][issues-shield]][issues-url]
[![Version][version-shield]][version-url]
[![Stargazers][stars-shield]][stars-url]
[![Forks][forks-shield]][forks-url]
[![Contributors][contributors-shield]][contributors-url]
[![LinkedIn][linkedin-shield]][linkedin-url]





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.




Documentation »


View Demo
·
Report Bug
·
Request Feature

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
* [Typescript](https://www.typescriptlang.org/)
* [NodeJS](https://nodejs.org/en/)
* [Electron](https://www.electronjs.org/)
* [ExpressJS](https://expressjs.com/)
* [AWS](https://aws.amazon.com/)
* [EJS](https://ejs.co/)
* [Axios](https://axios-http.com/)
* [fs](https://nodejs.org/api/fs.html)
* [Rollbar](https://rollbar.com/)
* [SimpleTxtLogger](https://www.npmjs.com/package/simple-txt-logger)
* [ESLint](https://eslint.org/)
* [MochaChai](https://mochajs.org/)




## 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!](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

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

#### Installation
1. Clone/Download:
```sh
git clone https://github.com/tberey/ts-node-electron-aws-s3-app.git
```
2. Install:
```sh
npm install && npm update
```
3. Start:
```sh
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. |
  • "http://localhost:3000/"
| GET |
|
  • "/listBuckets"
| Lists all buckets that currently exist. |
  • "http://localhost:3000/listBuckets"
| GET |
|
  • "/findBucket"
| Attempt to find the passed bucket name. |
  • "http://localhost:3000/findBucket?bucket=BUCKET_NAME"
| GET |
|
  • "/listObjects"
| Lists all objects contained within a passed bucket, if the bucket exists. |
  • "http://localhost:3000/listObjects?bucket=BUCKET_NAME"
| GET |
|
  • "/findObject"
| Attempt to find passed object, in the passed bucket, if the bucket exists. |
  • "http://localhost:3000/findObject?bucket=BUCKET_NAME&object=OBJECT_NAME"
| GET |
|
  • "/createBucket"
| Create a new empty bucket, if one with the same name does not already exist. |
  • "http://localhost:3000/createBucket"
| POST |
|
  • "/uploadFile"
| Upload a local file to a specified bucket, if that bucket exists. |
  • "http://localhost:3000/uploadFile"
| POST |
|
  • "/downloadFile"
| Download a remote file from a specified bucket, if that bucket exists, and the file can be found. |
  • "http://localhost:3000/downloadFile"
| POST |
|
  • "/deleteBucket"
| Delete a passed bucket, if that bucket exists and it is empty. |
  • "http://localhost:3000/deleteBucket"
| DELETE |
|
  • "/emptyBucket"
| Empty bucket by deleting all containing objects, if the supplied bucket exists and not already empty. |
  • "http://localhost:3000/emptyBucket"
| DELETE |


### Screenshots

Logging Sample:

![Screenshot#1](https://github.com/tberey/ts-node-electron-aws-s3-app/blob/development/screenshots/local-logs-sample1.png?raw=true)




## Roadmap
Below is the refined and confirmed roadmap, that has been planned for completion. See [open issues][issues-url] and also the [project board][project-url], 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;

* [Issues & Requests][issues-url]
* [My Other Projects](https://github.com/tberey?tab=repositories)
* [Personal Website](https://tberey.github.io/)
* [Linked In](https://uk.linkedin.com/in/thomas-berey)


### Acknowledgements

* [Me](https://github.com/tberey)




TomCo™ (Technology & Online Media Company ©)

[workflow-shield]: https://github.com/tberey/ts-node-electron-aws-s3-app/actions/workflows/codeql-analysis.yml/badge.svg
[workflow-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/actions
[version-shield]: https://img.shields.io/github/v/release/tberey/ts-node-electron-aws-s3-app
[version-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/releases/
[stars-shield]: https://img.shields.io/github/stars/tberey/ts-node-electron-aws-s3-app.svg
[stars-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/stargazers
[contributors-shield]: https://img.shields.io/github/contributors/tberey/ts-node-electron-aws-s3-app.svg
[contributors-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/tberey/ts-node-electron-aws-s3-app.svg
[forks-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/network/members
[issues-shield]: https://img.shields.io/github/issues/tberey/ts-node-electron-aws-s3-app.svg
[issues-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/issues
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?logo=linkedin&colorB=555
[linkedin-url]: https://uk.linkedin.com/in/thomas-berey
[project-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/projects