我想分享我在个人工作中花费了很多时间的项目。它是一套漫画(manga)、漫画网(manhwa)、动画(anime)和韩国电视剧(kdramas)的即将发布网站。这个概念跟animecountdown.com类似,但覆盖了其他没有被覆盖的领域。
关于这个项目的技术部分:
所有4个网站都使用一个Astro monorepo,共享组件和数据管道,各自的配置文件和主题。它们分别部署在Vercel上。
数据管道是我花了最多时间的部分。每个网站都会爬取从不同的API(例如AniList、SIMKL、MangaDex、WEBTOON RSS)获取数据,然后将所有数据标准化为一个JSON格式,计算出下一次更新的时间戳。时区处理让我感到痛苦。每天都需要重新计算所有的时间表。
我还在Fly.io部署了一个Discord机器人,使用Discord.js,提供/订阅、/退订、/我的订阅这三个Slash命令。当每张章节更新时,GitHub Actions引发了一个工作流程,机器人就会自动回复给订阅者,也会在服务器的公共频道发布更新通知。
认证是通过Supabase的Discord OAuth实现的,能够让用户在网站上登录,并且会自动同步个人收藏夹。
如果我再来做这个项目,我会改变几个地方:我应该使用一个合适的队列管理通知管道,而不是在GitHub Actions中全程并发执行。随着项目的规模增长,这会成为了瓶颈。
如果你有任何关于架构或任何具体部分的问题欢迎提问。网站的地址是manhwadrops.com / mangadrops.com / dropsanime.com / kdramadrops.com。如果你想查看它们。
评论 (0)