Peloton:我的第一个React Native应用

我想挑战自己在一个周末内使用React Native来构建应用程序。 这是怎么回事。

想法

经过一段时间的训练后,过去几个月来,我非常定期地回到公路自行车上,尝试每周至少行驶100英里。 三个星期前,我去了天堂环路,那是完美的一天:阳光明媚,蓝天,低七十年代,安静的道路。

当我穿越Tiburon远端的起伏山丘时,我开始思考。 这是我脑海中对话的粗略笔录:

骑自行车真棒。

和别人一起骑会更好。

SF周围有很多团体游乐设施,为什么不参加呢?

好吧,时间安排并不总是可行。 有时无掉队游乐项目很烂; 慢的人举起东西,快的人让其他人受苦。

如果能够找到与具有类似技能水平的人一起骑行的服务,那就太好了。

应该有一个应用程序!

我一直想学习React Native一段时间。 Coursera使用React作为我们的内部工具,我一直想重新评估Douple本地移动应用程序的框架。

好吧,当我回到家时,我将使用React Native来构建一个应用程序来解决团体乘车问题。

概念证明

当我从骑车回来后,清理了种马,并将结果发布在Strava上后,我开始工作了。

第一天:寻找名称,进行线框设计和研究

该应用的名称必须是:简单,易于记忆且与骑行相关。 我想到的一些是:串联,标准,GroupRide。 我最终选择了佩洛顿。 不幸的是,在我搜索域名的第二天,我遇到了另一个人,这个人似乎已经有了类似的想法, 并且名字完全相同 。 糟糕! 不过,自从去年11月注册以来,似乎没有任何活动,因此希望该域名过期,然后我可以抓住它。 无论如何…

下半场我已经在脑海中开发了该应用程序。 它将需要一些视图,例如即将到来的游乐设施列表,创建游乐设施的页面,每个游乐设施的个人资料等。当我回来时,我决定创建一个快速的线框来捕捉我在纸上的想象。 该应用程序将非常简单:这是一个有趣的快速方法,可以与具有相似技能水平的人一起找到团队游乐设施。

线框创建后,我开始了研究,包括阅读React Native文档,查看Github上的示例以及弄乱一切。 榜样和潜入是我最好的学习方式。 自从高中微积分以来,就是这样。 总体而言,React似乎有一个非常健康的社区,而React Native却有一个规模较小但正在增长的社区,因此我发现了很多可以学习的地方。

我的互联网出故障时,我在下午2:15左右出现故障-谢谢康卡斯特! 由于要等到晚上7点才重新上线,并且我和妻子当天晚上计划去拜访朋友,所以我在工作大约四个小时后的第二天才打电话给它。 最初的计划是当我们回到家时取得更大的进步,但是几瓶酒很快就使这变成了梦pipe以求的事情。

第二天

为了在周末完成应用程序,我真的需要在第二天开始工作。 我从早上开始为配置文件,骑行详细信息和主页建立静态页面。 到了80度的天气和晴朗的天空的预报,我和我的妻子整天的中段时间都在Off the Grid Presidio Picnic享受美丽的天气。

当我们回来时,我已经有大约8个小时的时间才睡到晚上11点,但是由于我是个老人,所以我知道我会在10点左右入睡。建立一个功能齐全的应用程序的最初目标似乎不切实际,所以我修改它只是为了完成概念的静态证明。 我敲定了其余的视图,将所有视图挂钩,最后花了很多时间完成。 我什至有一些时间来制作漂亮的徽标并启动屏幕! (嗯,对我来说很甜蜜,因为我不是设计师……)

使它真正起作用

周日晚上完成概念验证非常棒。 我感觉自己对React Native有了很好的介绍,并且有一个有趣的小静态应用程序可以在手机上玩。 但是我真的很想继续这个项目,并使该应用程序真正发挥作用,并将其交给其他骑自行车的人。 接下来的三个星期,我在这里可以找到一个小时,在那里可以找到两个小时,然后将我需要的时间整理在一起。 以下是我为使其正常工作而进行的其他一些工作:

身份验证和数据存储

您会在我的原始线框中看到一个“使用Strava登录”按钮。 我想使身份验证尽可能简单。 许多骑自行车的人都在Strava上(如果您不参加,请加入!),所以我知道我可以利用他们的API来获取基本信息以及丰富的骑行历史统计信息,从而为Peloton建立个人资料。 这部分实际上非常简单:用户单击登录按钮,授权Peloton应用程序,我收到令牌并提取其最新信息,然后中提琴!

我考虑了几种数据存储选项,包括仅将自己的数据库与AWS结合使用。 但是有一段时间我一直想测试Firebase,所以我认为这是个很好的机会! Firebase可以轻松跟踪用户并管理对数据库的身份验证,因此我可以轻松地通过JSON Web令牌(JWT)连接Strava设置。 最终的身份验证流程如下所示:

首先,习惯Firebase和通过JSON树存储数据的概念比学习React Native更具挑战性。 我已经习惯了关系数据库,主要是MySQL,以至于看起来完全陌生。 幸运的是,他们在理解和结构化数据方面有非常有用的指南,因此它并非不可克服。 无论如何,数据量以及不同数据之间的关系对于Peloton而言并没有那么复杂:在其中有用户,游乐设施,游乐设施,通知以及这四个之间的关系。

去做

还有更多事情要做:将应用内通知连接到APNS和GCM,清理设计并进行测试!

我将在本月的剩余时间里旅行,所以我可能会在火车/飞机/汽车上遇到一些停机时间,以完成任务。 同时,这是一些屏幕截图:

登录屏幕,家庭出行列表,用户个人资料

骑行细节

创建行程,家庭通知,筛选行程

注册 尝试一下!