Skip to content

WindCloud is a secure and modern cloud storage solution built with Flask, featuring an intuitive dashboard for easy file management and two-factor authentication. The platform offers drag-and-drop file uploads, seamless file sharing capabilities, and support for multiple file formats, all while maintaining strong data protection.

License

Notifications You must be signed in to change notification settings

MarsgameJu/WindCloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ” WindCloud - Secure Cloud Storage & Dashboard Platform

WindCloud is a modern Flask-based web application built for secure file storage, efficient sharing, and an interactive dashboard experience. With advanced authentication features including two-factor authentication (2FA), a flexible card system, and intuitive file management, WindCloud is designed for both individual users and collaborative teams.


🌟 Key Features

Security & Authentication

  • Secure Password Storage: Uses bcrypt for hashed passwords.
  • Two-Factor Authentication (2FA): Integrated TOTP via Google Authenticator. Scan the QR code during registration and login.
  • Session Management & CSRF Protection: Secure sessions and tokens.
  • Rate Limiting: Prevents brute-force attacks.
  • Input Validation & Sanitization: Ensures data integrity.

Modern Dashboard

  • Responsive UI: Designed with both grid and list views.
  • Dark/Light Mode: User preference stored locally.
  • Drag & Drop File Upload: Supports multiple file types and image previews.
  • Interactive Card System: Create, edit, delete, and share cards.
  • Real-Time Updates & Search: Quickly filter and sort your cards.

File Management & Sharing

  • File & Image Galleries: View and manage files via dedicated sections.
  • Granular Sharing Options: Share cards with read-only or edit permissions.
  • Secure File Serving: Files are stored and served securely from the uploads directory.

πŸš€ Installation

Prerequisites

  • Python 3.8+
  • pip
  • Git
  • SQLite3

Setup Steps

  1. Clone Repository

    git clone https://github.com/MarsgameJu/WindCloud.git
    cd WindCloud
  2. Create Virtual Environment

    python -m venv venv
    # Windows:
    venv\Scripts\activate
    # macOS/Linux:
    source venv/bin/activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Configuration Create a .env file and update config.py with your settings:

    MAIL_SERVER=smtp.example.com
    MAIL_PORT=587
    MAIL_USE_TLS=True
    MAIL_USERNAME=your-email@example.com
    MAIL_PASSWORD=your-email-password

    How to Create the App-password

    Alternatively, modify config.py accordingly.

  5. Database Initialization The application automatically creates necessary tables. For a fresh start, remove existing databases and run:

    python app.py
  6. Start the Application

    python app.py

    Visit http://127.0.0.1:5000


πŸ“ Project Structure

WindCloud/
β”œβ”€β”€ .github/   
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/           # Templates for GitHub issue reporting
β”‚   └── SECURITY.md               # Security policy and vulnerability reporting guidelines
β”œβ”€β”€ database/                     # SQLite database 
β”œβ”€β”€ static/                       # Static assets
β”‚   β”œβ”€β”€ assets/                   # Images for Landing Page
β”‚   β”œβ”€β”€ css/ 
β”‚   |    β”œβ”€β”€ dashboard.css        # Dashboard-specific Styling
β”‚   |    β”œβ”€β”€ style.css            # Global styles
β”‚   |    β”œβ”€β”€ index.css            # Style for index.html
β”‚   β”œβ”€β”€ js/     
β”‚   |    β”œβ”€β”€ script.js            # General JS functions
β”‚   |    β”œβ”€β”€ dashboard.js         # Dashboard interactivity (cards, modals, uploads)
β”‚   |    β”œβ”€β”€ flash-message.js     # Flash messages handler
β”‚   |    β”œβ”€β”€ password-check.js    # Password validation and strength checking                  
β”‚   └── index.html                # Landing page
β”œβ”€β”€ templates/                    # Jinja2 HTML templates
β”‚   β”œβ”€β”€ login.html                # User login
β”‚   β”œβ”€β”€ register.html             # User registration
β”‚   β”œβ”€β”€ 2fa.html                  # Two-factor authentication
β”‚   β”œβ”€β”€ error.html                # Custom error page templates
β”‚   └── dashboard.html            # Main dashboard with card System
β”œβ”€β”€ uploads/                      # User-uploaded files
β”œβ”€β”€ utils/                        # Helper functions for database & security operations
β”‚   β”œβ”€β”€ database.py               # Structure and Init Database
β”‚   β”œβ”€β”€ error_handler.py          # Custom error handling and logging
β”‚   └── security.py               # Ensures security for Web application
β”œβ”€β”€ app.py                        # Main Flask application
β”œβ”€β”€ config.py                     # App configuration settings
β”œβ”€β”€ requirements.txt              # Python dependencies
β”œβ”€β”€ .gitignore                    # Specifies which files Git should ignore
β”œβ”€β”€ CODE_OF_CONDUCT.md            # Project community guidelines and behavior
β”œβ”€β”€ CONTRIBUTING.md               # Guidelines for contributing to the project
β”œβ”€β”€ LICENSE                       # MIT License terms and conditions
β”œβ”€β”€ Schema.sql                    # Database schema definitions
└── README.md                     # Project documentation

πŸ“œ API Endpoints

Authentication

  • POST /login
    • Parameters: email, password
    • Flow: Validates credentials and proceeds to 2FA.
  • POST /register
    • Parameters: username, email, password, confirm-password
    • Flow: Registers user and prompts for 2FA setup.
  • POST /verify-2fa
    • Parameters: code
    • Flow: Validates the TOTP code.

Cards Management

  • POST /api/cards
    • Payload: title, description
    • Creates a new card.
  • PUT /api/cards/
    • Payload: title, description
    • Updates an existing card. Requires owner or 'write' permission.
  • DELETE /api/cards/
    • Deletes the specified card. Associated files are also removed.

File Handling

  • POST /api/cards//files
    • Multipart form data for file(s).
    • Supports drag & drop file uploads.
  • DELETE /api/cards/<card_id>/files/<file_id>
    • Deletes a file from a card.

Card Sharing

  • POST /api/cards//share
    • Payload: email, permission (read/write)
    • Grants the specified user permission to the card.

🀝 Contributing

We welcome enhancements and bug fixes!

  1. Fork the Repository
  2. Create a Feature/Issue Branch
    git checkout -b feature/your-feature-name
  3. Make Changes & Add Tests
  4. Commit & Push
    git add .
    git commit -m "Describe your change"
    git push origin feature/your-feature-name
  5. Submit a Pull Request

Please follow PEP 8 guidelines and write clear commit messages.


πŸ“œ Other important things

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


πŸ†˜ Support & Documentation

  • FAQ & Issues: Check our GitHub issues or discussions for common problems.
  • Contact: Raise an issue for bug reports or feature requests.
  • Documentation: More detailed guides and API references are coming soon.

Built by Marsgame. Enjoy a secure and seamless cloud storage experience!

About

WindCloud is a secure and modern cloud storage solution built with Flask, featuring an intuitive dashboard for easy file management and two-factor authentication. The platform offers drag-and-drop file uploads, seamless file sharing capabilities, and support for multiple file formats, all while maintaining strong data protection.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published