Temporary file sharing with privacy-first controls.
- Next.js (App Router)
- NextAuth.js (credentials + Google)
- MongoDB
- Cloudflare R2 (single or multi-account)
- Tailwind CSS + DaisyUI
- Auth: email/password + Google
- Upload with quota checks and progress
- File manager: folders, search/sort/filter, bulk actions, preview
- Share links: expiry, password, max downloads, regenerate, revoke
- My Links page with QR codes
- Dashboard analytics (downloads, bandwidth, top links/files)
- Cleanup jobs for expired/orphan data
- Install dependencies:
npm install- Copy env file:
cp .env.example .env-
Fill required values in
.env(DB, auth, R2, SMTP). -
Run dev server:
npm run devApp runs at http://localhost:3000.
npm run dev
npm run build
npm run start
npm run lintR2_ACCOUNTS_JSONis optional. If set, it overrides single-accountR2_*vars.- Global storage cap is enforced using configured R2 account count.
- Contact form requires SMTP +
ADMIN_EMAIL.
/home/login,/signup/dashboard/upload/files/links/s/[code]public share page/about,/privacy,/tos,/contact