A full-stack cloud storage platform built with Next.js 15, featuring secure OTP authentication, file management, and real-time sharing capabilities.
Overview β’ Features β’ Tech Stack β’ Quick Start β’ Deployment β’ Roadmap
StoreIt is a modern, full-stack cloud storage management platform built with Next.js 15 and Appwrite. It features secure passwordless authentication, comprehensive file management, and real-time sharing capabilities - all wrapped in a beautiful, responsive interface.
Perfect for showcasing:
- Modern web development with Next.js 15 App Router
- Secure authentication patterns with OTP verification
- File upload/management workflows
- Real-time updates and responsive design
- Integration with Backend-as-a-Service platforms
- π Modern Stack: Built with Next.js 15, React 19, and TypeScript
- π Secure Authentication: Passwordless OTP authentication via email
- π Complete File Management: Upload, organize, share, and manage files
- π₯ Real-time Sharing: Email-based file sharing with instant updates
- π Usage Dashboard: Visual storage usage tracking with interactive charts
- π± Responsive Design: Mobile-first UI with Tailwind CSS and ShadCN components
- β‘ High Performance: Server components and optimized file handling
- Passwordless Login: Secure OTP authentication sent via email
- Session Management: Secure cookie-based sessions with auto-expiration
- Protected Routes: Route-level protection for authenticated users
- Account Creation: Simple signup with email verification
- π€ File Upload: Drag & drop interface with real-time progress tracking
- ποΈ File Organization: Automatic categorization by type (Documents, Images, Media, Others)
- οΏ½οΏ½ Search & Filter: Global search with sorting options (name, date, size)
- βοΈ File Operations: Rename and delete files with instant UI updates
- π± Responsive Grid: Beautiful file grid that adapts to all screen sizes
- π§ Email Sharing: Share files with others via email addresses
- π Secure Links: Generate secure download links for shared files
- ποΈ File Preview: In-browser preview for images and documents
- π₯ Easy Downloads: One-click file downloads with proper file types
- π Usage Overview: Visual storage usage breakdown by file type
- π Interactive Charts: Beautiful charts showing storage distribution
- π Recent Activity: Quick access to recently uploaded files
- πΎ Storage Tracking: Real-time storage usage with 2GB limit visualization
- π Modern UI: Clean, professional interface with smooth animations
- π± Mobile Responsive: Full functionality across all devices
- β‘ Fast Loading: Optimized with Next.js Server Components
- π Real-time Updates: Instant UI updates without page refreshes
- Next.js 15 - React framework with App Router and Server Components
- React 19 - Latest React with concurrent features
- TypeScript - Type-safe development with full IntelliSense
- Tailwind CSS - Utility-first styling framework
- ShadCN/UI - Modern, accessible component library
- Radix UI - Headless UI primitives for complex components
- Recharts - Interactive charts for data visualization
- React Hook Form - Performant forms with validation
- Zod - TypeScript-first schema validation
- Appwrite - Backend-as-a-Service for auth, database, and storage
- Server Actions - Type-safe server functions with Next.js
- File Storage - Secure file storage with Appwrite buckets
- Vercel - Deployment and hosting platform
- ESLint - Code linting and quality enforcement
- Git - Version control with clean commit history
- Node.js >= 18.0.0
- npm >= 9.0.0
- Git for version control
```bash git clone https://github.com/Sainava/Storage-Management-System.git cd Storage-Management-System ```
```bash npm install ```
Create `.env.local` in the root directory:
```env
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" ```
- Create Account: Sign up at Appwrite
- Create Project: Initialize a new project in your dashboard
- Configure Authentication:
- Enable Email/Password authentication
- Set up email templates for OTP
- Database Setup:
- Create database with two collections:
- users: `fullName`, `email`, `avatar`, `accountId`
- files: `name`, `type`, `extension`, `size`, `owner`, `users[]`, `bucketFileId`, `url`
- Storage Setup:
- Create storage bucket for file uploads
- Configure appropriate permissions
- Copy Configuration: Add all IDs to `.env.local`
```bash
npm run dev ```
Open http://localhost:3000 to view the application.
``` storeit/ βββ app/ # Next.js App Router β βββ (auth)/ # Authentication routes β β βββ sign-in/page.tsx # Sign-in page β β βββ sign-up/page.tsx # Sign-up page β β βββ layout.tsx # Auth layout β βββ (root)/ # Protected app routes β β βββ page.tsx # Dashboard homepage β β βββ [type]/page.tsx # File type pages β β βββ layout.tsx # Main app layout β βββ globals.css # Global styles β βββ layout.tsx # Root layout βββ components/ # Reusable UI components β βββ ui/ # ShadCN component library β βββ AuthForm.tsx # Authentication forms β βββ FileUploader.tsx # File upload component β βββ Header.tsx # App header with search β βββ Sidebar.tsx # Navigation sidebar β βββ Card.tsx # File display cards β βββ Chart.tsx # Storage usage chart β βββ ... # Additional components βββ lib/ # Utility libraries β βββ actions/ # Server actions β β βββ file.actions.ts # File operations β β βββ user.actions.ts # User operations β βββ appwrite/ # Appwrite configuration β β βββ config.ts # Environment config β β βββ index.ts # Client setup β βββ utils.ts # Helper functions βββ constants/ # App constants βββ types/ # TypeScript definitions βββ public/ # Static assets ```
-
Push to GitHub: ```bash git add . git commit -m "feat: ready for deployment" git push origin main ```
-
Deploy to Vercel:
- Import repository at vercel.com
- Add environment variables from `.env.local`
- Deploy with automatic builds
-
Post-Deployment:
- Update Appwrite allowed origins with your Vercel domain
- Test all functionality in production
```bash npm run dev # Start development server npm run build # Build production bundle npm run start # Start production server npm run lint # Run ESLint npm run type-check # TypeScript checking ```
- Create feature branch from `main`
- Implement changes with proper TypeScript types
- Test functionality across different file types
- Commit with descriptive messages
- Submit pull request with detailed description
- π MongoDB Integration: Custom analytics database for user insights
- π Activity Tracking: Track uploads, downloads, views, and shares
- π Search Analytics: Monitor search patterns and optimize results
- π± Usage Dashboard: Enhanced dashboard with detailed metrics
- π¨ Smart Notifications: Automated alerts for storage and activity
- π₯ Team Workspaces: Multi-user collaboration spaces
- π·οΈ File Tagging: Custom tags and advanced organization
- π¬ Comments System: File-level comments and discussions
- π Version Control: File versioning and history tracking
- π Advanced Permissions: Granular access control and roles
- π Real-time Sync: Live collaboration and file synchronization
- π± Mobile App: Native mobile applications for iOS/Android
- π AI-Powered Search: Intelligent search with content recognition
- π Business Intelligence: Advanced reporting and analytics
- π API Access: RESTful API for third-party integrations
We welcome contributions! Here's how to get started:
- Fork the Repository
- Create Feature Branch: `git checkout -b feature/amazing-feature`
- Make Changes: Implement your feature
- Test Thoroughly: Ensure everything works
- Commit: `git commit -m 'feat: add amazing feature'`
- Push: `git push origin feature/amazing-feature`
- Open Pull Request: Submit for review
- Follow existing code style and conventions
- Add TypeScript types for new features
- Update documentation as needed
- Test across different browsers and devices
This project is licensed under the MIT License - see the LICENSE file for details.
- Appwrite - Backend-as-a-Service platform
- Next.js - React framework for production
- Tailwind CSS - Utility-first CSS framework
- ShadCN/UI - Component library
- Vercel - Deployment platform
Developer: Sai Navarasu
Repository: https://github.com/Sainava/Storage-Management-System