One App you can do everything
Powerful Distributed Document Management Framework & Full-Stack Development Platform
- π Project Introduction
- β¨ Core Features
- π Quick Start
- π¦ Installation Guide
- π οΈ Command Line Tools
- ποΈ Project Structure
- π§ Configuration
- π Deployment Guide
- π Scheduled Tasks
- π€ Contributing
- π License
- π Related Links
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.
- 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
- β Project Scaffolding: One-click project and application creation
- β Plugin System: Rich plugin ecosystem
- β Real-time File Monitoring: Enhanced development efficiency
- β Scheduled Tasks: Powerful scheduling system
- β Task Monitoring: Real-time task status tracking
- β Error Handling: Intelligent exception handling mechanism
- β Log Management: Complete logging system
- β Fine-grained Permissions: Role-based access control
- β JWT Authentication: Secure identity authentication
- β API Permissions: Interface-level permission management
- β Operation Audit: Complete operation logs
- β Multi-language Support: Built-in internationalization framework
- β Dynamic Language Switching: Runtime language switching
- β Localization Configuration: Regional settings
- β 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 Sharing: Application market pip installation, convenient and fast
- β Component Market: Hot-pluggable components, dynamic import
# Install using pip
pip install bomiot
# Or install using poetry
poetry add bomiot# Initialize Bomiot workspace
bomiot init# Create new project
bomiot project my-project
# Create new application
bomiot new my-app# Initialize database
bomiot migrate
# If you created a new application, you can generate new database migration files
bomiot makemigrations# Initialize administrator
bomiot initadmin
# Reset administrator account password
bomiot initpwd# Start development server
bomiot run
# Or specify port
bomiot run --host 0.0.0.0 --port 8080- Python: 3.9 or higher
- Node.js: 18.19.1 or higher
- Operating System: Windows, macOS, Linux
# Enter frontend directory
cd my-project/templates
# Install dependencies
yarn install# 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
})
...# Ensure backend is already started
bomiot run# Restart frontend
cd my-project/templates
&
quasar devBomiot provides powerful command line tools to make development and management simple and efficient.
bomiot [command] [options]# 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
bomiot market <project_name>
# Plugin installation, plugins are automatically hot-imported
pip install -y <plugin_name>
or
poetry add <plugin_name># Create database migration
bomiot makemigrations
# Execute database migration
bomiot migrate
# Load initial data
bomiot loaddata <source>
# Export data
bomiot dumpdata [appname]# Create administrator account
bomiot initadmin
# Reset administrator password
bomiot initpwd# Start server
bomiot run [options]
# Deploy project
bomiot deploy <project_name># Initialize validation Keys
bomiot keysbomiot 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)# 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.pemmy-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
...
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,pdfSupports multiple databases:
- SQLite (default)
- MySQL (requires keys validation)
- PostgreSQL (requires keys validation)
- Oracle (requires keys validation)
# Generate deployment files
bomiot deploy my-project
# Point supervisord.conf to this file to complete daemon process deployment
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']
}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'
}
})We welcome all forms of contributions!
- Report Bugs: Create Issue
- Feature Requests: Submit Feature Request
- Code Contributions: Fork the project and submit Pull Request
- Documentation Improvements: Help improve documentation
- Community Support: Answer other users' questions
# 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- Follow PEP 8 Python code standards
- Add appropriate comments and docstrings
- Write unit tests
- Ensure all tests pass
This project is licensed under the APLv2 License - see the LICENSE file for details.
β If this project helps you, please give us a Star!
Made with β€οΈ by Bomiot Team