
Demo Site
·
Deploy / Version Upgrade Guide
·
How to Deploy (Youtube)
## Table of Contents
- [What is this?](#what-is-this)
- [Why I made this?](#why-i-made-this)
- [Features](#features)
- [Known Issues](#known-issues)
- [File size limit](#file-size-limit)
- [No support for Google Docs, Sheets, and Slides](#no-support-for-google-docs-sheets-and-slides)
- [No support for Shortcut](#no-support-for-shortcut)
- [Encryption cause error](#encryption-cause-error)
- [Can't seek on audio and video preview](#cant-seek-on-audio-and-video-preview)
- [Shared Drive is not supported](#shared-drive-is-not-supported)
- [Might be Implemented](#might-be-implemented)
- [Internationalization / i18n](#internationalization--i18n)
- [Multiple drive](#multiple-drive)
- [Authentication](#authentication)
- [Running on Local](#running-on-local)
- [How to Contribute](#how-to-contribute)
- [Support and Donations](#support-and-donations)
- [License](#license)
## What is this?
`next-gdrive-index` is a Google Drive directory index.
The aim of this project is to simplify the process of sharing files using Google Drive, and also add some features that _I think_ is useful when sharing a files.
> This project are **HEAVILY INSPIRED** by [onedrive-vercel-index](https://github.com/spencerwooo/onedrive-vercel-index) by [SpencerWooo](https://github.com/spencerwooo).
## Why I made this?
> **TLDR;**
> It is cheaper to use Google Drive than other similar service
There are a lot cloud storage service like Onedrive, Dropbox, Mega, etc.
But, between all those service, I think Google Drive is a lot cheaper than others (at least in my region).
Here are the pricing comparison between free and cheapest plan
_Price are converted to IDR, since it's easier for me to compare this using my own currency_
| Service | Free plan | Paid plan | Price | Price to Storage | Transfer Quota |
| :--------------- | :-------------- | :-------- | :--------------------- | :------------------------------------------ | :------------: |
| **Google Drive** | 15GB | 2TB | 135k IDR
~112k IDR | 14.8GB / 1k / mo
17.8GB / 1k / yr | **X** |
| **Onedrive**\*\* | 5GB | 1TB | 96k IDR
80k IDR | 10.4GB / 1k / mo
12.5GB / 1k / yr | **X** |
| **Dropbox**\* | 2GB | 2TB | ~191k IDR
~159k IDR | 10.5GB / 1k / mo
12.5GB / 1k / yr | O |
| **MEGA** | **20GB** | 2TB | ~174k IDR
~145k IDR | 11.5GB / 1k / mo
13.8GB / 1k / yr | O |
> \* Price are in USD, and there are no regional price for IDR \
> \*\* There are no 2TB plan
By using this data, I picked Google Drive instead other service.
I know there are a lot of people selling cheap education account especially for Google Drive and Onedrive, but most of the time those account doesn't last long.
## Features
- **Private Index**, protect the whole site with a password
- **Folder and file protection**, protect certain path with a password
- **Readme file**, add description (or whatever) inside a readme to be rendered when you open the folder
- **File preview**, preview the file before download ( Preview file size limit can be adjusted )
- Image preview
- Video preview
- Audio preview
- Document preview
- Code / Text / Markdown preview
- Manga preview (cbz)
- **Embed media**, embed media like video or audio to your site
- **File search**, search by the file or folder name
- **Direct download**, download directly via API route instead of google drive link ( Size limit can be adjusted )
- **Raw file link**, embed your media files
- **Light/Dark mode**, choose your side!
- **Customizable Theme**, we are using `shadcn/ui` now! you can customize your site with the theme you like
- **Links**, add social, or information link on the navbar
- **Sponsors**, using this for thing for community? add a sponsor / donate button on your navbar!
## Known Issues
### File size limit
> [!INFO]
> This only apply if `maxFileSize` is enabled / more than 0
You need to set the file sharing permission to `Anyone with the link can view` on the root folder.
**Why?**
The download link will be redirected if the file you're trying to download is bigger than the `maxFileSize`, and most of platform are limiting the response body size (ex: Vercel limit is 4MB).
If you don't set the permission, people can't access or download the file.
> [!WARNING]
> This will **expose the file ID**
> While they can view the file directly from Google Drive, they can't see or browse the folder that contains the file from Google Drive.
### No support for Google Docs, Sheets, and Slides
For now, I don't have any plan to implement this, because I think it's not necessary.
### No support for Shortcut
While I think it's important, I don't have any plan to implement this for now.
### ~Encryption cause error~
~~It seems the configurator are generating wrong encrypted folder ID, so it will cause error when you try to access the folder.~~
Should be fixed on v2.0.4, waiting for feedback / confirmation
### ~~Can't seek on audio and video preview~~
~~It looks like you can't seek the audio and video preview, so you need to listen / watch from the beginning.~~
Fixed on v2.0.2
### ~~Shared Drive is not supported~~
~~I don't have Shared Drive, so I can't test it and implement it~~
Implemented by [@loadingthedev](https://github.com/loadingthedev) [(PR #4)](https://github.com/mbahArip/next-gdrive-index/pull/4)
## Might be Implemented
Here are things that I want, and might be implemented on the future
### Internationalization / i18n
It should be a good idea to have the site and deploying guide with multiple language support.
### Multiple drive
It's either from multiple Google Drive account with multiple Service Account, or a basic single Google Drive account with multiple root start point either in their own Drive or Shared Drive
### Authentication
Probably a good feature if you are a content creator that only want the one who subscribed to you get the files.
It might need a database, but idk if I can implement it without the need of database
## Running on Local
- **Clone the repository**
`git clone https://github.com/mbaharip/next-gdrive-index.git`
`cd next-gdrive-index`
- **Install required dependencies**
`npm install`
`yarn install`
- **Add environment file**
- **Using Configuration**
- Open [Deploy guide page](https://drive-demo.mbaharip.com/deploy#config)
- Scroll to the bottom to see the configuration form
- Fill out the form and download the file
- Extract the `.env` file to the root folder
- **Using example file**
- `cp .env.example .env`
- Fill out everything
- Run the app
`npm run dev`
`yarn dev`
- Check the app on `http://localhost:3000`
## How to Contribute
Want to add new feature or improve the existing one? or you find a bug and fixed it yourself?
- Please check the issue tab first to see if someone already reporting a bug, or if you want to check any new feature / enhancement that not yet implemented
- Use code base from the latest version branch instead of the `main`, since it was made for development on current version
- Create a Pull Request, and wait for me checking your code
## Support and Donations
If you think I deserve it, you can support me by:
- [Paypal (USD)](https://paypal.me/mbaharip)
- [Ko-fi (USD)](https://ko-fi.com/mbaharip)
- [Saweria (IDR)](https://saweria.co/mbaharip)
## License
This project is licensed under the AGPL-3.0 License - see the [LICENSE](LICENSE) file for details.