This is a personal project of mine. I started with just wanting to get familiar with React Native, but then I couldn't put it down. The RN ecosystem has been a joy to learn & I look forward to future releases.


OVERVIEW

Dec 2016 - Current

Full Stack Developer

Product Designer

React Native

Redux

MongoDB

NodeJS

Express

This is a personal project of mine. I started with just wanting to get familiar with React Native, but then I couldn't put it down. The RN ecosystem has been a joy to learn & I look forward to future releases.

Behind the code

Client Side

The client is running on React-Native via react-native init Project. This gave me access to all iOS and Android native code. This was important since there is a lot of unknowns with RN still and I would need to manipulate the info.plist and appdelegate.m often. If you use create-react-native-app to initiate your RN project, you will have very limited access to the properties of these types of files.

State Management

For state management, I am using a combination of Redux, Redux-Persist, Redux-logger and Redux-Form. I also take advantage of React-state but primarily for fast UI updates. This has proven to work very similarly to React, actually... it is the exact same.

Styling

This is a bit different from React in that you primarily scope all styles to the component. Unless you've used something like Styled-Components this may seem odd at first. Here's a short example of how I do this.

As you can see I've created reusable styles via the object spread syntax. With this, I can define main styles in a separate file and then override on per-component bases.

Dealing with Xcode

This has been a fun and steep learning curve. I don't directly communicate with the bridge via swift or obj-c instead I mainly interact with configurations. Things like build phase settings and library linking. A lot of this is handled with rnpm link but expect to be in here often still. I have gotten pretty good about debugging with Xcode and as long as I stay out of its way, it stays outta mine.

Server Side

The server is a pretty standard Node, Mongo, Express server. Routes are protected via JWT-Strategy and Local-strategy. In addition, I use the async library to prevent convoluted code or "callback" hell.

Why Mongo?

Simply put. I am proficient with it. I am actually not running mongo as "schema-less" either. I know I know, let me explain. Here are few reasons why I chose the ODM abstraction Mongoose:

  1. Schemas to model the data
  2. I learned Postgres first, so schemas made sense to me
  3. Validation & Required properties made simple
  4. Easier to read and write queries
  5. Attaching new functionality to Models
  6. Handles tight relationships well

So, now that you know why... I will say this. If I had the time and I was going to deploy this, I would use something like neo4j or even postgres.

Review

Hopefully, this project gives you a sense of my passion and proficiency as a full-stack developer. I've built this on my weekends and evenings and currently the private repo has 200+ commits. I did all this while working full time as hybrid Product Designer/ Developer at an early-stage startup. Lot's of coffee and dedication is my recommendation for anyone looking to build something similar.

Want to know more?