我决定把我自用了两年的笔记项目开源出来 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yuchangye
V2EX    分享创造

我决定把我自用了两年的笔记项目开源出来

  •  
  •   yuchangye 1 天前 1766 次点击

    Rote Preview

    从 Rote 诞生到现在,有两年了,陆陆续续开发和重构了不知道多少个版本,截止写下这篇文章的时候,已经有 860 个 Commits 了,它伴随着我的成长。

    诞生背景

    关于 Rote 的诞生,毫不避讳的说灵感来自于 usememos 这个开源项目,在更早的时候我是 usememos 的忠实用户,还为 usememos 做了一个小程序的开源客户端(memos_wmp),但是后面慢慢感觉这个项目变得臃肿且复杂,和自己的笔记需求有了更多的分歧。

    就自己另起炉灶开发了 Rote,Web 版本在界面和交互设计上更多的借鉴了 Twitter 和 Tailwindcss 官网的我喜欢的设计,实现了自己认为已经足够丝滑和优雅的响应式设计。

    虽然有探索页面以及 Reactions ,但是我对它的定义并不是社区。探索页面只是会显示一些用户公开的笔记,就像我自己会经常公开一些自己觉得有意思的内容,其实本质上算是公开笔记功能的副作用。

    对我来说公开笔记是为了让对我感兴趣的人,有一个快速了解我在做什么,或者对什么感兴趣的渠道(你可能需要知道,在注册了账户后每个人都会有一个公开的个人页面,类似我的 个人主页,就像 Telegram 的 Channel ,我个人觉得也可以用来做博客,在大概好几年前我就已经丧失了经常去写一些长篇幅内容的心力,像这种笔记片段正好,写起来没有压力)

    Rote 的核心设计思路

    • 保持克制 - 一切为了优雅的笔记体验,和克制的互动体验
    • 低心智负担 - 更少的压力和更简单直观的记录体验乃至部署体验
    • 开放接口 - 开放 API 接口,支持在任意的场景记录或者获取数据
    • 无拘无束 - 完全掌控你的数据,自由导出数据

    已支持的功能

    • Self-HostedServer 端以及 Web 端(前后端分离设计)
    • 简单的部署体验,通过 Docker compose 或者 Dokploy 模版快速启动 部署文档
    • iOS 客户端 支持任意自托管的实例(默认为我自己托管的站点,可通过多次点击登录页面左上角的欢迎文字,切换到你自己的实例)
    • 丝滑的 Web 响应式设计以及沉浸感十足的 PWA 支持
    • OAuth 支持,目前已经支持 GitHubApple LoginGoogle 在计划中
    • RSS 支持,类似 RSS 订阅 可以订阅我的动态
    • Reactions 匿名用户或者登录用户都可以对自己的或者别人公开的笔记戳表情
    • S3 储存支持,默认使用 Cloudflare R2 储存,可以跳过配置
    • 探索页面,用来展示站内所有用户公开的笔记内容
    • 笔记标签归档状态可见性状态附件
    • 基础的组件热力图标签云随机回顾以及搜索支持
    • 带有权限控制的 OpenKey 用来部分使用勾选的能力(比如直接通过 GET 请求来添加笔记)
    • 管理员仪表页面,包括站点设置,存储设置,界面设置,用户管理,安全设置,OAuth 登录
    • 实验中的功能,Service Worker 通知(我想让 Rote 实现类似 Bark 的即时通知),数据导出EveryDayOneCat 小组件
    • 公开的笔记直链分享 示例笔记,你的个人公开的主页 Rabithua
    • 多语言支持 中文 / 英文

    iOS 客户端功能

    • 基础的笔记功能增删改查
    • 个人信息以及个人主页
    • 探索页面(可以在里面看到别人公开的有意思的内容以及添加 Reaction
    • 生成笔记分享图(长按笔记)
    • 自定义界面显示(文字粗细大小,是否显示头像,颜色主题偏好,是否开启震动反馈)
    • 统计页面(现在的笔记数据沉淀太差,未来客户端会着重考虑这块)
    • 几个符合直觉的小组件最近笔记随机笔记热力图
    • 快捷指令,复制完内容后手动触发快捷指令快速记录笔记(目前尚不稳定,可能在不同的语言环境或者特殊内容情况下出现问题)
    • 按照 标签/可见性/是否归档/时间/关键字 搜索笔记
    • 非常丝滑的时间轴视图
    • 多语言支持 简体中文 / 繁体中文 / 英文 / 日语 / 韩语 /
    • iOS 符合直觉的原生交互体验
    • 可爱的头上长草的未知生物
    • 未知小彩蛋

    Rote iOS 客户端目前并没有开源,很惭愧由于生活拮据,未来考虑把 Rote 客户端作为付费项目来维持生计(目前仍然是免费下载),如果哪天我不为生计发愁了,会把它开源出来的。

    直接上手 >> DemoGithubWebsiteiOS APPExploreRabithua

    15 条回复    2025-12-26 18:34:20 +08:00
    CXPLAY
        1
    CXPLAY  
       1 天前 via Android   2
    挺好的, Android 用户也希望有个第一方原生客户端
    ClarkAbe
        2
    ClarkAbe  
       1 天前
    @CXPLAY 怎么感觉你每天都高强度各种地方冲浪 QAQ
    CXPLAY
        3
    CXPLAY  
       1 天前 via Android
    @ClarkAbe 日常性狂暴吞噬信息流!
    wxyrrcj
        4
    wxyrrcj  
       23 小时 4 分钟前
    可以支持下 android 客户端么 ~。~ 看起来不错
    evan1
        5
    evan1  
    PRO
       22 小时 50 分钟前
    @CXPLAY #3 日常性狂暴摸鱼!
    CXPLAY
        6
    CXPLAY  
       22 小时 48 分钟前
    @evan1 对的对的, 摸到的才是真正赚到的!
    byp
        7
    byp  
       22 小时 42 分钟前
    感觉跟 memos 好像
    Rebron1900
        8
    Rebron1900  
       22 小时 25 分钟前
    如果基于 activitypub 就好了。
    ldlywt
        9
    ldlywt  
       22 小时 4 分钟前 via Android
    安卓求
    lockheart
        10
    lockheart  
       22 小时 2 分钟前 via iPhone
    未来会转向订阅付费吗?考虑到笔记迁移的麻烦程度,最好能聊一下对付费的规划
    suian
        11
    suian  
       17 小时 23 分钟前
    @CXPLAY 都在哪里摸鱼哇,我也想摸
    faketemp
        12
    faketemp  
       17 小时 6 分钟前 via iPhone
    10 楼同问 如果之后只是考虑客户端付费模式还可以尝试迁移规划长期使用 如果以后考虑服务端付费模式建议提前聊一下早做规划
    johnbobby
        13
    johnbobby  
       15 小时 59 分钟前
    Requires iOS 18.6 or later. 版本要求太高了。

    我用的 memos v0.14.4 ,没有 AI ,UI 简洁,编辑器能全屏
    chenbz
        14
    chenbz  
       14 小时 24 分钟前
    哈哈哈,阮一峰科技爱好者周刊(第 379 期)有看到你的分享,我的也推荐了,同期排第 10 (“离线版问卷“)
    CXPLAY
        15
    CXPLAY  
       13 小时 40 分钟前
    @suian 没事就刷各种站呗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3610 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 00:14 PVG 08:14 LAX 16:14 JFK 19:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86