Skip to content

About

Powerful Distributed Document Management Framework & Full-Stack Development Platform

Resources

Stars

1 star

Watchers

0 watching

Forks

Β 
Β 

Latest commit

Β 

History

129 Commits

Folders and files

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

Repository files navigation

Bomiot logo

πŸš€ Bomiot

One App you can do everything

Powerful Distributed Document Management Framework & Full-Stack Development Platform

License: APLv2 Release Version (latest Version) i18n Support

repo size GitHub commit activity Contributors

GitHub Org's stars GitHub Follows GitHub Forks GitHub Watch

Python Django Quasar Cli Vue NodeJS

YouTube

English | δΈ­ζ–‡


πŸ“‹ Table of Contents


🌟 Project Introduction

Bomiot is a revolutionary distributed document management framework and full-stack development platform, with core components written in Rust, designed to solve modern development pain points. We believe that excellent open-source projects should not only have powerful technology stacks but also focus on developer experience and team collaboration efficiency, making it simple and easy to learn.

🎯 Design Philosophy

  • Learning Curve: Backend supports Django, FastAPI, Flask; Frontend supports React, Angular, Vue, Django built-in Templates (official provides a Vue set)
  • Developer Friendly: Seamless experience from 0 to 1, no complex configuration required
  • Team Collaboration: Efficient development team interaction mechanisms
  • Modular Design: Plugin-based architecture with extensible functionality
  • Easy Deployment: pip installation, convenient for team deployment, supports Python 3.9+
  • Signal Mechanism: Data management through signal mechanism, more convenient custom API support
  • Enterprise Ready: Production-ready, supports large-scale deployment

✨ Core Features

πŸ”§ Development Tools

  • βœ… Project Scaffolding: One-click project and application creation
  • βœ… Plugin System: Rich plugin ecosystem
  • βœ… Real-time File Monitoring: Enhanced development efficiency

πŸ• Task Management

  • βœ… Scheduled Tasks: Powerful scheduling system
  • βœ… Task Monitoring: Real-time task status tracking
  • βœ… Error Handling: Intelligent exception handling mechanism
  • βœ… Log Management: Complete logging system

πŸ” Access Control

  • βœ… Fine-grained Permissions: Role-based access control
  • βœ… JWT Authentication: Secure identity authentication
  • βœ… API Permissions: Interface-level permission management
  • βœ… Operation Audit: Complete operation logs

🌍 Internationalization

  • βœ… Multi-language Support: Built-in internationalization framework
  • βœ… Dynamic Language Switching: Runtime language switching
  • βœ… Localization Configuration: Regional settings

πŸ“Š System Monitoring

  • βœ… Performance Monitoring: CPU, memory, disk monitoring
  • βœ… Process Management: Real-time system process monitoring
  • βœ… Network Monitoring: Network traffic statistics
  • βœ… Health Checks: System health status detection

πŸ“š Application Market

  • βœ… Application Sharing: Application market pip installation, convenient and fast
  • βœ… Component Market: Hot-pluggable components, dynamic import

πŸš€ Quick Start

1. Install Bomiot

# Install using pip
pip install bomiot

# Or install using poetry
poetry add bomiot

2. Initialize Workspace

# Initialize Bomiot workspace
bomiot init

3. Create Project

# Create new project
bomiot project my-project

# Create new application
bomiot new my-app

4. Database

# Initialize database
bomiot migrate

# If you created a new application, you can generate new database migration files
bomiot makemigrations

5. Create Administrator

# Initialize administrator
bomiot initadmin

# Reset administrator account password
bomiot initpwd

6. Start Service

# Start development server
bomiot run

# Or specify port
bomiot run --host 0.0.0.0 --port 8080

πŸ“¦ Installation Guide

System Requirements

  • Python: 3.9 or higher
  • Node.js: 18.19.1 or higher
  • Operating System: Windows, macOS, Linux

Modify Frontend

1. Install Frontend Dependencies

# Enter frontend directory
cd my-project/templates

# Install dependencies
yarn install

2. Open Development baseUrl

# Change axios.js
vim my-project/templates/src/boot/axios.js
# axios.js code snippet modification
 ...
const baseURL = 'http://127.0.0.1:8000' // Replace with your actual API URL

const api = axios.create({
  baseURL: baseURL ##Open this
})
 ...

3. Frontend Development Debugging

# Ensure backend is already started
bomiot run
# Restart frontend
cd my-project/templates

&

quasar dev

πŸ› οΈ Command Line Tools

Bomiot provides powerful command line tools to make development and management simple and efficient.

πŸ“‹ Command Overview

bomiot [command] [options]

πŸ”§ Core Commands

Project Management

# Help command
bomiot -h

# View version number
bomiot -v

# Initialize workspace
bomiot init

# Create new project
bomiot project <project_name>

# Create new application
bomiot new <app_name>

# Create plugin
bomiot plugins <plugin_name>

Application Market

# Application market
bomiot market <project_name>

# Plugin installation, plugins are automatically hot-imported
pip install -y <plugin_name>

or

poetry add <plugin_name>

Database Management

# Create database migration
bomiot makemigrations

# Execute database migration
bomiot migrate

# Load initial data
bomiot loaddata <source>

# Export data
bomiot dumpdata [appname]

User Management

# Create administrator account
bomiot initadmin

# Reset administrator password
bomiot initpwd

Service Management

# Start server
bomiot run [options]

# Deploy project
bomiot deploy <project_name>

System Validation

# Initialize validation Keys
bomiot keys

πŸš€ Server Startup Options

bomiot run [options]

Options:
  --host, -b HOST                Server host address (default: 127.0.0.1)
  --port, -p PORT                Server port (default: 8000)
  --workers -w WORKERS           Number of worker processes (default: 1)
  --log-level LEVEL              Log level (critical/error/warning/info/debug/trace)
  --ssl-keyfile FILE             SSL key file
  --ssl-certfile FILE            SSL certificate file
  --proxy-headers                Enable proxy headers
  --http HTTP                    HTTP implementation (auto/h11/httptools)
  --loop LOOP                    Async loop (auto/asyncio/uvloop)
  --limit-concurrency            Maximum concurrent requests (default: 1000)
  --backlog                      Maximum waiting connections (default: 128)
  --timeout-keep-alive           HTTP keep-alive timeout (default: 5)
  --timeout-graceful-shutdown    Graceful shutdown timeout (default: 30)

πŸ“ Usage Examples

# Basic startup
bomiot run

# Test api,method("GET")
"name": "django", "url": "http://127.0.0.1:8000/test/"
"name": "fastapi", "url": "http://127.0.0.1:8000/fastapi/test/"
"name": "flask", "url": "http://127.0.0.1:8000/flask/test/"

# Specify port and host
bomiot run --host 0.0.0.0 --port 8080

# Production environment configuration
bomiot run --host 0.0.0.0 --port 80 --workers 4 --log-level info

# SSL configuration
bomiot run --ssl-keyfile key.pem --ssl-certfile cert.pem

πŸ—οΈ Project Structure

my-project/                    # Project directory
β”œβ”€β”€ fastapi_app/               # fastapi app
β”‚   └── main.py                # Main file
β”œβ”€β”€ flask_app/                 # flask app
β”‚   └── main.py                # Main file
β”œβ”€β”€ language/                  # Backend language files
β”‚   β”œβ”€β”€ en-US.toml             # English translation file       
β”‚   └── zh-CN.toml             # Chinese translation file
β”œβ”€β”€ media/                     # Static files
β”‚   β”œβ”€β”€ img/                   # Public images       
β”‚   └── ***.md                 # Various md documents
β”œβ”€β”€ static/                    # Static files
β”œβ”€β”€ __version__.py             # my-project version
β”œβ”€β”€ bomiotconf.ini             # Bomiot project identifier file
β”œβ”€β”€ files.py                   # File signals
β”œβ”€β”€ receiver.py                # Data API signals
β”œβ”€β”€ server.py                  # Server signals
└── README.md                  # ReadME documentation
dbs/                           # Database files
logs/                          # System logs
setup.ini                      # Project configuration file
...

πŸ”§ Configuration

Environment Configuration

Bomiot uses configuration files to manage different environment settings:

# setup.ini
[project]
name = my-project

[database](requires keys validation)
# Supports multiple databases (sqlite, mysql, oracle, postgresql)
engine = sqlite
name = db_name
user = db_user
password = db_pwd
host = db_host
port = db_port

[local]
time_zone = UTC

[jwt]
user_jwt_time = 1000000

[throttle]
allocation_seconds = 1
throttle_seconds = 10

[request]
limit = 2

[file](requires keys validation)
file_size = 102400000
file_extension = py,png,jpg,jpeg,gif,bmp,webp,txt,md,html,htm,js,css,json,xml,csv,xlsx,xls,ppt,pptx,doc,docx,pdf

Database Configuration

Supports multiple databases:

  • SQLite (default)
  • MySQL (requires keys validation)
  • PostgreSQL (requires keys validation)
  • Oracle (requires keys validation)

🌐 Deployment Guide

Supervisor

# Generate deployment files
bomiot deploy my-project

# Point supervisord.conf to this file to complete daemon process deployment

Scheduled Tasks

Supported Scheduled Tasks

ARGS_MAP = {
    'cron': ['year', 'month', 'day', 'week', 'day_of_week', 'hour', 'minute', 'second', 'start_date', 'end_date','timezone'],
    'interval': ['weeks', 'days', 'hours', 'minutes', 'seconds', 'start_date', 'end_date', 'timezone'],
    'date': ['run_date', 'timezone']
}

Writing Scheduled Tasks

from bomiot.server.core.signal import bomiot_signals

def my_scheduled_task(sender, **kwargs):
    print("Execute scheduled task")
    
# Send signal to bomiot anywhere, usually written in urls.py, refresh web page to take effect
bomiot_signals.send(sender=my_scheduled_task, msg={
    'models': 'JobList',
    'data': {
        'trigger': 'interval',
        'seconds': 60,
        'end_date': '2099-05-30',
        'description': 'Execute every 60 seconds, end on May 30, 2099'
    }
})

🀝 Contributing

We welcome all forms of contributions!

Ways to Contribute

  1. Report Bugs: Create Issue
  2. Feature Requests: Submit Feature Request
  3. Code Contributions: Fork the project and submit Pull Request
  4. Documentation Improvements: Help improve documentation
  5. Community Support: Answer other users' questions

Ways to Contribute Code

# 1. Fork the project
# 2. Clone your Fork
git clone https://github.com/your-username/Bomiot.git

# 3. Create feature branch
git checkout -b feature/amazing-feature

# 4. Commit changes
git commit -m 'Add amazing feature'

# 5. Push to branch
git push origin feature/amazing-feature

# 6. Create Pull Request

Code Standards

  • Follow PEP 8 Python code standards
  • Add appropriate comments and docstrings
  • Write unit tests
  • Ensure all tests pass

πŸ“„ License

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


πŸ”— Related Links

πŸ“Ί Video Tutorials

πŸ› Issue Reporting

πŸ’¬ Community


⭐ If this project helps you, please give us a Star!

Made with ❀️ by Bomiot Team

About

Powerful Distributed Document Management Framework & Full-Stack Development Platform

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages