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.
- 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.
- 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 & 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.
- Python 3.8+
- pip
- Git
- SQLite3
-
Clone Repository
git clone https://github.com/MarsgameJu/WindCloud.git cd WindCloud
-
Create Virtual Environment
python -m venv venv # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate
-
Install Dependencies
pip install -r requirements.txt
-
Configuration Create a
.env
file and updateconfig.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. -
Database Initialization The application automatically creates necessary tables. For a fresh start, remove existing databases and run:
python app.py
-
Start the Application
python app.py
Visit http://127.0.0.1:5000
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
- POST /login
- Parameters:
email
,password
- Flow: Validates credentials and proceeds to 2FA.
- Parameters:
- POST /register
- Parameters:
username
,email
,password
,confirm-password
- Flow: Registers user and prompts for 2FA setup.
- Parameters:
- POST /verify-2fa
- Parameters:
code
- Flow: Validates the TOTP code.
- Parameters:
- POST /api/cards
- Payload:
title
,description
- Creates a new card.
- Payload:
- PUT /api/cards/
- Payload:
title
,description
- Updates an existing card. Requires owner or 'write' permission.
- Payload:
- DELETE /api/cards/
- Deletes the specified card. Associated files are also removed.
- 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.
- POST /api/cards//share
- Payload:
email
,permission
(read/write) - Grants the specified user permission to the card.
- Payload:
We welcome enhancements and bug fixes!
- Fork the Repository
- Create a Feature/Issue Branch
git checkout -b feature/your-feature-name
- Make Changes & Add Tests
- Commit & Push
git add . git commit -m "Describe your change" git push origin feature/your-feature-name
- Submit a Pull Request
Please follow PEP 8 guidelines and write clear commit messages.
This project is licensed under the MIT License. See the LICENSE file for details.
- 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!