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.
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.
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.
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.
Global Searchπ Find files and shared content across the platform instantly.Smart SortingβοΈ Organize by date, name, or size for effortless browsing.
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.
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-uiComponents π§© Accessible, unstyled primitives for:- Dialogs, Dropdowns, Toasts, Selects, Labels, Alerts, Separators, and Slots.
Follow these steps to set up and run StoreIt locally:
https://github.com/Prakhar-002/Store-It.git
cd Store-ItMake sure you have Node.js (>=18) installed, then run:
npm installCreate 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.
Run the app locally with:
npm run dev
Now open π http://localhost:3000 in your browser.
When youβre ready to deploy:
npm run build
npm run start π¦ 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