Skip to content

Prakhar-002/Store-It

Repository files navigation

StoreIt ➺ Storage and File Sharing Platform

StoreIt is a ⚑ modern Google Drive–like storage solution πŸ’Ύ built with β–² Next.js, βš›οΈ React 19, and ☁️ Appwrite. It helps you ⬆️ upload, πŸ—‚οΈ manage, and πŸ”— share files πŸ“ effortlessly with a 🧼 clean and πŸ“± responsive UI.




πŸ’» Tech Stack β›…οΈπŸžοΈ

Next.js Badge   React Badge   Appwrite Badge   Tailwind CSS Badge   shadcn/ui Badge   Zod Badge   npm Badge   Node.js Badge   Vercel Badge   CSS Badge


StoreIt Features πŸ“¦β˜οΈ

Authentication & Security πŸ”

  • Sign Up & Log In πŸ”‘ Secure user authentication powered by Appwrite.
  • Logout Anytime πŸšͺ End your session safely with one click.
  • Protected Access πŸ›‘οΈ Only authorized users can view and manage their data.

File Management πŸ“‚

  • Upload Anything πŸ“€ Upload documents, images, videos, and audio with ease.
  • View & Organize πŸ‘€ Open files in a new tab, rename, or delete them.
  • Instant Downloads ⬇️ Access your files anytime with quick downloads.
  • Smart Sharing 🀝 Share files instantly with friends, teammates, or collaborators.

Dashboard & Insights πŸ“Š

  • Storage Overview πŸ“¦ See total and consumed storage at a glance.
  • Recent Uploads πŸ•’ Quickly track your latest files.
  • File Breakdown πŸ“‘ Get insights grouped by file type.

Search & Sorting πŸ”

  • Global Search 🌍 Find files and shared content across the platform instantly.
  • Smart Sorting ↕️ Organize by date, name, or size for effortless browsing.

Design & User Experience 🎨

  • Modern Responsive UI πŸ’» Sleek, minimalist, and optimized for all devices.
  • Clean Architecture ⚑ Scalable codebase with reusable components.
  • Future-Ready πŸš€ Built with Next.js 15, React 19, and Appwrite’s latest features.

Technologies Used πŸ‘©πŸ»β€πŸ’»β˜οΈ

  • next ⚑ Latest Next.js 15 for full-stack React applications.
  • react βš›οΈ Core UI library (React 19 RC) for building dynamic interfaces.
  • react-dom 🌐 Handles React rendering in the browser.
  • node-appwrite πŸ” Appwrite SDK for authentication, storage, and database.
  • tailwindcss 🎨 Utility-first CSS framework for modern responsive design.
  • tailwindcss-animate 🎭 Prebuilt animations to enhance UI interactions.
  • react-hook-form πŸ“ Lightweight library for form validation and handling.
  • @hookform/resolvers πŸ”Ž Seamless integration with Zod schema validation.
  • zod βœ… Schema-based form validation for strong type safety.
  • react-dropzone πŸ“‚ Drag-and-drop file upload support.
  • recharts πŸ“Š Beautiful charts and data visualization for the dashboard.
  • lucide-react 🎨 Icon library providing modern SVG icons.
  • clsx & tailwind-merge ⚑ Smart utility class management for clean styling.
  • use-debounce ⏳ Efficient debouncing for search and input handling.
  • radix-ui Components 🧩 Accessible, unstyled primitives for:
    • Dialogs, Dropdowns, Toasts, Selects, Labels, Alerts, Separators, and Slots.

Installation Guide βš™οΈ

Follow these steps to set up and run StoreIt locally:


1. Clone the Repository πŸ“‚

https://github.com/Prakhar-002/Store-It.git
cd Store-It

2. Install Dependencies πŸ“¦

Make sure you have Node.js (>=18) installed, then run:

npm install

3. Configure Environment Variables πŸ”‘

Create a .env.local file in the root of the project and add the following variables:

NEXT_PUBLIC_APPWRITE_ENDPOINT="https://cloud.appwrite.io/v1"
NEXT_PUBLIC_APPWRITE_PROJECT=""
NEXT_PUBLIC_APPWRITE_DATABASE=""
NEXT_PUBLIC_APPWRITE_USERS_COLLECTION=""
NEXT_PUBLIC_APPWRITE_FILES_COLLECTION=""
NEXT_PUBLIC_APPWRITE_BUCKET=""
NEXT_APPWRITE_KEY=""

πŸ‘‰ Replace the empty values ("") with your Appwrite project credentials.


4. Start the Development Server πŸš€

Run the app locally with:

npm run dev

Now open πŸ”— http://localhost:3000 in your browser.


5. Build for Production πŸ—οΈ

When you’re ready to deploy:

npm run build
npm run start

Folder Structure πŸ“’πŸ—‚οΈ


    πŸ“¦ Store-It 
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ app/                       πŸ”Έ Next.js App Router (pages & layouts)  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ πŸ—‚οΈ (auth)/                πŸ”Έ Authentication routes  
        |   |   |   
        β”‚   β”‚   β”œβ”€β”€ πŸ—‚οΈ sign-in/  
        β”‚   β”‚   β”‚   └── πŸ“‘ page.tsx        βš›οΈ Sign-in page  
        |   |   |
        β”‚   β”‚   β”œβ”€β”€ πŸ—‚οΈ sign-up/  
        β”‚   β”‚   β”‚   └── πŸ“‘ page.tsx        βš›οΈ Sign-up page  
        |   |   |   
        β”‚   β”‚   └── πŸ“‘ layout.tsx          🎨 Auth layout wrapper  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ πŸ—‚οΈ (root)/                πŸ”Έ Main app routes  
        |   |   |   
        β”‚   β”‚   β”œβ”€β”€ πŸ—‚οΈ [type]/            πŸ”Έ Dynamic file/folder type route 
        |   |   |   | 
        β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‘ page.tsx        βš›οΈ File type page  
        β”‚   β”‚   β”‚   └── πŸ“‘ layout.tsx      🎨 File type layout  
        |   |   |   
        β”‚   β”‚   β”œβ”€β”€ πŸ“‘ page.tsx            βš›οΈ Root dashboard page 
        β”‚   β”‚   └── πŸ“‘ layout.tsx          🎨 Root layout  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ πŸ—‚οΈ fonts/                 πŸ”Έ Custom project fonts  
        |   |   |   
        β”‚   β”‚   β”œβ”€β”€ 🎨 GeistMonoVF.woff  
        β”‚   β”‚   β”œβ”€β”€ 🎨 GeistVF.woff  
        β”‚   β”‚   └── 🎨 favicon.ico  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ 🎨 globals.css             πŸ”Έ Global styles (Tailwind)  
        β”‚   └── πŸ“‘ layout.tsx              🎨 App-wide layout wrapper  
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ components/                πŸ”Έ Reusable UI components  
        |   |    
        |   β”œβ”€β”€  πŸ—‚οΈui/                    πŸ”Έ ShadCn Reusable UI components
        |   |    |  
        β”‚   |    β”œβ”€β”€ πŸ“‘ alert-dialog.tsx        βš›οΈ Alert dialog  
        β”‚   |    β”œβ”€β”€ πŸ“‘ button.tsx              βš›οΈ Button  
        β”‚   |    β”œβ”€β”€ πŸ“‘ card.tsx                βš›οΈ Card  
        β”‚   |    β”œβ”€β”€ πŸ“‘ chart.tsx               βš›οΈ Chart  
        β”‚   |    β”œβ”€β”€ πŸ“‘ dialog.tsx              βš›οΈ Dialog  
        β”‚   |    β”œβ”€β”€ πŸ“‘ dropdown-menu.tsx       βš›οΈ Dropdown menu  
        β”‚   |    β”œβ”€β”€ πŸ“‘ form.tsx                βš›οΈ Form wrapper  
        β”‚   |    β”œβ”€β”€ πŸ“‘ input.tsx               βš›οΈ Input field  
        β”‚   |    β”œβ”€β”€ πŸ“‘ input-otp.tsx           βš›οΈ OTP input  
        β”‚   |    β”œβ”€β”€ πŸ“‘ label.tsx               βš›οΈ Form label  
        β”‚   |    β”œβ”€β”€ πŸ“‘ select.tsx              βš›οΈ Select dropdown  
        β”‚   |    β”œβ”€β”€ πŸ“‘ separator.tsx           βš›οΈ Separator line  
        β”‚   |    β”œβ”€β”€ πŸ“‘ sheet.tsx               βš›οΈ Side sheet modal  
        β”‚   |    β”œβ”€β”€ πŸ“‘ toast.tsx               βš›οΈ Toast notification  
        β”‚   |    └── πŸ“‘ toaster.tsx             βš›οΈ Toast container  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ πŸ“‘ ActionDropdown.tsx      βš›οΈ Action dropdown menu  
        β”‚   β”œβ”€β”€ πŸ“‘ ActionsModalContent.tsx βš›οΈ Modal content for actions  
        β”‚   β”œβ”€β”€ πŸ“‘ AuthForm.tsx            βš›οΈ Authentication form  
        β”‚   β”œβ”€β”€ πŸ“‘ Card.tsx                βš›οΈ File card component  
        β”‚   β”œβ”€β”€ πŸ“‘ Chart.tsx               βš›οΈ Data visualization chart  
        β”‚   β”œβ”€β”€ πŸ“‘ FileUploader.tsx        βš›οΈ Drag-and-drop file upload  
        β”‚   β”œβ”€β”€ πŸ“‘ FormattedDateTime.tsx   πŸ“… Format and display timestamps  
        β”‚   β”œβ”€β”€ πŸ“‘ Header.tsx              πŸ“Œ Top header navigation  
        β”‚   β”œβ”€β”€ πŸ“‘ MobileNavigation.tsx    πŸ“± Mobile-friendly nav  
        β”‚   β”œβ”€β”€ πŸ“‘ OTPModal.tsx            πŸ” OTP modal dialog  
        β”‚   β”œβ”€β”€ πŸ“‘ Search.tsx              πŸ”Ž Global search bar  
        β”‚   β”œβ”€β”€ πŸ“‘ Sidebar.tsx             πŸ“‚ Sidebar navigation  
        β”‚   β”œβ”€β”€ πŸ“‘ Sort.tsx                ↕️ File sorting component  
        β”‚   └── πŸ“‘ Thumbnail.tsx           πŸ–ΌοΈ File preview thumbnail  
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ constants/                 πŸ”Έ App constants  
        |   |   
        β”‚   └── πŸ“‘ index.ts  
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ hooks/                     πŸ”Έ Custom React hooks  
        |   |   
        β”‚   └── πŸ“‘ use-toast.ts            πŸ”” Hook for toast notifications  
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ lib/                       πŸ”Έ App utilities & API logic  
        |   |   
        β”‚   β”œβ”€β”€ πŸ—‚οΈ actions/  
        |   |   |
        β”‚   β”‚   β”œβ”€β”€ πŸ“‘ file.actions.ts     πŸ“‚ File-related actions  
        β”‚   β”‚   └── πŸ“‘ user.actions.ts     πŸ‘€ User-related actions  
        β”‚   β”‚  
        β”‚   β”œβ”€β”€ πŸ—‚οΈ appwrite/               πŸ”Έ Appwrite integration 
        |   |   | 
        β”‚   β”‚   β”œβ”€β”€ πŸ“‘ config.ts           βš™οΈ Appwrite config  
        β”‚   β”‚   └── πŸ“‘ index.ts            πŸ“‘ SDK exports  
        β”‚   β”‚      
        |   |
        |   └── πŸ“‘ utils.ts            πŸ› οΈ Helper functions
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ public/                     πŸ”Έ Static assets  
        |   |   
        β”‚   └── πŸ—‚οΈ assets/  
        |       |
        β”‚       β”œβ”€β”€ πŸ—‚οΈ icons/  
        β”‚       β”œβ”€β”€ πŸ—‚οΈ images/  
        |       |
        β”‚       β”œβ”€β”€ 🎨 file.svg  
        β”‚       β”œβ”€β”€ 🌍 globe.svg  
        β”‚       β”œβ”€β”€ βš›οΈ next.svg  
        β”‚       β”œβ”€β”€ β–² vercel.svg  
        β”‚       └── πŸͺŸ window.svg  
        β”‚  
        β”œβ”€β”€ πŸ—‚οΈ types/                      πŸ”Έ TypeScript type definitions  
        |   |   
        β”‚   └── πŸ“‘ index.d.ts  
        β”‚  
        β”œβ”€β”€ βš™οΈ .env.local                  πŸ”‘ Environment variables  
        β”œβ”€β”€ βš™οΈ .eslintrc.json              πŸ“ ESLint config  
        β”œβ”€β”€ βš™οΈ .gitignore                  🚫 Git ignored files  
        β”œβ”€β”€ πŸ“‘ components.json             πŸ”§ Shadcn component config  
        β”œβ”€β”€ πŸ“‘ next-env.d.ts               πŸ“‘ Next.js type definitions  
        β”œβ”€β”€ πŸ“‘ next.config.ts              βš™οΈ Next.js config  
        β”œβ”€β”€ πŸ“‘ package.json                πŸ“¦ Project metadata & dependencies  
        β”œβ”€β”€ πŸ“‘ package-lock.json           πŸ”’ Dependency lock file  
        β”œβ”€β”€ πŸ“‘ postcss.config.mjs          🎨 PostCSS config  
        β”œβ”€β”€ πŸ“‘ README.md                   πŸ“˜ Project documentation  
        β”œβ”€β”€ πŸ“‘ tailwind.config.ts          🎨 Tailwind CSS config  
        └── πŸ“‘ tsconfig.json               πŸ“ TypeScript config  

About

🩷 StoreIt β€” A modern 🏎️ Google Drive clone πŸ’¨ built with Next.js, shadcn/ui, and Appwrite with typescript. πŸ“‚ Upload, organize, manage, and SHARE files seamlessly with in the cloud with another Users. πŸ”’ Secure, ⚑ Fast, and 🌐 Accessible anywhere. The only storage solution you’ll ever need! ✨

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors