Jun. 1, 2020
In January 2020, I founded Tunestack.fm, a social networking app for music lovers to share reviews of their favorite albums. We were later accepted into a startup accelerator at the NYU Entrepreneur Lab and grew our community to 120 users.
I built and launched the beta version to TestFlight myself, and later onboarded 3 engineers. While the source code is private, here's a breakdown of the technology I used for the beta and initial launch:
- Winslow's Rule: The Apple app review process takes twice as long as you think, no matter how long you think.
- In terms of syntax and concepts, React Native is only marginally more complex than React, but you have to deal with asynchronous loading actions more explicitly. The browser layer usually abstracts away a lot of this.
- Redux is useful, but very opinionated and requires a lot of boilerplate. On the plus side, it will force you into an MVC structure and make it easier to debug async code. (Note: We have been porting our app to Flutter since June, because the provider/context structure is a bit easier to use.)
- Serverless functions are great! Never dealing with the OS of a remote machine is awesome. However, there are a few drawbacks:
serverless-offline does not perfectly replicate the remote environment. For instance, your Node runtime or ES5/6 syntax support might be different locally. Also, there is no great way to simulate the Cognito authorizer or other Amazon services, so it is often necessary to deploy to a remote dev stage.
- AWS limits an API Gateway to 200 CloudFormation resources, and each endpoint can generate somewhere between 5-8 resources. So, if you have more than 24-39 endpoints, you will have to either split them into separate stacks and use some DNS records to have them map to the same remote URL, or use fewer, monolithic functions and a package like
aws-serverless-express to disaggregate them.
- Serverless helps you manage some, but not all, kinds of secret keys and resource permissions in AWS, and sometimes can even overwrite settings configured through the CLI or web interface.
- Sequelize is a poorly maintained product and sometimes just acts as an obfuscation layer between your app and SQL database. It is also verbose and slow. Would not use it again, and would instead opt for GraphQL.
- The Spotify API is a godsend, and genuinely a lot of fun to work with.
Download the App (iOS) — If on desktop, will text you a link to download