为了账号安全,请及时绑定邮箱和手机立即绑定

使用开源工具构建一个食品配送应用程序

简而言之;

想象一下:就像我一样,你感到饿了。你拿起手机,打开一个食品配送应用程序,准备点你最爱的菜肴。

这很常见,我们都有过这样的经历。
但是,主要使用开源软件来构建一个这样的系统会有多容易呢?让我们来看看!

附:千万不要在饿的时候开发自己的应用。
附附:这里提到的一些解决方案有很多开源的替代品。为了简单起见,我在不同的文章中会使用不同的工具。
附附附:除非其中一些工具给我提供长期合作的机会。那样的话,我真的不能拒绝 🤣。

Hungry cat

让我们快速剖析这类应用,并推断出基本的构建模块和功能。排除核心业务逻辑,以下是大多数食品配送应用程序的逻辑组件分解。

身份验证:登录

首先映入眼帘的是登录界面。你不想记住另一个密码,所以选择了无密码快速登录。在后台,SuperTokens 可以处理身份验证过程,让你在没有密码的麻烦情况下安全登录。它还管理会话,确保你的登录保持活跃并保护你的数据。

访问控制

一旦登录,你的用户角色会被验证。无论你是顾客、司机还是餐厅老板,Permify 都能确保你根据自己的角色访问正确的功能。

浏览餐厅

现在你正在浏览餐厅。所有这些数据——餐厅详情、菜单、评分——都可以存储在PostgreSQL这样一个强大的关系型数据库中。PostgreSQL处理复杂的查询,例如查找附近的餐厅或只显示当前正在营业的餐厅。它确保你的搜索结果快速且准确加载。

进行支付

你选择你的餐点,进行定制,然后继续支付。在这里,Lago 可以介入,处理账单和支付。Lago 可以轻松管理一次性支付和订阅(比如餐点计划),同时无缝集成各种支付网关。你可以安全地保存你的支付详情,而 Lago 确保支付处理顺畅。

实时通知

当您的订单被确认后,通知就开始陆续到来——您的订单正在准备中,您的配送员正在赶来。这种实时魔法可以由 Apache Kafka 提供消息队列和 AirNotifier 发送推送通知到您的手机来实现。Kafka 确保这些通知可靠地发送,而 AirNotifier 负责通过推送通知、短信或电子邮件发送它们。

与司机聊天

需要向司机发送关于特定配送单的消息吗?应用程序内置的聊天系统,可以由 Rocket.Chat 提供支持,允许您实时沟通。Rocket.Chat 促进了这种互动,确保您的消息快速可靠地送达。

跟踪您的配送

如果你和我一样急不可耐,或者像每一个饿着肚子的人一样,你肯定想尽快知道送餐员的位置。应用程序会显示送餐员的实时位置地图,这可以由 OpenStreetMapMapbox 提供支持。OpenStreetMap 提供免费的详细地图数据,而 Mapbox 负责实时显示和交互。两者结合,为你提供了一个开源的谷歌地图替代方案,让你清楚地看到送餐的进度。

使用缓存加速处理

为了确保应用程序运行快速,不惹恼那些饥饿的用户,经常访问的数据(如餐厅列表或订单历史)可以存储在 Redis 中。Redis 作为内存缓存,大大减少了数据库的负载并提升了应用程序的响应速度。

后台消息通知

当你下单时,后台会触发多个任务——发送通知、处理支付和更新餐厅库存。RabbitMQ 可以处理这种异步通信,确保所有这些任务可靠地执行而不阻塞你的主要应用体验。

快速交付内容

最后,在这个设置中,为了确保图片、菜单和其他静态内容能够快速加载,应用程序可以利用 CaddyMinIOCaddy 作为一个带有自动 HTTPS 的 web 服务器,而 MinIO 负责对象存储,从靠近用户的地点提供图片和其他资源,以减少加载时间。

这可能是你所在地区端到端食品配送应用程序的架构。接下来需要做的是:
1)选择你的业务逻辑所需的堆栈,
2)将所有部分整合在一起,
3)优化视觉效果,

)增加额外的复杂性(参见评论部分)。

一只快乐的狗狗在吃东西

你接下来想让我介绍什么类型的 app?
我想到的是一个本地徒步地图 app。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
8
获赞与收藏
25

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消