Skip to content

Latest commit

Β 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages