One-liner pitch: Secure, fast, and collaborative cloud storage with Clerk auth, ImageKit uploads, and streamlined file organization.
Arkive is a modern cloud storage web app that lets teams and individuals upload, organize, search, and manage files securely. It solves the pain of scattered storage by combining folders, starring, trash, and search into one streamlined workspace with dark/light themes and responsive UI.
Key Features:
- ✅ Secure Auth: Clerk-powered sign-up/sign-in with username support and profile images.
- ✅ File & Folder Ops: Upload files/folders, move, rename, star, trash, and restore.
- ✅ Search & Recent: Fast search endpoint plus recent files view for quick access.
- ✅ Trash & Empty Trash: Soft-delete with bulk empty and restore flows.
- ✅ Dark/Light Mode: next-themes toggle with persisted preference.
- ✅ Responsive UI: shadcn/ui + Tailwind for a polished, adaptive experience.
| Layer | Technologies |
|---|---|
| Frontend | Next.js 15 (App Router), React, TypeScript, Tailwind CSS, shadcn/ui |
| Auth | Clerk (Hosted) |
| Storage & Media | ImageKit (uploads/URL signing), Next.js API routes |
| Database | PostgreSQL (Neon) with Drizzle ORM |
| Theming & UX | next-themes, lucide-react icons, sonner toasts |
| Tooling | ESLint, Prettier, npm/pnpm scripts |
Comprehensive documentation is available in the /docs folder:
- PRD.md - Product Requirements Document with user stories, personas, and success metrics
- ARCHITECTURE.md - System architecture, tech stack decisions, and database schema
- API.md - Complete REST API reference with request/response examples
- DEPLOYMENT.md - Deployment guide, environment setup, and troubleshooting
Key Code Entry Points:
- API routes:
src/app/api/*(files, folders, search, upload, trash, star, delete) - Schemas:
src/lib/schema.tsand Zod schemas insrc/schemas/* - UI: Components in
src/components/*(Header, Sidebar, Modals, ThemeToggle) - Types: Centralized in
src/types/*
1) Clone the repo
git clone https://github.com/Leonardo1903/arkive.git
cd arkive2) Install dependencies
npm install
# or
pnpm install3) Set up environment variables
cp .env.sample .env
# then fill in your Clerk, ImageKit, and DATABASE_URL values4) Run the development server
npm run devVisit http://localhost:3000
Optional checks
npm run lintContributions are welcome! Please open an issue first to discuss what you’d like to change.
- Fork the project
- Create your feature branch:
git checkout -b feature/amazing - Commit your changes:
git commit -m "Add amazing feature" - Push to the branch:
git push origin feature/amazing - Open a Pull Request
Leonardo Fernandes
- GitHub: @Leonardo1903
- LinkedIn: leonardofernandes1903
This project is licensed under the MIT License. See the LICENSE file for details.
