MeowNocode
memos类开源高颜值便签应用
Install / Use
/learn @XuYouo/MeowNocodeREADME
Meow App
Meow App 是一个简洁的笔记应用,支持本地存储和云端同步。你可以使用Cloudflare D1作为云端数据库。
功能亮点:
- 画布模式,便于整理思绪
- 热力图数据统计,满满成就感
- 模糊语法,适用于记忆场景
- 每日回顾,温故而知新
- AI对话
特别感谢
- CNB cloud native buildhttps://cnb.cool/
- Meituan Nocodehttps://nocode.cn
- 各种 AI Coding Application。欢迎 Pull request!
demo
含D1数据库:https://memo.oneloved.top/
D1公共实例的登录密钥是:meow。请勿上传不良信息和个人信息。
本地开发
安装依赖
npm install
启动开发服务器
npm run dev
部署
使用Cloudflare Pages和 D1 数据库部署
准备工作
- 安装Wrangler CLI:
npm install -g wrangler - 登录Cloudflare账户:
wrangler login
创建D1数据库
- 创建一个新的D1数据库:
wrangler d1 create meow-app-db - 记下输出的database_id
设置访问密钥
- 生成一个安全的密钥(可以使用以下命令):
或者使用在线工具生成一个随机字符串。openssl rand -base64 32 - 在Cloudflare Pages设置中,添加环境变量:
- 变量名:
PASSWORD - 变量值:你生成的密钥
- 变量名:
- 这个密钥将用于保护你的应用,防止未授权访问。
配置wrangler.toml
- 编辑
wrangler.toml文件,将your-database-id替换为上一步获取的database_id
初始化D1数据库
- 执行以下命令初始化数据库:
wrangler d1 execute meow-app-db --file=./d1-schema.sql --remote
部署到Cloudflare Pages
- 将你的代码推送到GitHub仓库
- 在Cloudflare控制台中连接你的GitHub仓库
- 配置构建设置:
- 构建命令:
npm run build - 构建输出目录:
build
- 构建命令:
- 在Pages设置中,添加D1数据库绑定:
- 变量名:
DB - 数据库:选择你创建的D1数据库
- 变量名:
Docker 自部署(SQLite)
自部署版本复用了同一套前端构建产物,并通过自带的 Express + SQLite 后端提供 /api 接口。数据默认持久化在宿主机目录 /data 映射的 SQLite 文件中,与网页版依然兼容。
docker run -d \
--name meownocode \
-p 3000:3000 \
-e APP_PASSWORD=your-strong-password \
-v ./meownocode-data:/data \
docker.cnb.cool/1oved/meownocode
./meownocode-data会在宿主机创建用于持久化的目录,容器中的SQLITE_DB_PATH默认为/data/meownocode.db。
环境变量说明
APP_PASSWORD:前端登录所需的口令;留空表示关闭鉴权(不推荐)。PORT:后端监听端口,默认3000。SQLITE_DB_PATH:SQLite 文件绝对路径,默认/data/meownocode.db。CORS_ALLOW_ORIGIN:逗号分隔的允许域名,默认*。INIT_TOKEN:可选的初始化口令,若配置则/api/init需要Authorization: Bearer <token>。SERVE_STATIC:设为false时仅提供 API,不托管前端静态资源。
本地一体化运行(无需 Docker)
npm run build
npm run server
构建产物会存放在 dist/ 下,后端同样监听 http://localhost:3000 并使用 data/meownocode.db 作为本地持久化文件。
使用指南
云端同步
- 在应用中打开设置
- 在"数据"标签页中,启用"云端数据同步"
- 选择你想要使用的云服务提供商(Supabase或Cloudflare D1)
- 如果使用Supabase,需要先登录GitHub账号
- 如果使用Cloudflare D1,需要先输入D1鉴权密钥进行验证
- 密钥可以通过左侧栏中的密钥图标按钮输入
- 也可以在设置界面中的D1选项卡中输入
- 点击"备份到云端"或"从云端恢复"按钮进行数据同步
本地数据管理
- 在设置中的"数据"标签页,你可以导出和导入本地数据
- 导出的数据是JSON格式,包含所有想法、标签和设置
项目结构
src/- 源代码components/- React组件context/- React Contextlib/- 工具库和数据库服务
d1-schema.sql- D1数据库架构worker.js- Cloudflare Worker代码wrangler.toml- Cloudflare Workers配置
其他
数据库初始化与迁移
本项目支持两套后端存储:Cloudflare D1 。以下指引用于「全新初始化」与「更新既有数据库」。
更新既有数据库(迁移)
若你已有数据库,但表结构缺少新增字段,可按下面执行简单迁移。
- Cloudflare D1(SQLite)
-- 如缺少头像字段
ALTER TABLE user_settings ADD COLUMN avatar_config TEXT DEFAULT '{"imageUrl":""}';
-- 如缺少画布配置字段
ALTER TABLE user_settings ADD COLUMN canvas_config TEXT;
-- 如缺少双链数据
ALTER TABLE memos ADD COLUMN backlinks TEXT DEFAULT '[]';
-- 如需新增录音数据(audio_clips)
ALTER TABLE memos ADD COLUMN audio_clips TEXT DEFAULT '[]';
-- 如缺少 memos.created_at 索引
CREATE INDEX IF NOT EXISTS idx_memos_created_at ON memos(created_at);
- Supabase(Postgres)
-- 如缺少头像字段
ALTER TABLE user_settings ADD COLUMN IF NOT EXISTS avatar_config JSONB DEFAULT '{"imageUrl":""}'::jsonb;
-- 如缺少画布配置字段
ALTER TABLE user_settings ADD COLUMN IF NOT EXISTS canvas_config JSONB;
-- 如缺少双链数据
ALTER TABLE memos ADD COLUMN IF NOT EXISTS backlinks JSONB DEFAULT '[]'::jsonb;
-- 如需新增录音数据(audio_clips)
ALTER TABLE memos ADD COLUMN IF NOT EXISTS audio_clips JSONB DEFAULT '[]'::jsonb;
-- 如缺少 memos.created_at 索引
CREATE INDEX IF NOT EXISTS idx_memos_created_at ON memos(created_at);
Star History
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
