Skip to content

thedhruvish/storeone

Repository files navigation

STOREONE cloud

License Build

An open-source, bring-your-own-storage platform that connects Google Drive and S3-compatible clouds. Store files in your own accounts, stay in control, and avoid vendor lock-in forever.

Table of Contents

Features

  • Secure File Storage: Upload, store, and manage your files securely in the cloud
  • Intuitive UI: Modern, responsive interface with dark/light mode support
  • File Organization: Create folders, move files, and organize your content
  • File Sharing: Share files and folders with other users with customizable permissions
  • User Authentication: Secure login with email/password and OAuth options (Google, GitHub)
  • Responsive Design: Works seamlessly across desktop and mobile devices
  • File Preview: View files directly in the browser without downloading
  • Search Functionality: Quickly find files and folders with powerful search
  • Recent & Starred Files: Easy access to your most important and recently used files
  • Trash Management: Recover accidentally deleted files from trash
  • CI/CD Pipeline: Set up a continuous integration and deployment pipeline
  • File Sharing: Securely share files with other users
  • AWS S3 Integration: Store files in AWS S3 for scalable and secure storage
  • Enhanced File Preview: Support for more file types and formats
  • Mobile Application: Fully functional mobile app for managing files on the go (app.storeone.cloud)

Mobile Application

StoreOne is now available on mobile! Access your personal cloud storage anywhere, sync files in real-time, and manage your documents directly from your pocket.

Tech Stack

Frontend

  • Framework: React 19
  • Routing: TanStack Router
  • State Management: Zustand, TanStack Query
  • UI Components: Shadcn UI, Radix UI
  • Styling: Tailwind CSS
  • Form Handling: React Hook Form
  • HTTP Client: Axios
  • Icons: Lucide React
  • Build Tool: Vite

Backend

  • Runtime: Node.js
  • Framework: Express
  • Database: MongoDB with Mongoose ODM
  • Authentication: JWT, OAuth (Google, GitHub)
  • File Handling: Multer
  • Email Service: Nodemailer
  • Security: bcrypt for password hashing
  • RBAC: Role-Based Access Control for user permissions
  • Caching : Redis to save a tokens

Installation / Setup

Local Development

Prerequisites

  • Node.js (v20 or higher)
  • npm or yarn
  • MongoDB instance

Clone the Repository

git clone https://github.com/thedhruvish/storeone.git
cd storeone

Setup

  1. Create a .env file based on the provided example:

    cd frontend/
    
    cp env.example .env
    
    cd backend/
    cp env.example .env
  2. Configure your environment variables in the .env file:

    • Set MONGO_URL to your MongoDB connection string
    • Configure OAuth credentials if using social login
    • Set up SMTP details for email functionality
  3. Run the script

# Give execute permission (Linux / macOS)
chmod +x run.sh

# Start the server

$ ./run.sh
● Running

Deployment

For detailed production deployment and self-hosting instructions (AWS Lambda, VPS, Nginx, SSL, etc.), please refer to the DEPLOY.md guide.

Usage

Development Mode

  • Backend: Run npm run dev in the backend directory
  • Frontend: Run npm run dev in the frontend directory

Production Mode

  • Backend: Run npm start in the backend directory
  • Frontend:
    1. Build the project: npm run build
    2. Serve the built files: npm run serve

Common Operations

  • Upload Files: Click the "Upload" button in the sidebar
  • Create Folders: Click the "New Folder" button in the sidebar
  • Share Files: Select a file and use the share option in the context menu
  • Search: Use the search bar in the header to find files and folders
  • Change View: Toggle between grid and list views
  • Switch Theme: Use the theme toggle in the header

Screenshots / Demo

Video Demo

Watch the StoreOne Demo Video

Dashboard View

Dashboard View

Trash

file sharing dialog

Profile

Subscription

Pricing list

Project Structure

├── backend/               # Backend Express application
│   ├── config/            # Configuration files
│   ├── controllers/       # Route controllers
│   ├── middlewares/       # Express middlewares
│   ├── models/            # Mongoose models
    ├── lib/               # Library Clients
│   ├── routes/            # API routes
│   ├── services/          # Business logic
│   ├── validators/        # Validation add for the requrest body
│   ├── .env               # Environment variables
│   ├── index.js           # Main Entry Point of application
    └── utils/             # Utility functions
│
├── frontend/              # React frontend application
│   ├── public/            # Static assets
│   └── src/               # Source code
│       ├── api/           # API client and services
│       ├── components/    # Reusable UI components
│       ├── components/ui  # Shadcn UI components
│       ├── hooks/         # Custom React hooks
│       ├── pages/         # Page components
│       ├── routes/        # Routing configuration
│       ├── store/         # State management
│       └── utils/         # Utility functions

Contributing

Contributions are welcome! Please follow these steps to contribute:

  1. Fork the repository

  2. Create a new branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Run tests and linting

    # Backend
    cd backend
    npm run format
    
    # Frontend
    cd frontend
    npm run lint
    npm run format
  5. Commit your changes (git commit -m 'Add some amazing feature')

  6. Push to the branch (git push origin feature/amazing-feature)

  7. Open a Pull Request

License

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

Acknowledgements / Credits

About

A modern, full-stack web application for secure file storage, sharing, and management with a Google Drive-like interface.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors