简约固执己见的 Mastodon 网络客户端。
?️ 发音: /fænpi/
( FAN-pee
) ?听
这是 Mastodon 的替代 Web 客户端。
production
分部main
?关注 Mastodon 上的 @phanpy 了解最新动态 ✨
一切都是按照我的品味和愿景设计和设计的。这是我的一个个人业余项目,旨在了解 Mastodon 并尝试新的 UI/UX 想法。
@username
),而不是完整帐户用户名 ( @username@instance
) 。[NAME] @[username]
。@[username]
,始终排除实例域名。[NAME]
看起来与@[username]
相同,则@[username]
也会被排除。inReplyToId
,直到找到根帖子。Thread
。...
先决条件:Node.js 18+
npm install
- 安装依赖项npm run dev
- 并行启动开发服务器和messages:extract
( clean
+ ``watch`)npm run build
- 为生产而构建npm run preview
- 预览生产版本npm run fetch-instances
- 从 joinmastodon.org/servers 获取实例列表,将其保存到src/data/instances.json
npm run sourcemap
- 在生产版本上运行source-map-explorer
npm run messages:extract
- 从源文件中提取消息并更新区域设置消息目录其中一些将来可能会发生变化。前端世界瞬息万变。
所有翻译均以src/locales
文件夹中的 gettext .po
文件形式提供。默认语言为英语 ( en
)。 CLDR 复数规则用于复数化。 RTL(从右到左)语言也支持正确的文本方向、图标渲染和布局。
页面加载时,通过这些方法按顺序检测默认语言(使用第一个匹配):
lang
例如/?lang=zh-Hant
localStorage
密钥lang
navigator.language
用户可以在设置中更改语言,这会设置localStorage
键lang
。
*灵感来自翻译 WordPress 手册:
{account}
(变量)、 <0>{name}0>
(带变量的标签)和#
(数字占位符)。Intl.DateTimeFormat
- 例如“8 Aug”、“08/08/2024”Intl.RelativeTimeFormat
- 例如“2 天前”、“2 天内”Intl.NumberFormat
- 例如“1,000”、“10K”Intl.DisplayNames
- 例如繁体中文 ( zh-Hant
) 中的“English”( en
) 是“中文”Intl.Locale
(带有适用于旧版浏览器的polyfill)Intl.Segmenter
(带有适用于旧版浏览器的polyfill)
将始终遵循系统的区域设置,而不是用户设置的区域设置。U+200F
,
) 可能需要用于混合 RTL/LTR 文本,特别是对于
元素 ( document.title
)。pseudo-LOCALE
语言环境,用于伪本地化。它用于测试,不会出现在生产中。en
) 目录消息不会单独捆绑。其他语言环境捆绑为单独的文件并按需加载。这确保en
始终可用作后备。翻译在 Crowdin 上进行管理。您可以通过志愿翻译来提供帮助。
阅读介绍文档以开始使用。
这是一个纯静态的网络应用程序。您可以将其托管在任何您想要的地方。
两种方式(二选一):
转到版本并下载最新的phanpy-dist.zip
或phanpy-dist.tar.gz
。它是预先构建的,因此不需要运行任何安装/构建命令。提取它。提供提取文件的文件夹。
需要 Node.js。
下载或git clone
此存储库。使用production
分支来发布稳定版本,使用main
来发布最新版本。通过运行npm run build
(在npm install
之后)来构建它。提供dist
文件夹。
可以通过将环境变量传递给构建命令来完成自定义。示例:
PHANPY_CLIENT_NAME= " Phanpy Dev "
PHANPY_WEBSITE= " https://dev.phanpy.social "
npm run build
PHANPY_DEFAULT_INSTANCE=hachyderm.io
PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL=https://hachyderm.io/auth/sign_up
PHANPY_PRIVACY_POLICY_URL=https://hachyderm.io/privacy-policy
npm run build
也可以在.env
文件中设置它们。
可用变量:
PHANPY_CLIENT_NAME
(可选,默认值: Phanpy
)影响:PHANPY_WEBSITE
(可选但推荐,默认值: https://phanpy.social
)影响:PHANPY_DEFAULT_INSTANCE
(可选,无默认值):https://
PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL
(可选,无默认值):https://mastodon.social/auth/sign_up
PHANPY_PRIVACY_POLICY_URL
(可选,默认为官方实例的隐私政策):PHANPY_DEFAULT_LANG
(可选):en
)。lang
查询参数、 localStorage
和navigator.language
中的lang
键)PHANPY_LINGVA_INSTANCES
(可选,以空格分隔的列表,默认值: lingva.phanpy.social [...hard-coded list of fallback instances]
):/.env
中硬编码的后备实例列表PHANPY_IMG_ALT_API_URL
(可选,无默认值):PHANPY_GIPHY_API_KEY
(可选,无默认值):尝试在线搜索“如何自行托管静态网站”,因为有很多方法可以做到这一点。
请参阅 lingva-translate 或 lingva-api 的文档。
这些都是由其他优秀人士自行主持的。
注意:通过创建拉取请求来添加您的。
运行和开发此 Web 应用程序涉及的成本:
Phanpy 是地面型神奇宝贝。
我是 Twitter 最早的用户之一。 Twitter 于 2006 年 7 月 15 日推出。我于 2006 年 12 月加入,我的第一条推文于 2006 年 12 月 18 日发布。
我知道早期的 Twitter 是什么样子。很有趣。
当时,我用 Python 和 Google App Engine 编写了一个名为“Twig”的 Twitter 克隆版。我几乎用 Appcelerator Titanium 编写了自己的 Twitter 桌面客户端。我在一次小型会议上发表了有关 Twitter 客户端的最佳演讲之一。我构建了一个名为“Twitter Columns”的网络应用程序,可以显示您的关注者列表、您的关注者的关注者、您的关注者、您的关注者的关注者等等。 2009 年,我写了一篇题为“我如何开始使用 Twitter”的博文。我为 DestroyTwitter(Jonnie Hallman 用 Adobe Air 制作的桌面客户端)创建了两个主题,其中一个名为“Vimeo”。 2013 年,我编写了自己的推文备份站点,其中包含一个用于查看我的推文的前端和一个用于存储推文的 CouchDB 后端。
已经过去15年多了。
我在这里。构建 Mastodon 网络客户端。
请复制此应用程序中的 UI 想法和实验。我认为其中一些非常好,如果更多的应用程序拥有它们那就太好了。
如果您不是开发人员,请告诉您最喜欢的社交媒体客户端开发人员有关此应用程序的信息,并要求他们复制 UI 想法和实验。
麻省理工学院。