TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Satu tempat untuk semua akun Google Drive Anda: kuota digabung, file otomatis disimpan ke akun dengan ruang kosong terbesar, dapat dibuka lewat web, dan tersedia lewat REST API.
Translation pending
ProductivityPHP · TypeScriptGitHub @its-enpiiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Never Leaves Your Drive
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Never Leaves Your Drive. Aplikasi self-hosted yang menyatukan banyak akun Google Drive ke satu antarmuka — dengan REST API terbuka dan sistem API Key untuk integrasi.
EnStorage adalah centralized file storage dengan backend Google Drive multi-akun. EnStorage mengabstraksi kompleksitas mengelola banyak akun Drive menjadi satu antarmuka — pengguna cukup upload file, sistem otomatis memilih akun Google Drive mana yang paling tepat (free space terbesar).
Bagian dari ekosistem En-suite (EnCenter, EnVault, dsb), dengan REST API terbuka + sistem API Key sehingga bisa diintegrasikan ke aplikasi lain (n8n, mobile, script CLI, dll).
/s/{token} — file di Google Drive tetap PRIVATE.read | write | delete | full.en_<8-char-prefix>_<40-char-secret> — disimpan bcrypt.GET / POST / DELETE /api/v1/api-keys.owner & member.git clone https://github.com/enpii/enstorage.git
cd enstorage
cd backend
cp .env.example .env
composer install
# Generate APP_KEY (wajib — dipakai untuk enkripsi token OAuth)
php artisan key:generate
# Jalankan migrasi
php artisan migrate
# Seed user pertama (opsional)
php artisan db:seed
# Dev server
php artisan serve
cd web
cp .env.local.example .env.local
# Isi NEXT_PUBLIC_API_BASE & GOOGLE_CLIENT_ID
npm install
npm run dev # http://localhost:3000
cd mobile
cp .env.example .env.local
# Isi API_BASE & GOOGLE_CLIENT_ID
flutter pub get
flutter run
docker compose up -d
Akses:
http://localhost:3001http://localhost:8080/api/v1| Layer | Teknologi |
|---|---|
| Backend | Laravel 13, PHP 8.3, Sanctum 4, google/apiclient, intervention/image |
| Database | PostgreSQL 15 |
| Cache & Queue | Redis 7 |
| Web | Next.js 15 (App Router), React 19, MUI, Tailwind v4, TypeScript, i18next |
| Mobile | Flutter 3.22+, Riverpod 2, Dio 5, go_router 14 |
| Auth | Laravel Sanctum (cookie untuk web) + API Key (Bearer untuk mobile/external) |
| Storage | Google Drive OAuth2 (refresh token encrypted di DB) |
enstorage/
├── backend/ # Laravel API
│ ├── app/
│ │ ├── Http/Controllers/Api/
│ │ ├── Models/
│ │ └── Services/
│ ├── database/migrations/
│ └── routes/api.php
├── web/ # Next.js dashboard
│ └── src/
│ ├── app/(app)/
│ ├── components/
│ └── lib/
├── mobile/ # Flutter app
│ └── lib/
├── docs/ # Dokumentasi publik (lihat struktur di bawah)
└── docker-compose.yml # Stack produksi (web + backend)
| Dokumen | Untuk siapa | Isi |
|---|---|---|
| docs/getting-started.md | Semua developer | Setup lokal lengkap + troubleshooting |
| docs/architecture.md | Backend/systems engineer | High-level diagram, alur upload end-to-end |
| docs/database.md | Backend developer | Schema detail + relasi + enkripsi |
| docs/api.md | Integrator / front-end | Daftar endpoint + auth + contoh request |
| docs/development.md | Kontributor | Konvensi coding, testing, git workflow |
Dokumentasi API interaktif (Swagger/OpenAPI) tersedia di /api/documentation saat backend jalan.
backend/.env)APP_KEY= # wajib: php artisan key:generate
APP_URL=http://localhost:8080
FRONTEND_URL=http://localhost:3000
DB_PASSWORD= # password Postgres
GOOGLE_CLIENT_ID= # OAuth Web client (GCP)
GOOGLE_CLIENT_SECRET= # OAuth Web client secret (SERVER-SIDE ONLY)
web/.env.local)NEXT_PUBLIC_API_BASE=http://localhost:8080/api/v1
NEXT_PUBLIC_GOOGLE_CLIENT_ID= # OAuth Web client ID (public, boleh di-bundle)
mobile/.env.local)API_BASE=http://10.0.2.2:8080/api/v1 # Android emulator → host
GOOGLE_CLIENT_ID= # OAuth Web client ID untuk google_sign_in
⚠️ JANGAN taruh
GOOGLE_CLIENT_SECRETdi web/mobile — itu server-side only. Bundling-nya ke APK/JS = ekstraksi trivial.
# Backend
cd backend
php artisan migrate # jalankan migrasi
php artisan migrate:fresh --seed # reset + seed ulang
php artisan queue:work # jalankan worker (upload, thumbnail)
php artisan schedule:run # jalankan scheduled jobs
php artisan test # jalankan PHPUnit
# Web
cd web
npm run dev # dev server
npm run build && npm start # production build
npm run lint && npm run typecheck # quality gate
# Mobile
cd mobile
flutter pub get
flutter run
flutter test
flutter build apk # Android
flutter build ios # iOS
Fase development:
| Fase | Target |
|---|---|
| 1 | Foundation & Auth |
| 2 | Google Account & Quota |
| 3 | File & Folder Management |
| 4 | API Key & Integrasi |
| 5 | Web UI (Next.js) |
| 6 | Mobile App (Flutter) |
git checkout -b feat/nama-fiturgit commit -m "feat: deskripsi singkat"mainnpm run lint && npm run typecheck (web) dan php artisan test (backend) hijau.MIT — lihat LICENSE.