Ask HN: First mobile side-project: What stack to choose in 2019?

11 points by woodpanel ↗ HN
Hi there!

Starting this year with the next 3 months to spare, I'm planning to build a mobile app in that time. It would be nice if I could use most of its logic for a single page app as well.

Requirements: list/enter/search data, create/login to accounts, take pictures, do OCR on them, maybe even some AI on those pics

Me: frontend dev (~Angular), only mere backend experience, almost zero for native apps.

What do you think? I'm thankful for every answer! Hopefully I'm not burning the candle at both ends here with this project :-)

18 comments

[ 3.4 ms ] story [ 43.1 ms ] thread
I'm thinking:

VueJS + Nativescript + Vuex (Wanted to give vue a try for a while now plus it's JS), Firebase for accounts, NodeJS (again, JS) + GraphQL (being a BE noob I'm hoping graph-DBs allow me to stay flexible with my data-structure), BE hosting: probably uberspace and then migrate to some cloud provider (are there any reasonable priced cloud solutions to dump pictures that are also easy to manage for a BE noob?)

Use exactly what you already know (angular + whatever you use on the backend).

Unless of course the real "side-project" is learning a new stack[0], you want to set yourself up for success by using what you're already familiar with.

[0] This can be completely valid and worthwhile—just be honest with yourself about whether your goal is to learn something new or to solve a problem or to create a business.

Thank you.

My problem is: exactly what I know is not sufficient ;-) I know JS. The backend layer for me is unchartered territory, DBs I've shunned most of my career. So some learning curve can't be evaded.

And from looking at the view-layer competitors to angular (vue and react) I'm not sure why not to give those frameworks a try, as Ionic seems to be less 'native' and more 'webView' oriented.

> DBs I've shunned most of my career.

Database Design for Mere Mortals: https://www.amazon.com/Database-Design-Mere-Mortals-Hands/dp...

This is the book I recommend to everyone who is shy about DB's - I have owned several copies and given every one away. It breaks down not only functionality but how to create a good design in a sensible and easy to understand way. Worth every penny (and now somewhat cheap)

thanks for this, bought. been looking for a recommendation in this space.
Thank you very much for recommending the book. Does it also provide a sense of when to use non-relational database systems, like NoSQL or GraphDBs (The book's description as well as "look inside" function at Amazon didn't yield any results for those two) ?
> Does it also provide a sense of when to use non-relational database systems, like NoSQL or GraphDB

I always thought of the NoSQL movement as encompassing document, KV, and GraphDb's and each can be a major departure from RDBMs thinking. These technologies aren't always "replacements" for RDMB's and often live alongside them, Redis (or memcache) and Solr/Lucene (or elasticsearch) are ones that I have personally used the most.

As you move into other tools like Cassandra or a Graph DB they look shiny but you are making some major (and maybe worthwhile) trade offs. These sorts of decisions probably shouldn't be made based off of knowledge from a book but rather experience and more importantly testing (performance and use).

As a side note, the last project I did ended up using a flat file as a back end because it was fast, simple and easy while meeting the needs for what it had to accomplish. Installing a DB was more work than needed.

Long ago I read it, and found it frustrating. I don't remember all my objections, but I do remember one: the author spent about four pages almost but not quite defining 3rd Normal Form. Yes, jargon can be a barrier for beginners, but jargon also serves a purpose.

It seems to me that Jim Melton's Understanding the New SQL was pretty good. Anyway, I'm pretty sure I read one of Melton's books when I was learning about databases.

RDBM's are a domain, and have their own terminology.
It was hard for me to absorb , I was like thinking that I lacked basic knowledge needed to master it.
DBs I've shunned most of my career. So some learning curve can't be evaded.

Assuming you're doing a small application with standard features, you should be able to pick up the basics over a weekend. It is a different story if you have to scale to tons of users, improve performance etc, but for a normal application, designing a bunch of tables shouldn't be hard.

The backend layer for me is unchartered territory

This might take a bit more work than the DB. My you know JS, so maybe you could pick nodeJS for the backend?

Could try something like Firebase/Firestore and Cloud Functions to replace any work you'd have to do on the backend?
I found this video and talk to be very enlightening. I know it's not the neatest, most exciting framework, but Rails with Turbolinks sure can do the trick. My last two mobile applications were built in the same way that Sam Stephenson describes here.

https://www.youtube.com/watch?v=SWEts0rlezA

I'm fairly familiar with Vue and Angular, but I decided to write my current side-project in ReactJS, with the intention of switching over to React Native once I've wrapped my head around the React portion of things. So far, I'm enjoying myself. I'm mostly a backend dev, so this is mostly new territory for me. Very fun.

The bright side of the React (and Angular / Vue) is exactly what you said: same logic for web and mobile!

I did exactly the same, First build a web app using ReactJS + Redux and once i was comfortable with it, i tried porting it to React-Native. Helped me understand these one at a time.
React Native is basically React with a different DOM. Very easy transition.
React native + Firebase will get you a demo very quickly, especially on the standard functionalities. Fake the others at first, and then you can decide how to implement them with a custom api, e.g. on gcloud.

Launch in less than 3mo if you can, you can always iterate down the road.