StoreIt is a modern cloud storage solution built with Next.js 14, offering a secure and intuitive way to store and manage digital files. This project was created following the tutorial by JavaScript Mastery.
- π File Management (Upload, Download, Share)
- π Advanced Search Capabilities
- π Storage Analytics & Visualization
- π― File Type Categorization
- π Secure Authentication
- π± Responsive Design
- π« Modern UI/UX
- π Real-time Updates
- Framework: Next.js 14
- Styling: Tailwind CSS
- Authentication: Appwrite
- File Storage: Appwrite Storage
- UI Components: Shadcn/ui
- Charts: Recharts
- State Management: React Hooks
- Icons: Custom SVG Icons
Before you begin, ensure you have:
- Node.js 18+ installed
- Appwrite account and server setup
- npm or yarn package manager
git clone https://github.com/pakagronglb/google-drive-clone-storeit.git
cd google-drive-clone-storeit
Create a .env.local
file in the root directory:
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=""
- Create a new project in Appwrite Console
- Create a new database
- Set up storage bucket
- Configure authentication methods
- Update security settings and CORS
npm run dev
# or
yarn dev
storeit/
βββ app/
β βββ (auth)/
β β βββ sign-in/
β β βββ sign-up/
β βββ (root)/
β β βββ [type]/
β β βββ page.tsx
β βββ layout.tsx
βββ components/
βββ constants/
βββ lib/
β βββ actions/
β βββ utils/
βββ public/
β βββ assets/
β βββ fonts/
βββ types/
- Secure sign-up and sign-in
- OAuth integration
- Session management
- Multi-file upload support
- Progress tracking
- File type validation
- Secure sharing mechanisms
- Storage usage visualization
- File type distribution
- Upload history
- Space management
- Real-time search
- File type filtering
- Advanced sorting options
// constants/index.ts
export const allowedFileTypes = {
documents: ['pdf', 'doc', 'docx', 'txt'],
images: ['png', 'jpg', 'jpeg', 'gif'],
media: ['mp4', 'mp3', 'wav'],
others: ['zip', 'rar']
};
export const STORAGE_LIMITS = {
free: 5 * 1024 * 1024 * 1024, // 5GB
premium: 50 * 1024 * 1024 * 1024 // 50GB
};
The project uses Tailwind CSS with custom configuration:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
brand: {...},
dark: {...},
light: {...}
}
}
}
};
- Mobile-first approach
- Breakpoints:
- sm: 640px
- md: 768px
- lg: 1024px
- xl: 1280px
- Image optimization
- Lazy loading
- Code splitting
- API response caching
- Static site generation where applicable
- Encrypted file storage
- Secure file sharing
- Authentication tokens
- Rate limiting
- Input sanitization
# Run tests
npm run test
# Run tests with coverage
npm run test:coverage
- Build the project:
npm run build
- Start production server:
npm start
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- JavaScript Mastery for the excellent tutorial and frontend assets
- Appwrite for backend services
- Shadcn/ui for UI components
- Tailwind CSS for styling
Stay tuned for updates:
- Team collaboration features
- Advanced file preview
- Mobile apps
- API access
Created with π by Pakagrong Lebel