https://github.com/zaber-dev/MVC-Python
Flask-based web application following the MVC (Model-View-Controller) structure, with the added feature of integrating a Discord bot. The structure is flexible, allowing you to expand it for more parallel tasks, or easily adjust it to run a single task as needed.
https://github.com/zaber-dev/MVC-Python
discord discord-bot disnake disnake-template flask flask-application flask-mvc flask-mvc-structure flask-mvc-template mvc mvc-architecture mvc-framework mvc-python python python-mvc python3 sqlalchemy
Last synced: 2 months ago
JSON representation
Flask-based web application following the MVC (Model-View-Controller) structure, with the added feature of integrating a Discord bot. The structure is flexible, allowing you to expand it for more parallel tasks, or easily adjust it to run a single task as needed.
- Host: GitHub
- URL: https://github.com/zaber-dev/MVC-Python
- Owner: zaber-dev
- License: gpl-3.0
- Created: 2024-09-15T16:01:50.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-09-16T20:15:12.000Z (9 months ago)
- Last Synced: 2025-03-08T18:47:47.580Z (3 months ago)
- Topics: discord, discord-bot, disnake, disnake-template, flask, flask-application, flask-mvc, flask-mvc-structure, flask-mvc-template, mvc, mvc-architecture, mvc-framework, mvc-python, python, python-mvc, python3, sqlalchemy
- Language: Python
- Homepage:
- Size: 63.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Flask MVC Structure with Discord Integration
Welcome to the **Flask MVC Structure with Discord Integration**! This project is primarily a **Flask-based web application** following the MVC (Model-View-Controller) structure, with the added feature of integrating a **Discord bot** using **Disnake**. This setup allows you to build a web app while also having a Discord bot running in parallel, enabling additional functionality. The structure is flexible, allowing you to expand it for more parallel tasks, or easily adjust it to run a single task as needed.
## Project Structure
```bash
.
├── app
│ ├── Actions # Utility functions (pagination, embeds, webhook handling, etc.)
│ ├── Commands # Discord command handling
│ │ ├── Context # Traditional Discord commands
│ │ └── Slash # Slash commands for Discord
│ ├── Controllers # Controller logic for Flask and Discord
│ │ ├── Flask # Controllers specific to Flask web app
│ │ └── Discord # Controllers for Discord bot
│ ├── Models # Data models for the application
│ └── Views # Dynamic Flask views/templates structures
├── config
│ └── boot.py # Main entry point to boot up the program (Flask + Discord)
├── database
│ └── db.py # Database interactions (abstraction layer)
├── resources # Static and template files for Flask
│ ├── css # CSS files
│ ├── js # JavaScript files
│ └── views # HTML templates
├── routes
│ ├── api.py # Routes for API endpoints
│ └── web.py # Routes for web pages
├── storage # User file storage (uploads, etc.)
├── vendor # Placeholder for third-party integrations (collaborations welcome)
├── requirements.txt # Python dependencies
├── Dockerfile # Docker containerization file
└── .env # Environment configuration variables
```## Features Implemented
### Flask
- **MVC Structure**: Organized codebase that follows the MVC pattern for better separation of concerns:
- **Models** handle data.
- **Views** are rendered by Flask, found in `resources/views`.
- **Controllers** handle business logic for web and API routes.
- **Routing**:
- API routes are defined in `routes/api.py`.
- Web routes are in `routes/web.py`.
- **Database Abstraction**: Easy-to-extend database layer (`database/db.py`) for managing models.
- **Templates & Static Files**: Resources such as HTML, CSS, and JavaScript are stored in `resources/`.### Discord Bot (Using Discord.py)
- **Commands**:
- Traditional text-based Discord commands in `app/Commands/Context`.
- Slash commands in `app/Commands/Slash`.
- **Parallel Execution**: The Discord bot runs alongside the Flask application for seamless interaction between web and Discord functionalities.
- **Utility Actions**: Functions like pagination, embeds, and webhook handling in `app/Actions`.### Docker
- **Containerization**: Provided `Dockerfile` allows you to run the entire application in a Docker container, simplifying the setup process.## What's Next?
### To-Do
- [ ] **Vendor Integrations**: Open for contributions to implement third-party integrations or plugins within the `vendor/` directory.
- [ ] **Authentication**: Integrate authentication (OAuth or token-based) for the web app and APIs.
- [ ] **File Management**: Add advanced handling for user uploads within the `storage/` folder.
- [ ] **Error Handling & Logging**: Enhance error handling across both Flask and Discord components, with proper logging.## Collaboration
Contributions are welcome! If you'd like to collaborate, feel free to fork this repository and submit a pull request. Potential areas of contribution include:
- Implementing additional Flask features.
- Expanding Discord bot functionalities (commands, event listeners, etc.).
- Integrating new third-party APIs or services.
- Improving the MVC structures
Check out the **issues** section for current needs, or suggest your own enhancements!## Getting Started
1. **Clone the Repository**:
```bash
git clone https://github.com/MahediZaber51/MVC-Python.git
cd MVC-Python
```2. **Install Dependencies**:
```bash
pip install -r requirements.txt
```3. **Set up Environment Variables**:
Create a `.env` file in the root directory with the required environment variables for Flask and Discord (check the `.env-example` file).4. **Run the Application**:
```bash
python config/boot.py
```5. **Run in Docker**:
```bash
docker build -t flask-discord-app .
docker run -d -p 5000:5000 flask-discord-app
```## License
This project is licensed under the GNU General Public License v3.0.