Skip to content

Repository files navigation

image

EasyTodo

A lightweight Flask + SQLite todo application with dark mode, drag-and-drop sorting, and multi-language support.

🚀 Quick Start (Docker)

# Pull and run
docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=false \
-v $(pwd)/database:/app/database \
ghcr.io/umink-lab/easytodo:latest

Visit http://localhost:5000

🌍 Custom Language Support

Add a New Language

  1. Create locale file in /backend/static/js/locales/ (e.g., fr.js):
window.i18nLocales=window.i18nLocales||{};window.i18nLocales['fr']={languageName: 'Français',translation: {'common.cancel': 'Annuler','index.title': 'EasyTodo',// ... copy all keys from en.js and translate}};
  1. Update index.json:
["zh-CN", "en", "ja", "fr"]

Docker Custom Translations

Mount your custom locales directory:

docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=false \
-v $(pwd)/database:/app/database \
-v $(pwd)/locales:/app/static/js/locales \
ghcr.io/umink-lab/easytodo:latest

🔒 Production Configuration

For HTTPS deployment, set secure cookies:

docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=true \
-e SESSION_COOKIE_SECURE=true \
-v $(pwd)/database:/app/database \
ghcr.io/umink-lab/easytodo:latest

📝 Key Environment Variables

VariableDefaultDescription
SECRET_KEY-Required. JWT signing key
AUTH_COOKIE_SECUREfalseSet true for HTTPS
SESSION_COOKIE_SECUREfalseSet true for HTTPS
JWT_TTL_SECONDS604800Token validity (7 days)

中文说明

轻量级 Flask + SQLite 待办应用,支持暗黑模式、拖拽排序和多语言。

🚀 一键部署(Docker)

# 拉取并运行
docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=false \
-v $(pwd)/database:/app/database \
ghcr.io/umink-lab/easytodo:latest

访问 http://localhost:5000

🌍 自定义语言

添加新语言

  1. 创建语言文件/backend/static/js/locales/(如 fr.js):
window.i18nLocales=window.i18nLocales||{};window.i18nLocales['fr']={languageName: 'Français',translation: {'common.cancel': 'Annuler','index.title': 'EasyTodo',// ... 复制 en.js 所有键并翻译}};
  1. 更新 index.json
["zh-CN", "en", "ja", "fr"]

Docker 自定义翻译

挂载自定义 locales 目录:

docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=false \
-v $(pwd)/database:/app/database \
-v $(pwd)/locales:/app/static/js/locales \
ghcr.io/umink-lab/easytodo:latest

🔒 生产环境配置

HTTPS 部署时启用安全 Cookie:

docker run -d --name easytodo \
-p 5000:5000 \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e AUTH_COOKIE_SECURE=true \
-e SESSION_COOKIE_SECURE=true \
-v $(pwd)/database:/app/database \
ghcr.io/umink-lab/easytodo:latest

📝 主要环境变量

变量默认值说明
SECRET_KEY-必填。JWT 签名密钥
AUTH_COOKIE_SECUREfalseHTTPS 部署时设为 true
SESSION_COOKIE_SECUREfalseHTTPS 部署时设为 true
JWT_TTL_SECONDS604800Token 有效期(7 天)

About

Easy-to-use personal to-do list

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages