·조회수 46

丹佛服务器时间项目的开发过程和回顾

项目介绍

这个项目是一个提供尽可能准确的服务器时间的服务。受欢迎的门票和选课通常在开放后几秒钟内就会关闭。因此,一旦时间到了,就必须快速申请。但问题是所有服务器的时间都略有不同。有些地方快2秒,有些地方慢1秒。甚至有更大的差异。提前检查服务器时间并进行选课现在是必不可少的。

开始的原因

在考虑进行哪个项目时,我意识到一件事。单人开发者的产品应该与资源丰富的公司不同。单人开发者资金有限,可用于开发的资源也有限。因此,即使牺牲一些产品性能,也必须制作使用更少资源的产品。这样才能持续下去。

用于选课或购票的服务器时间查询网站几乎不会给后端带来负担。通过Vercel部署,即使通过广告获得少量收入,也可以在我睡觉时每天赚一点钱。一旦创建,没有特殊问题的网站对于我这个单人开发者来说是一个很好的主题。

制作过程

  1. 这是我第一次进行的项目,所以我提前制定了计划并开始了。
    • 目标:年龄在10到30岁之间,经常预订演出或选课的人。
    • 开发周期:我设定为2周。
    • 第1周制作了仅包含核心功能的MVP版本,第2周添加了聊天功能并填补了下面缺失的部分。分阶段完成的原因是MVP版本可以提前部署,并且在改进时我效率最高。

2. 之所以将时间表设置得比项目规模长,是因为未来我计划发布多个这种规模较小的项目。与其每次都从头开始制作,不如预先制作模板和所需库,并使其可以在下一个项目中使用。

  • 创建了Next.js模板(预先设置了i18n、svgr、react-query、tailwindcss等)。
  • 制作了设计系统原型。预先制作了常用组件如按钮和输入框,并将其发布到Github packages,以便使用。
  1. 我没有购买域名,而是将其连接到子域名上。对于可能会带来广告收入的项目,我无法每月支付域名费用。我使用了https://servertime.danver.io

  2. 使用Route53解决了Vercel无服务器冷启动的问题。

  3. 将要做的事情细分是为了更容易工作,所以我提前制作了卡片。每完成一个卡片,我都会进行标记并放入桶中,以便每天检查我一天处理了多少事情。

  4. 我在桌子前放了一个Google Home,每次工作25分钟休息5分钟。长时间保持相同姿势对身体有害。通过经常进行小幅度的伸展,可以让我长时间专注而没有问题,因此我使用Google Home来帮助我。我尝试过番茄钟和其他方法,但这是最方便的。当我开始工作时,我说“嘿Google,25分钟计时器”,它会在25分钟后准确提醒我,这样我可以轻松管理时间。

  5. 我在Google表格中管理翻译文本。这样做是为了方便查看,以及在将来向朋友请求翻译时更加方便。我在表格中编写,然后通过命令下载以符合i18n的格式。

8. 我通过Github Packages发布了设计系统。与NPM不同,Github Packages可以免费使用私有包一定范围。

9. 我通过Vercel部署了网站,由于其无服务器特性,停止几分钟后会发生冷启动。我利用Route 53 Health Check每30秒发送请求,以确保始终可以快速访问。我参考了下面的博客文章。

https://medium.com/aws-tip/speeding-up-aws-amplify-nextjs-first-render-cold-start-and-images-an-unexpected-result-36a416d69615

使用的技术

  • Web:Next.js、Typescript、TailwindCSS
  • 多语言化:next-i18next(翻译)、使用Google表格管理翻译文本
  • 聊天:Firebase实时数据库
  • 播放声音:use-sound库(https://github.com/joshwcomeau/use-sound
  • 部署:通过Vercel自动部署
  • 后端:Next.js API路由后端

好的方面

  1. 第一次通过Github Packages发布和使用库
  2. 将自动部署应用于前端和后端,使我可以专注于代码。(可以在单人开发中解决资源不足的问题)
  3. 利用Firebase实时数据库轻松免费创建聊天服务(每天免费下载360MB)
  4. 确定了未来要使用的技术方向。对于赚钱来说,新颖和更好的技术并不总是必要的。因为业务比技术更重要。我选择了学习技术并解决问题的时间,而不是学习一种新技术,我选择了制作另一个项目。我在离职后有6个月的时间,我希望在这段时间内取得成果。

遇到的失败

1. 无法准确预测时间

这项服务的核心是了解服务器的准确时间,但这方面存在局限性。在Web上总是有延迟,因为根据网络情况,时间每次都会有所不同。由于CORS问题,即使在Vercel服务器而不是用户设备上向购票网站发送信号也存在问题。在找到更好的方法之前,我决定继续使用当前方法。

2. 通过Amplify部署Next.js

如果在Vercel上放置广告,则需要购买付费计划(每月$20)。尝试通过AWS Amplify进行部署,但由于locale检测困难而放弃。尽管尝试了中间件,但进展并不顺利。由于有固定的时间表,所以如果以后解决了问题,我会再次尝试。

3. AdSense批准失败

由于内容不足而失败。我需要添加更多内容。我决定通过博客获得广告批准。如果在根网址上获得批准,则可以在无需批准的情况下使用子域名,因此我计划通过博客获得批准,并计划在将来的项目中从一开始就插入广告。

## 结束语

虽然这只是一个简单的网站,但我很满意按计划制作出了成果。我为能够为下一个项目快速制作基础设施感到自豪。我觉得未来我的想法可能会有些改变。现在,如果在上班路上散步时突然有了想法,我可以立即尝试,因为我可以在一天内制作并部署一个小规模的新服务。

希望有一天完成的清单

  1. 建立一个环境,可以从其他用户那里获得语言翻译帮助。添加一种语言会增加搜索曝光率。我想要考虑一种方法来获得语言翻译帮助,因为无论我做什么服务,都可以使用。
김지식
김지식
웹, 앱 개발자입니다.

댓글

댓글을 불러오는 중...