Skip to content

Leonardo1903/Arkive

Repository files navigation

Arkive 🚀

License Node Status

One-liner pitch: Secure, fast, and collaborative cloud storage with Clerk auth, ImageKit uploads, and streamlined file organization.


App Screenshot


🧐 About The Project

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.

🛠️ Tech Stack

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

📚 Engineering Docs

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.ts and Zod schemas in src/schemas/*
  • UI: Components in src/components/* (Header, Sidebar, Modals, ThemeToggle)
  • Types: Centralized in src/types/*

⚡ Quick Start

1) Clone the repo

git clone https://github.com/Leonardo1903/arkive.git
cd arkive

2) Install dependencies

npm install
# or
pnpm install

3) Set up environment variables

cp .env.sample .env
# then fill in your Clerk, ImageKit, and DATABASE_URL values

4) Run the development server

npm run dev

Visit http://localhost:3000

Optional checks

npm run lint

🤝 Contributing

Contributions are welcome! Please open an issue first to discuss what you’d like to change.

  1. Fork the project
  2. Create your feature branch: git checkout -b feature/amazing
  3. Commit your changes: git commit -m "Add amazing feature"
  4. Push to the branch: git push origin feature/amazing
  5. Open a Pull Request

👤 Author

Leonardo Fernandes


📝 License

This project is licensed under the MIT License. See the LICENSE file for details.

Releases

No releases published

Packages

 
 
 

Contributors