Skip to main content
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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bomiot-1.1.48.tar.gz (8.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bomiot-1.1.48-py3-none-any.whl (9.0 MB view details)

Uploaded Python 3

File details

Details for the file bomiot-1.1.48.tar.gz.

File metadata

  • Download URL: bomiot-1.1.48.tar.gz
  • Upload date:
  • Size: 8.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Windows/10

File hashes

Hashes for bomiot-1.1.48.tar.gz
Algorithm Hash digest
SHA256 ba6e32ed8a4b0a0bcb89cef468de41ce3a42a608e8e4fbe37cf9b2e739a6440e
MD5 42970eaf391e2f3a9d05614da71d39b5
BLAKE2b-256 1bcf42d5188bcc73b1b13a2ce5430567e2f64286fcfe8bb100fc4cf5bdf52ec4

See more details on using hashes here.

File details

Details for the file bomiot-1.1.48-py3-none-any.whl.

File metadata

  • Download URL: bomiot-1.1.48-py3-none-any.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Windows/10

File hashes

Hashes for bomiot-1.1.48-py3-none-any.whl
Algorithm Hash digest
SHA256 6caaf7d4e802bef8e97c5225e5fa37dd301513b97f0e5d9a07c80c7112597ad1
MD5 929b33a2bc0d0bb59dd497067d28ba35
BLAKE2b-256 9e02e40c721538b37cce15d20659e2c20cfd38832b46e7a179826aa215314c87

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.8

2 files

1.2.7

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.53

2 files

1.1.52

2 files

1.1.51

2 files

1.1.49

2 files

This release

1.1.48 This release

2 files

1.1.47

2 files

1.1.46

2 files

1.1.45

2 files

1.1.44

2 files

1.1.43

2 files

1.1.42

2 files

1.1.41

2 files

1.1.39

2 files

1.1.38

2 files

1.1.37

2 files

1.1.36

2 files

1.1.35

2 files

1.1.34

2 files

1.1.33

2 files

1.1.32

2 files

1.1.31

2 files

1.1.30

2 files

1.1.28

2 files

1.1.27

2 files

1.1.26

2 files

1.1.25

2 files

1.1.24

2 files

1.1.23

2 files

1.1.22

2 files

1.1.21

2 files

1.1.20

2 files

1.1.19

2 files

1.1.18

2 files

1.1.17

2 files

1.1.16

2 files

1.1.15

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.9.15

2 files

0.9.13

2 files

0.9.12

2 files

0.9.11

2 files

0.9.10

2 files

0.9.9

2 files

0.9.8

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.19

2 files

0.5.18

2 files

0.5.17

2 files

0.5.15

2 files

0.5.14

2 files

0.5.13

2 files

0.5.12

2 files

0.5.11

2 files

0.5.10

2 files

0.5.9

2 files

0.5.8

2 files

0.5.7

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.99

2 files

0.4.98

2 files

0.4.97

2 files

0.4.96

2 files

0.4.95

2 files

0.4.93

2 files

0.4.92

2 files

0.4.91

2 files

0.4.90

2 files

0.4.89

2 files

0.4.88

2 files

0.4.87

2 files

0.4.86

2 files

0.4.85

2 files

0.4.84

2 files

0.4.83

2 files

0.4.81

2 files

0.4.80

2 files

0.4.79

2 files

0.4.78

2 files

0.4.77

2 files

0.4.76

2 files

0.4.75

2 files

0.4.74

2 files

0.4.73

2 files

0.4.72

2 files

0.4.71

2 files

0.4.69

2 files

0.4.68

2 files

0.4.67

2 files

0.4.66

2 files

0.4.65

2 files

0.4.64

2 files

0.4.63

2 files

0.4.62

2 files

0.4.61

2 files

0.4.60

2 files

0.4.59

2 files

0.4.58

2 files

0.4.57

2 files

0.4.56

2 files

0.4.55

2 files

0.4.54

2 files

0.4.53

2 files

0.4.52

2 files

0.4.51

2 files

0.4.50

2 files

0.4.49

2 files

0.4.48

2 files

0.4.47

2 files

0.4.46

2 files

0.4.45

2 files

0.4.44

2 files

0.4.43

2 files

0.4.42

2 files

0.4.40

2 files

0.4.39

2 files

0.4.38

2 files

0.4.37

2 files

0.4.36

2 files

0.4.34

2 files

0.4.33

2 files

0.4.31

2 files

0.4.30

2 files

0.4.29

2 files

0.4.28

2 files

0.4.27

2 files

0.4.26

2 files

0.4.25

2 files

0.4.24

2 files

0.4.23

2 files

0.4.22

2 files

0.4.21

2 files

0.4.20

2 files

0.4.19

2 files

0.4.18

2 files

0.4.17

2 files

0.4.16

2 files

0.4.15

2 files

0.4.14

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.9

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.1

2 files

0.2.99

2 files

0.2.98

2 files

0.2.97

2 files

0.2.96

2 files

0.2.94

2 files

0.2.93

2 files

0.2.91

2 files

0.2.90

2 files

0.2.88

2 files

0.2.87

2 files

0.2.86

2 files

0.2.85

2 files

0.2.84

2 files

0.2.83

2 files

0.2.82

2 files

0.2.81

2 files

0.2.80

2 files

0.2.79

2 files

0.2.78

2 files

0.2.72

2 files

0.2.71

2 files

0.2.70

2 files

0.2.64

2 files

0.2.63

2 files

0.2.62

2 files

0.2.61

2 files

0.2.60

2 files

0.2.59

2 files

0.2.58

2 files

0.2.57

2 files

0.2.56

2 files

0.2.55

2 files

0.2.54

2 files

0.2.53

2 files

0.2.52

2 files

0.2.51

2 files

0.2.50

2 files

0.2.49

2 files

0.2.48

2 files

0.2.47

2 files

0.2.46

2 files

0.2.45

2 files

0.2.44

2 files

0.2.43

2 files

0.2.42

2 files

0.2.41

2 files

0.2.40

2 files

0.2.38

2 files

0.2.37

2 files

0.2.36

2 files

0.2.35

2 files

0.2.34

2 files

0.2.33

2 files

0.2.32

2 files

0.2.31

2 files

0.2.30

2 files

0.2.28

2 files

0.2.27

2 files

0.2.26

2 files

0.2.25

2 files

0.2.24

2 files

0.2.23

2 files

0.2.22

2 files

0.2.21

2 files

0.2.20

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.70

2 files

0.1.68

2 files

0.1.67

2 files

0.1.66

2 files

0.1.65

2 files

0.1.64

2 files

0.1.63

2 files

0.1.62

2 files

0.1.61

2 files

0.1.60

2 files

0.1.59

2 files

0.1.58

2 files

0.1.57

2 files

0.1.56

2 files

0.1.55

2 files

0.1.53

2 files

0.1.52

2 files

0.1.51

2 files

0.1.50

2 files

0.1.49

2 files

0.1.48

2 files

0.1.47

2 files

0.1.46

2 files

0.1.45

2 files

0.1.44

2 files

0.1.43

2 files

0.1.42

2 files

0.1.41

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.37

2 files

0.1.36

2 files

0.1.35

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page