https://github.com/zeptosec/thermastore
Cloud storage. Can store large amount of large files. Relies on discord webhooks and supabase for storage.
https://github.com/zeptosec/thermastore
cloud discord nextjs react storage supabase
Last synced: about 1 year ago
JSON representation
Cloud storage. Can store large amount of large files. Relies on discord webhooks and supabase for storage.
- Host: GitHub
- URL: https://github.com/zeptosec/thermastore
- Owner: Zeptosec
- Created: 2023-01-17T20:43:14.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-17T22:44:23.000Z (over 1 year ago)
- Last Synced: 2025-03-27T20:51:14.562Z (about 1 year ago)
- Topics: cloud, discord, nextjs, react, storage, supabase
- Language: JavaScript
- Homepage: https://thermastore.netlify.app
- Size: 4.55 MB
- Stars: 13
- Watchers: 2
- Forks: 5
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://app.netlify.com/sites/thermastore/deploys)
# Thermastore
Thermastore is a cloud storage which utilizes Discord for storing files. Here you can upload and organize your files. This project is powered by NextJS 13 for handling frontend and some of the back end, Supabase for saving information about stored files and protecting the database with RLS.
Discord has CORS setup. So to download files, watch videos and listen to audio you will need to use a proxy server [Streamer](https://github.com/Zeptosec/Streamer).
## How it works?
When uploading a file it is split up into pieces (around 25 MB) then each piece is uploaded to Discord server using webhook and attachment file id and channel id to which it was uploaded is stored into file and uploaded using the same webhook.
## Caveats
Storing files like this is not as safe as storing links to pieces directly into database, but this way it takes much less space in the database. Sadly uploaded files are accessible to anyone if they know file and channel ids which is very unlikely unless they have access to channel where the files were uploaded or you have shared the file with them.
## Features
A list of features that have been implemented. You can always suggest a feature in the [issues](https://github.com/Zeptosec/Thermastore/issues) tab.
| Description | Status |
| ------------ | :-----------: |
| Creating directories | ✔ |
| Moving files | ✔ |
| Moving directories | ✔ |
| Uploading multiple files | ✔ |
| Drag and Drop support | ✔ |
| Preview audio, video files ([Streamer](https://github.com/Zeptosec/Streamer)) | ✔ |
| Preview PDF <25 MB | ✔ |
| Play audio files from menu | ✔ |
| Upload pause/resume | ✔ |
| File search | ✔ |
| Directory uploads | ✔ |
## Getting started
To start clone this repository:
```sh
git clone https://github.com/Zeptosec/Thermastore.git
```
Then install required npm packages with:
```sh
npm install
```
Rename **env.local.example** to **env.local** and set the required values. You will need to setup a Supabase database with the required tables specified in [supabase.sql](supabase.sql)
After all of that is done you can finally start the project and hope for the best:
```sh
npm run dev
```