Skip to content

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.

Notifications You must be signed in to change notification settings

pakagronglb/google-drive-clone-storeit

Repository files navigation

StoreIt - It's a cloud vault. YOUR cloud vault.

🌟 Overview

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.

StoreIt Banner

nextdotjs typescript tailwindcss appwrite

⚑ Key Features

  • πŸ“ File Management (Upload, Download, Share)
  • πŸ” Advanced Search Capabilities
  • πŸ“Š Storage Analytics & Visualization
  • 🎯 File Type Categorization
  • πŸ” Secure Authentication
  • πŸ“± Responsive Design
  • πŸ’« Modern UI/UX
  • πŸš€ Real-time Updates

πŸ› οΈ Tech Stack

  • 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

πŸ“‹ Prerequisites

Before you begin, ensure you have:

  • Node.js 18+ installed
  • Appwrite account and server setup
  • npm or yarn package manager

πŸš€ Getting Started

1. Clone the Repository

git clone https://github.com/pakagronglb/google-drive-clone-storeit.git
cd google-drive-clone-storeit

2. Install Dependencies

3. Environment Setup

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=""

4. Appwrite Setup

  1. Create a new project in Appwrite Console
  2. Create a new database
  3. Set up storage bucket
  4. Configure authentication methods
  5. Update security settings and CORS

5. Run Development Server

npm run dev
# or
yarn dev

πŸ“ Project Structure

storeit/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/
β”‚   β”‚   β”œβ”€β”€ sign-in/
β”‚   β”‚   └── sign-up/
β”‚   β”œβ”€β”€ (root)/
β”‚   β”‚   β”œβ”€β”€ [type]/
β”‚   β”‚   └── page.tsx
β”‚   └── layout.tsx
β”œβ”€β”€ components/
β”œβ”€β”€ constants/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ actions/
β”‚   └── utils/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ assets/
β”‚   └── fonts/
└── types/

🎯 Core Features Explained

Authentication

  • Secure sign-up and sign-in
  • OAuth integration
  • Session management

File Management

  • Multi-file upload support
  • Progress tracking
  • File type validation
  • Secure sharing mechanisms

Dashboard Analytics

  • Storage usage visualization
  • File type distribution
  • Upload history
  • Space management

Search Functionality

  • Real-time search
  • File type filtering
  • Advanced sorting options

πŸ”§ Configuration Options

Customizing File Types

// constants/index.ts
export const allowedFileTypes = {
  documents: ['pdf', 'doc', 'docx', 'txt'],
  images: ['png', 'jpg', 'jpeg', 'gif'],
  media: ['mp4', 'mp3', 'wav'],
  others: ['zip', 'rar']
};

Storage Limits

export const STORAGE_LIMITS = {
  free: 5 * 1024 * 1024 * 1024, // 5GB
  premium: 50 * 1024 * 1024 * 1024 // 50GB
};

🎨 Styling Customization

The project uses Tailwind CSS with custom configuration:

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {...},
        dark: {...},
        light: {...}
      }
    }
  }
};

πŸ“± Responsive Design

  • Mobile-first approach
  • Breakpoints:
    • sm: 640px
    • md: 768px
    • lg: 1024px
    • xl: 1280px

⚑ Performance Optimizations

  • Image optimization
  • Lazy loading
  • Code splitting
  • API response caching
  • Static site generation where applicable

πŸ” Security Features

  • Encrypted file storage
  • Secure file sharing
  • Authentication tokens
  • Rate limiting
  • Input sanitization

πŸ§ͺ Testing

# Run tests
npm run test

# Run tests with coverage
npm run test:coverage

πŸ“¦ Deployment

  1. Build the project:
npm run build
  1. Start production server:
npm start

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ”„ Updates

Stay tuned for updates:

  • Team collaboration features
  • Advanced file preview
  • Mobile apps
  • API access

Created with πŸ’™ by Pakagrong Lebel

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published