Built with Next.js 15 | Powered by Appwrite | Styled with Tailwind CSS
View Demo β’ Report Bug β’ Request Feature
Modern dashboard with storage
analytics and recent files
Rename, share, download,
and delete files
Share files with other users via
email
View detailed information
about your files
Quickly find files with real-time
search
- About The Project
- Features
- Tech Stack
- Getting Started
- Deployment
- Project Structure
- Usage
- Contributing
- License
- Contact
StoreIt is a feature-rich cloud storage management platform that enables users to securely upload, organize, and share files. With an intuitive interface and powerful features, StoreIt provides a seamless experience for managing your digital assets.
- π Secure Storage - Your files are stored securely with Appwrite's robust backend
- π Storage Analytics - Real-time insights into your storage usage by file type
- π€ Easy Sharing - Share files with others via email with granular permissions
- π¨ Beautiful UI - Modern, responsive design that works on all devices
- β‘ Fast Performance - Built with Next.js 15 for optimal speed and performance
-
π€ File Upload & Storage
- Support for multiple file types (Documents, Images, Videos, Audio)
- Drag-and-drop interface
- Bulk file uploads
- File size validation
-
π File Management
- Organize files by type
- Rename files
- Delete files
- Search functionality
- Sort by date, name, or size
-
π₯ File Sharing
- Share files with multiple users via email
- Manage shared file permissions
- Track who has access to your files
-
π Storage Analytics
- Visual storage breakdown by file type
- Storage usage charts
- Track storage consumption in real-time
- 2GB storage limit per user
-
π Recent Activity
- Quick access to recently uploaded files
- File thumbnails and previews
- Timestamp information
-
π Authentication
- Secure user authentication via Appwrite
- Protected routes
- Session management
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - Re-usable component library
- Lucide React - Icon library
- Appwrite - Backend-as-a-Service
- Authentication
- Database
- Storage
- Real-time capabilities
- React Hook Form - Form handling
- Zod - Schema validation
- ESLint - Code linting
- PostCSS - CSS processing
Before you begin, ensure you have the following installed:
- Node.js (v18.0.0 or higher)
- npm or yarn or pnpm
- An Appwrite account (Sign up here)
-
Clone the repository
git clone https://github.com/nikhil-marne/StoreIt.git cd StoreIt -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up Appwrite
a. Create a new project in your Appwrite Console
b. Create a new Database and note the Database ID
c. Create the following collections:
- users collection with these attributes:
fullName(string)email(string)avatar(string)accountId(string)
- files collection with these attributes:
type(string)name(string)url(string)extension(string)size(number)owner(string)accountId(string)users(array)bucketFileId(string)
d. Create a Storage Bucket and note the Bucket ID
e. Set up appropriate permissions for collections and storage
f. Add platform for localhost:
- Go to Settings β Platforms β Add Platform β Web App
- Hostname:
localhost
- users collection with these attributes:
-
Configure environment variables
Create a
.env.localfile in the root directory and add the following:NEXT_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 NEXT_PUBLIC_APPWRITE_PROJECT=your_project_id NEXT_PUBLIC_APPWRITE_DATABASE=your_database_id NEXT_PUBLIC_APPWRITE_USERS_COLLECTION=your_users_collection_id NEXT_PUBLIC_APPWRITE_FILES_COLLECTION=your_files_collection_id NEXT_PUBLIC_APPWRITE_BUCKET=your_bucket_id NEXT_APPWRITE_KEY=your_api_key
-
Run the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser
Navigate to http://localhost:3000
This project is deployed on Vercel. Follow these steps to deploy your own instance:
-
Push your code to GitHub
git add . git commit -m "Ready for deployment" git push origin main
-
Import to Vercel
- Go to vercel.com
- Click "New Project"
- Import your GitHub repository
- Vercel will auto-detect Next.js settings
-
Add Environment Variables
In Vercel project settings, add all environment variables from your
.env.local:NEXT_PUBLIC_APPWRITE_ENDPOINTNEXT_PUBLIC_APPWRITE_PROJECTNEXT_PUBLIC_APPWRITE_DATABASENEXT_PUBLIC_APPWRITE_USERS_COLLECTIONNEXT_PUBLIC_APPWRITE_FILES_COLLECTIONNEXT_PUBLIC_APPWRITE_BUCKETNEXT_APPWRITE_KEY
-
Configure Appwrite for Production
In your Appwrite Console:
- Go to Settings β Platforms β Add Platform β Web App
- Add your Vercel domain (e.g.,
your-app.vercel.app) - Add wildcard for previews:
*.vercel.app
-
Deploy
- Click "Deploy"
- Your app will be live in minutes!
Live Demo: https://store-it-alpha-topaz.vercel.app/
StoreIt/
βββ app/
β βββ (auth)/ # Authentication pages
β β βββ sign-in/ # Sign in page
β β βββ sign-up/ # Sign up page
β βββ (root)/ # Main application pages
β β βββ [type]/ # Dynamic file type pages
β β βββ page.tsx # Dashboard
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
βββ components/
β βββ ui/ # Shadcn UI components
β βββ ActionDropdown.tsx # File actions menu
β βββ Chart.tsx # Storage usage chart
β βββ FileUploader.tsx # File upload component
β βββ FormattedDateTime.tsx
β βββ Header.tsx
β βββ MobileNavigation.tsx
β βββ OTPModal.tsx
β βββ Search.tsx
β βββ Sidebar.tsx
β βββ Thumbnail.tsx
β βββ ...
βββ constants/
β βββ index.ts # App constants and config
βββ hooks/
β βββ ... # Custom React hooks
βββ lib/
β βββ actions/
β β βββ file.action.ts # File CRUD operations
β β βββ user.action.ts # User operations
β βββ appwrite/
β β βββ config.ts # Appwrite configuration
β β βββ index.ts # Appwrite client setup
β βββ utils.ts # Utility functions
βββ public/
β βββ assets/ # Static assets (icons, images)
β βββ screenshots/ # App screenshots
βββ types/
β βββ index.d.ts # TypeScript type definitions
βββ .env.local # Environment variables (create this)
βββ .gitignore
βββ next.config.ts
βββ package.json
βββ tailwind.config.ts
βββ tsconfig.json
βββ README.md
- Click the "Upload" button in the header
- Select files from your device or drag and drop
- Files will be automatically categorized by type
- View uploaded files in the dashboard or respective type pages
- Rename: Click the three-dot menu β Select "Rename"
- Share: Click the three-dot menu β Select "Share" β Enter email addresses
- Download: Click the three-dot menu β Select "Download"
- Delete: Click the three-dot menu β Select "Delete" β Confirm
- Details: Click the three-dot menu β Select "Details" to view file information
- Dashboard displays storage breakdown by file type
- Visual chart shows percentage of storage used
- Click on any file type card to view files of that category
- Use the search bar in the header
- Search works across all file names
- Results update in real-time as you type
- Documents - PDF, DOC, DOCX, TXT, XLS, XLSX, CSV
- Images - JPG, JPEG, PNG, GIF, SVG, WEBP
- Media - MP4, AVI, MOV, MKV, WEBM
- Audio - MP3, WAV, OGG, M4A
- Others - All other file types
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE file for more information.
Nikhil Marne - @nikhil-marne
Project Link: https://github.com/nikhil-marne/StoreIt
Live Demo: https://store-it-alpha-topaz.vercel.app/
- Next.js Documentation
- Appwrite Documentation
- Tailwind CSS
- Shadcn/ui
- Lucide Icons
- Vercel - For seamless deployment
Made with β€οΈ by Nikhil Marne
