如何给女朋友做一款 App?
我和女友总是找不到合适的电影看。通常,这个过程是这样的:
我:你想看什么电影?
女友:我不知道,你想看什么?
我:我们看《金刚大战哥斯拉》吧
女友:不,扎克·斯奈德的《正义联盟》怎么样?
我:不,太长了。《米纳里》怎么样?
女友:不,太严肃了。……怎么样?
所以,你懂的。
我们通常每周看 1 到 2 部电影,所以经常这样……
这种事不只是发生在我和女友身上。以前,我和朋友真的花一个多小时选电影。
问题很简单:我们不知道自己愿意看哪些电影。我甚至不知道愿意看什么电影。有什么解决办法吗?
作为一名软件工程师,我以技术为生。我可以做一些东西来解决这个问题。但前提是,我要先研究一些,人们解决这个问题的方法。而我在推特上发现了有用的信息。
我很兴奋,这似乎是个好主意:如果你和你的另一半都有一款 App,你可以向左或向右滑动流媒体上的电影。当你们找到的电影相匹配时,它会让你们知道。—— c a i t l i n
这并非一个原创想法,但我之前从未做过手机应用,所以我认为这将是一个很酷的学习体验。除此之外,我还可以用它来解决我和我关心的人之间的实际问题,这非常特别。
如何开发一款手机 App?
在基础层面上,我知道自己需要:
- 处理 API 调用的后端服务器
- 一个实际渲染应用的前端客户端
- 一个存储电影和用户爱好的数据库
- 一个用于存储图片的对象存储解决方案
既然是第一次研究手机应用开发,为什么不学习各个层次上的新东西呢?
前端:React Native
我不想编写原生代码,因为……,我没时间做那个。跨平台开发显然更理想。据我所知,我的选择要么是 React Native,要么是 Flutter。我在之前的一些项目中用过 React。虽然我不是 React 专家,但我至少了解一些它的基本知识。所以,我决定使用 React Native。
值得注意的是,我用了expo来处理实际的构建和部署过程。它为我节省了很多时间!
后端:express.js
对此,我没有太多要说的。我以前从未用过 Node.js,但经常听说它,所以我想尝试一下。
我很惊讶,它竟然如此容易使用!如果你理解了 API 的工作原理,就很容易深入下去。而且,我第一次编写了自己的中间件——太棒了!节省了我很多时间!
数据库:MongoDB
我以前只用过 SQL 数据库,所以我想也应该尝试一下面向文档的数据库。编写模型非常简单,但是我很难理解 MongoDB 的查询和聚合流。
我认为,查询还可以优化,但是,我能让它工作就不错了。
Blob 存储:Azure Storage
我选择用它的唯一原因是,每月可以获得 100 美元的 Azure 免费信贷。说实话,我认为它的文档很差,交互也很难。不过,这是可行的,但有些情况,我仍然不清楚应该如何处理。
获取数据
我编写了一个自动化的网络爬虫,它用新电影填充我的数据库。你知道世界上只有大约 50 万部电影吗?我可以在数据库中添加进所有电影。
TimeLine
构建 App
开发应用花费的时间最少,这让我很沮丧。我花了 2-3 周时间才把应用构建到能运行的地步(除了一些小 Bug 的修复)。
结果给我留下深刻印象。我能够:
- 看看我和我的朋友想看什么
- 成立一个小组,看看我们愿意看什么
- 根据服务(Netflix、Hulu 等)过滤和查看电影
- 按类型过滤和查看电影
通过应用商店审批
这个过程非常糟糕。我必须一次性支付 25 美元才能进入谷歌 Play 商店,每年支付 100 美元才能进入苹果应用商店。
此外,还有一些愚蠢的要求。
我需要至少提供 X 张截图,而且还指定了每张图的分辨率。最重要的是,我等了很长时间才获得批准。这个等待过程真的让我很痛苦。
苹果,谷歌。让我发布应用吧,你们已经掏空了我的口袋!
市场营销
虽然这个 App 最初是为我和我的朋友们准备的,但是如果我必须花钱开发这个应用,也许能吸引更多用户,把钱赚回来。
Reddit:和往常一样,我把它传遍了 reddit,并得到一些相当积极的反馈,在 r/sideproject 上的多个帖子获得大约 100 个赞。
Facebook:我把创意分享给大学的朋友们,还在 facebook 上发了帖子。他们很支持我,帮我推广这个应用。
此外,我发现一个名为 loom 的服务,并录下我对所有注册朋友的感谢。这不仅可以让他们见到我,还能鼓励他们与朋友分享。
后续
目前,WeWatch 大约有 400 个用户,这比我以前做过的任何东西都要多!上周末,我的女友让她的朋友们和我们一起过周末,我们要找部电影看。这是我的机会:
我:我们用 WeWatch 吧
女友:不,那太费时间了。我们就看《空中大灌篮》吧!
看来,我还要做些改进。
原文链接:
https://jerseyfonseca.com/blogs/wewatch?fileGuid=1nTXNuk6H50PbHMt
本文作者: InfoQ
你也许感兴趣的:
- 【外评】15 年前我给自己的一系列编程建议
- 【外评】软件复杂性的三大法则(或:为什么软件工程师总是脾气暴躁)
- 【外评】我对 The Clean Coder 的看法
- 【外评】我为什么编程
- 【外评】我们应该将编程法则视作谚语
- 【译文】40 亿条 if 语句
- 现在开始,把代码里的 else 丢掉!
- 程序员提交 PR 的理想长度是多少?有人答:50 行代码!
- 别再说 “技术债” 了!
- 经历多次重写,苹果平台最强科学计算器PCalc背后的故事
你对本文的反应是: