Flask webhook 端点,支持 CORS
TRMNL-Boilerplate — Flask 启动器模板
作者 OptimumMeans
用于开发 TRMNL 电子墨水屏插件的 Flask 启动模板,提供 webhook 端点、显示生成服务、缓存与配置管理等基础结构。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
内置电子墨水屏显示优化与错误显示
API 服务模板带缓存与最后更新时间记录
基于环境变量的配置管理与校验
提供格式化、校验工具函数及 pytest 测试
附带 render.yaml,可部署到 Render
模板详细介绍
TRMNL-Boilerplate 是 OptimumMeans 维护的 Flask 启动模板,面向 TRMNL 电子墨水屏插件的开发。它把插件所需的常见部分预先搭好:带 CORS 支持的 Flask webhook 端点、显示生成服务、API 服务模板、缓存机制、结构化日志、错误处理以及基于环境变量的配置管理,并附带格式化与校验工具函数。
项目按 src/app.py、src/config.py、src/services、src/utils 和 tests 组织。开发者通常修改 api_service.py 实现数据获取逻辑,调整 display.py 定制电子墨水屏布局,再按需扩展 utils 与配置。运行需要 Python 3.12+、TRMNL 设备与 API 密钥,Docker 为可选项;本地通过 python -m src.app 启动,默认访问 http://localhost:8080/ 与 /webhook。仓库提供 render.yaml,可用于 Render 部署,并包含 pytest 测试。
模板采用 MIT 许可,可免费使用、修改、商用与分发,但需保留版权与许可声明;演示图片、字体、图标等第三方素材以及域名、托管等外部服务需另行核对或可能产生费用。
适合你的项目吗?
适用场景
- 为 TRMNL 电子墨水屏开发自定义数据展示插件
- 需要快速搭建带 webhook 与缓存的后端服务
- 在 Flask 项目中复用显示生成与格式化工具
适合人群
- 熟悉 Python 与 Flask 的开发者
- 需要 TRMNL 设备与 API 密钥的使用者
- 希望以 MIT 许可二次开发或商用的团队
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Python 3.12+,Docker 为可选项
- 2
复制 .env.template 为 .env,并填写 TRMNL_API_KEY 与 TRMNL_PLUGIN_UUID
- 3
本地运行:python -m src.app,访问 http://localhost:8080/ 与 /webhook
- 4
测试:python -m pytest tests/
- 5
部署可使用仓库中的 render.yaml(Gunicorn + Render)
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 使用该模板需要拥有 TRMNL 设备并配置 TRMNL API 密钥(TRMNL_API_KEY),否则无法与 TRMNL 服务对接。
- 需在 .env 中填写 TRMNL 插件 UUID(TRMNL_PLUGIN_UUID),该标识由 TRMNL 平台分配。
- 仓库提供的部署配置面向 Render 平台,使用该部署方式需注册 Render 账号,可能涉及外部托管费用。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
TRMNL device and API key
README 原文
TRMNL_PLUGIN_UUID=your_plugin_uuid_here
README 原文
https://github.com/OptimumMeans/TRMNL-Boilerplate/blob/main/LICENSEhttps://github.com/OptimumMeans/TRMNL-Boilerplate/blob/main/README.mdDeploy using render.yaml configuration
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 81 / 100
- 技术栈
- Flask
- 网站类型
- 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2024-12-30
- 截图检查日期
- 2026-10-02
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Flask。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: 5e29c6b5b85eb38ffd3889533a163f8add070be5644d36f90d93470dac37b8fd
2026-10-02T18:59:35.829Z
来源文件 / 仓库# TRMNL Plugin Boilerplate
A boilerplate template for creating TRMNL e-ink display plugins.
## Features
- Flask-based webhook endpoint with CORS support
- E-ink display optimization
- Built-in caching system
- Comprehensive error handling
- Structured logging
- Environment-based configuration management
- Display generator service with error display support
- API service template with caching
- Extensive utility functions for formatting and validation
## Prerequisites
- Python 3.12+
- TRMNL device and API key
- Docker (optional)
## Installation
1. Clone the repository:
```bash
git clone https://github.com/yourusername/your-plugin.git
cd your-plugin
```
2. Create and activate a virtual environment:
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. Install dependencies:
```bash
pip install -r requirements.txt
```
4. Create .env file:
```bash
cp .env.template .env
```
5. Update .env with your configuration:
```
TRMNL_API_KEY=your_api_key_here
TRMNL_PLUGIN_UUID=your_plugin_uuid_here
```
## Development
### Running Locally
```bash
python -m src.app
```
The development server will automatically open your default browser to the webhook endpoint. You can access:
- Home page: http://localhost:8080/
- Webhook endpoint: http://localhost:8080/webhook
### Project Structure
```
├── .env.template # Environment variables template
├── .gitignore # Git ignore rules
├── README.md # Project documentation
├── render.yaml # Render deployment configuration
├── requirements.txt # Python dependencies
├── src/ # Source code directory
│ ├── app.py # Main application entry point
│ ├── config.py # Configuration management
│ ├── services/ # Core services
│ │ ├── api_service.py # API interaction service
│ │ └── display.py # Display generation service
│ └── utils/ # Utility functions
│ ├── __init__.py # Package exports
│ ├── formatters.py # Data formatting utilities
│ └── validators.py # Data validation utilities
└── tests/ # Test files
└── test_display.py # Display service tests
```
### Core Components
1. **API Service** (`src/services/api_service.py`)
- Handles all API interactions
- Implements caching mechanism
- Tracks last update timestamp
2. **Display Generator** (`src/services/display.py`)
- Creates optimized images for e-ink display
- Handles error displays
- Supports status bar and content layout
3. **Utility Functions**
- `formatters.py`: Date/time formatting, API response formatting
- `validators.py`: Data validation, string sanitization
- Common utilities exported through `__init__.py`
4. **Configuration** (`src/config.py`)
- Environment-based configuration
- Validation for required settings
- Default values for optional settings
### Creating Your Plugin
1. Modify `src/services/api_service.py` to implement your data fetching logic
2. Update `src/services/display.py` to customize the display layout
3. Add any additional utilities in `src/utils/`
4. Update configuration in `src/config.py` as needed
## Testing
Run the test suite:
```bash
python -m pytest tests/
```
Current test coverage includes:
- Display generator initialization
- Error display generation
- API service functionality
- Display creation with mock data
## Deployment
Deploy using render.yaml configuration:
```bash
render deploy
```
The render.yaml file includes:
- Python 3.12.0 runtime
- Gunicorn web server
- Environment variable configuration
- Build and start commands
## Contributing
1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request
## License
MIT看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

flask-boilerplate
Boilerplate template for a Python Flask application with Flask-SQLAlchemy, Flask-WTF, Fabric, Coverage, and Bo…
Flask · 启动器

openai-flask-starter
Starter project with OpenAI + Flask and template HTML.
Flask · 启动器

app-engine-starter
A basic template for App Engine projects.
Flask · 启动器

flask-account-starter
flexible and extensible Flask boilerplate template
Flask · 启动器

Py-Flask-Starter
Kick start 🚀 any python-flask app ASAP with this template
Flask · 启动器

flask-tailwindcss-starter
:snake: Starter project for Flask and TailwindCSS v4.0, ready to deploy in Vercel
Flask · 启动器
