{"id":40824271,"url":"https://github.com/tberey/ts-node-electron-aws-s3-app","last_synced_at":"2026-01-21T22:11:06.298Z","repository":{"id":37182861,"uuid":"370126075","full_name":"tberey/ts-node-electron-aws-s3-app","owner":"tberey","description":"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.","archived":false,"fork":false,"pushed_at":"2023-02-03T20:01:03.000Z","size":2398,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"development","last_synced_at":"2023-03-04T09:55:02.983Z","etag":null,"topics":["amazon","amazon-web-services","api","aws","aws-s3","buckets","electron","javascript","node","nodejs","rest","rest-api","s3","s3-bucket","s3-storage","storage","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/tberey/ts-node-electron-aws-s3-app/blob/development/README.md","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tberey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2021-05-23T18:16:21.000Z","updated_at":"2021-08-04T16:47:32.000Z","dependencies_parsed_at":"2023-01-28T17:01:24.077Z","dependency_job_id":null,"html_url":"https://github.com/tberey/ts-node-electron-aws-s3-app","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/tberey/ts-node-electron-aws-s3-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-electron-aws-s3-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-electron-aws-s3-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-electron-aws-s3-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-electron-aws-s3-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tberey","download_url":"https://codeload.github.com/tberey/ts-node-electron-aws-s3-app/tar.gz/refs/heads/development","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tberey%2Fts-node-electron-aws-s3-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28645194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon","amazon-web-services","api","aws","aws-s3","buckets","electron","javascript","node","nodejs","rest","rest-api","s3","s3-bucket","s3-storage","storage","typescript"],"created_at":"2026-01-21T22:11:05.481Z","updated_at":"2026-01-21T22:11:06.291Z","avatar_url":"https://github.com/tberey.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n*** Using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Workflow][workflow-shield]][workflow-url]\n[![Issues][issues-shield]][issues-url]\n[![Version][version-shield]][version-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Forks][forks-shield]][forks-url]\n[![Contributors][contributors-shield]][contributors-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/tberey\"\u003e\n    \u003cimg src=\"public/assets/logo.png\" alt=\"TomCo (Technology \u0026 Online Media Company) Logo\" width=\"200\" height=\"100\"\u003e\n  \u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003cdiv align=\"center\"\u003e\u003ch1\u003eTS-Node-Electron-AWS-S3-App\u003c/h1\u003eA robust Electron application, that serves a REST API to interact with AWS S3.\u003c/div\u003e\n  \u003cdiv align=\"right\"\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/tberey/ts-node-electron-aws-s3-app/blob/development/README.md\"\u003e\u003cstrong\u003eDocumentation »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca href=\"#usage\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/tberey/ts-node-electron-aws-s3-app/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/tberey/ts-node-electron-aws-s3-app/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\" style=\"padding:4px;display:inline;border-width:1px;border-style:solid;\"\u003e\n  \u003csummary\u003e\u003cb style=\"display: inline-block\"\u003e\u003cu\u003eContents\u003c/u\u003e\u003c/b\u003e\u003c/summary\u003e\n    \u003col\u003e\n        \u003cli\u003e\n        \u003ca href=\"#about-this-project\"\u003eAbout\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#tech-stack\"\u003eTech Stack\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n        \u003ca href=\"#startup\"\u003eStartup\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\n        \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\n        \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#screenshots\"\u003eScreenshots\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#changelog\"\u003eChangelog\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#acknowledgements\"\u003eAcknowledgements\u003c/a\u003e\u003c/li\u003e\n    \u003c/ol\u003e\n\u003c/details\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- ABOUT THis PROJECT --\u003e\n## About This Project\nThis 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.\n\n### Tech Stack\n* [Typescript](https://www.typescriptlang.org/)\n* [NodeJS](https://nodejs.org/en/)\n* [Electron](https://www.electronjs.org/)\n* [ExpressJS](https://expressjs.com/)\n* [AWS](https://aws.amazon.com/)\n* [EJS](https://ejs.co/)\n* [Axios](https://axios-http.com/)\n* [fs](https://nodejs.org/api/fs.html)\n* [Rollbar](https://rollbar.com/)\n* [SimpleTxtLogger](https://www.npmjs.com/package/simple-txt-logger)\n* [ESLint](https://eslint.org/)\n* [MochaChai](https://mochajs.org/)\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- STARTUP --\u003e\n## Startup\nFor help or guidance in downloading and running the application, see the following subsections.\n\u003cbr\u003e\n\n#### Prerequisites\n[You must have npm (node package manager) and Nodejs installed on your system!](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)\n\n1. Setup npm:\n  ```sh\n  npm install npm@latest -g\n  ```\n\u003cbr\u003e\n\n#### Installation\n1. Clone/Download:\n  ```sh\n  git clone https://github.com/tberey/ts-node-electron-aws-s3-app.git\n  ```\n2. Install:\n  ```sh\n  npm install \u0026\u0026 npm update\n  ```\n3. Start:\n  ```sh\n  npm run start:app\n  ```\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\nThis 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).\u003cbr\u003eAs Such, simply install and run this application and the window will load automatically as if running an executable.\n\n| Endpoint | Action/Desc. | Full URI \u003ci\u003e(hosted locally, on some port; e.g.: 3000)\u003c/i\u003e | Request Type |\n|:---|:---|:---|:---|\n| \u003cul\u003e\u003cli\u003e\"/\"\u003c/li\u003e\u003c/ul\u003e | Empty response body, but returns a 200 status. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/listBuckets\"\u003c/li\u003e\u003c/ul\u003e | Lists all buckets that currently exist. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/listBuckets\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/findBucket\"\u003c/li\u003e\u003c/ul\u003e | Attempt to find the passed bucket name. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/findBucket?bucket=BUCKET_NAME\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/listObjects\"\u003c/li\u003e\u003c/ul\u003e | Lists all objects contained within a passed bucket, if the bucket exists. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/listObjects?bucket=BUCKET_NAME\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/findObject\"\u003c/li\u003e\u003c/ul\u003e | Attempt to find passed object, in the passed bucket, if the bucket exists. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/findObject?bucket=BUCKET_NAME\u0026object=OBJECT_NAME\"\u003c/li\u003e\u003c/ul\u003e | GET |\n| \u003cul\u003e\u003cli\u003e\"/createBucket\"\u003c/li\u003e\u003c/ul\u003e | Create a new empty bucket, if one with the same name does not already exist. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/createBucket\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/uploadFile\"\u003c/li\u003e\u003c/ul\u003e | Upload a local file to a specified bucket, if that bucket exists. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/uploadFile\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/downloadFile\"\u003c/li\u003e\u003c/ul\u003e | Download a remote file from a specified bucket, if that bucket exists, and the file can be found. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/downloadFile\"\u003c/li\u003e\u003c/ul\u003e | POST |\n| \u003cul\u003e\u003cli\u003e\"/deleteBucket\"\u003c/li\u003e\u003c/ul\u003e | Delete a passed bucket, if that bucket exists and it is empty. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/deleteBucket\"\u003c/li\u003e\u003c/ul\u003e | DELETE |\n| \u003cul\u003e\u003cli\u003e\"/emptyBucket\"\u003c/li\u003e\u003c/ul\u003e | Empty bucket by deleting all containing objects, if the supplied bucket exists and not already empty. | \u003cul\u003e\u003cli\u003e\"http://localhost:3000/emptyBucket\"\u003c/li\u003e\u003c/ul\u003e | DELETE |\n\n\u003cbr\u003e\n\n### Screenshots\n\nLogging Sample:\n\n![Screenshot#1](https://github.com/tberey/ts-node-electron-aws-s3-app/blob/development/screenshots/local-logs-sample1.png?raw=true)\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\nBelow 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.\n\n| Feature/Task/Bugfix | Details | Version \u003ci\u003e(if released)\u003c/i\u003e | Notes |\n|:---|:---|:---|:---|\n| \u003ci\u003eBug#1\u003c/i\u003e | \u003ci\u003eBug details...\u003c/i\u003e | \u003ci\u003e0.0.1\u003c/i\u003e | \u003ci\u003eexample#1\u003c/i\u003e |\n| \u003ci\u003eFeature#4\u003c/i\u003e | \u003ci\u003eFeature details...\u003c/i\u003e |   | \u003ci\u003eexample#2\u003c/i\u003e |\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CHANGELOG --\u003e\n## Changelog\n\n| Version | Date | Changes |\n|:---|:---|:---|\n| 1.0.0 | 2021-07-10 | \u003cul\u003e\u003cli\u003eInitial Commit.\u003c/li\u003e\u003cli\u003eAdd initial directory structure and files.\u003c/li\u003e\u003cli\u003eAdd Screenshots directory, and images.\u003c/li\u003e\u003cli\u003eCreate and format README.md\u003c/li\u003e\u003c/ul\u003e |\n| 1.0.1 | 2021-07-14 | \u003cul\u003e\u003cli\u003eReplace local SimpleTxtLogger with npm module SimpleTxtLogger.\u003c/li\u003e\u003cli\u003eUpdate Electron client script.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e |\n| 1.0.2 | 2021-08-03 | \u003cul\u003e\u003cli\u003eFix spelling.\u003c/li\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e |\n| 1.0.3 | 2021-08-04 | \u003cul\u003e\u003cli\u003eUpdate README.md\u003c/li\u003e\u003c/ul\u003e |\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\nContributions are welcomed and, of course, **greatly appreciated**.\n\n1. Fork the Project.\n2. Create your Feature Branch (`git checkout -b feature/Feature`)\n3. Commit your Changes (`git commit -m 'Add some Feature'`)\n4. Push to the Branch (`git push origin feature/Feature`)\n5. Open a Pull Request.\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n### Contact\n\n\u003cb\u003eTom Berey\u003c/b\u003e; \u003ci\u003eProject Manager, Lead Developer, Principal Tester \u0026 Customer Services\u003c/i\u003e;\u003cbr\u003etomberey1@gmail.com;\n\n* [Issues \u0026 Requests][issues-url]\n* [My Other Projects](https://github.com/tberey?tab=repositories)\n* [Personal Website](https://tberey.github.io/)\n* [Linked In](https://uk.linkedin.com/in/thomas-berey)\n\n\u003cbr\u003e\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n### Acknowledgements\n\n* [Me](https://github.com/tberey)\n\n\n\n\u003cbr\u003e\u003cbr\u003e\u003chr\u003e\u003cdiv align=\"center\"\u003eTomCo\u0026trade; (Technology \u0026 Online Media Company \u0026copy;)\u003c/div\u003e\n\n\n\n\n\u003c!-- SPECIFIC URLS - NEED CHANGING PER PROJECT --\u003e\n[workflow-shield]: https://github.com/tberey/ts-node-electron-aws-s3-app/actions/workflows/codeql-analysis.yml/badge.svg\n[workflow-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/actions\n[version-shield]: https://img.shields.io/github/v/release/tberey/ts-node-electron-aws-s3-app\n[version-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/releases/\n[stars-shield]: https://img.shields.io/github/stars/tberey/ts-node-electron-aws-s3-app.svg\n[stars-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/stargazers\n[contributors-shield]: https://img.shields.io/github/contributors/tberey/ts-node-electron-aws-s3-app.svg\n[contributors-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/tberey/ts-node-electron-aws-s3-app.svg\n[forks-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/network/members\n[issues-shield]: https://img.shields.io/github/issues/tberey/ts-node-electron-aws-s3-app.svg\n[issues-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/issues\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?logo=linkedin\u0026colorB=555\n[linkedin-url]: https://uk.linkedin.com/in/thomas-berey\n[project-url]: https://github.com/tberey/ts-node-electron-aws-s3-app/projects","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftberey%2Fts-node-electron-aws-s3-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftberey%2Fts-node-electron-aws-s3-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftberey%2Fts-node-electron-aws-s3-app/lists"}