explaingit

bartonhammond/snowflake

4,585JavaScriptAudience · developerComplexity · 3/5Setup · moderate

TLDR

A working React Native starter app for iOS and Android that ships with user registration, login, password reset, and profile screens already built, so you can fork it and start on your actual features right away.

Mindmap

mindmap
  root((Snowflake))
    Features built-in
      Registration login
      Password reset
      Profile editing
      Multi-language support
    Tech stack
      React Native
      Redux Immutable.js
      Hapi Node.js
      Parse Server
    Testing
      Jest 85 tests
      Bitrise CI
      ESLint Standard
    Backends
      Hapi MongoDB Redis
      Parse Server hosted
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Fork this starter and replace the example screens with your own features, keeping the ready-made login, registration, and password reset flows intact.

USE CASE 2

Learn how Redux state management works in a real React Native app by studying 85 tested, working examples.

USE CASE 3

Launch the app immediately against the author's hosted backend on Heroku to see it running before setting up your own server.

USE CASE 4

Add a third language to the included multi-language support as a way to learn the project's i18n structure.

Tech stack

JavaScriptReact NativeReduxImmutable.jsHapiNode.jsMongoDBRedis

Getting it running

Difficulty · moderate Time to first run · 30min

Can point to the author's hosted backend on Heroku to get the app running without setting up any server infrastructure first.

No license information is stated in the explanation.

In plain English

Snowflake is a starter project for building mobile apps that run on both iOS and Android from a single JavaScript codebase using React Native. Rather than a blank template, it ships with a working app that handles user accounts, including registration, login, logout, password reset, and profile editing, so a developer can see all of those features implemented before writing any new code. The app connects to a backend server that handles data storage and user authentication. Two backend options are included. The first uses Hapi, a Node.js framework, paired with MongoDB and Redis. The second uses Parse Server, an open-source backend platform. Both can be run locally on your own machine or pointed at hosted versions the author has made available on Red Hat OpenShift and Heroku respectively, which means you can get the app running without setting up any server infrastructure first. On the JavaScript side, the app uses Redux to manage state, meaning all the data the app holds is tracked in one place and can be inspected and tested. Immutable.js keeps that state from being accidentally modified in unexpected ways. Navigation between screens is handled by React Native Router Flux, and form building uses a library called Tcomb that generates input fields from data models rather than writing each field manually. Input validation, session persistence across app restarts, and multi-language support for English, French, and Spanish are all included. The project includes a test suite using Jest with around 85 tests and roughly 90 percent code coverage at the time of the README. Continuous integration runs through Bitrise. Code quality is enforced with ESLint against the JavaScript Standard style. This repository is aimed at developers learning React Native or starting a new mobile project who want a real working foundation rather than a hello-world example. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
I'm starting from the Snowflake React Native starter. Walk me through adding a new screen that fetches a list of items from the Hapi/MongoDB backend and displays them with a pull-to-refresh.
Prompt 2
Explain how Snowflake uses Redux and Immutable.js together, and show me how to add a new piece of state to track a user's profile picture URL.
Prompt 3
I want to switch the Snowflake app from the Hapi/MongoDB backend to the Parse Server backend. What files do I need to change and what environment variables do I update?
Prompt 4
How do I run the Jest test suite in Snowflake and add a new test for a custom Redux action I've added?
Open on GitHub → Explain another repo

← bartonhammond on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.