Skip to content
This repository has been archived by the owner on Jul 9, 2019. It is now read-only.
/ Holtzman Public archive

The main NewSpring namespace and utilities for all newspring packages.

License

Notifications You must be signed in to change notification settings

NewSpring/Holtzman

Repository files navigation

Holtzmann

NewSpring Church Build Status Coverage Status

Holtzmann is a reactive application framework for building high speed, web + native, reactive applications. It is built using Reactjs, Redux, and Meteor. This repository contains the application framework and instructions for usage.

Table of Contents

Prerequisites

Quick Start

Structure

Local Development

Deploys

Contributing

Prerequisites

Quick Start

git clone git@github.com:NewSpring/Holtzmann.git
cd Holtzmann
npm link
apollos setup
apollos run

Structure

This repo contains the code base used to build v5 of the NewSpring site and native app. Our sites and native apps share much of the same functionality, and therefore share the same code.

  • /assets: additional assets that don't need to be loaded over a web server
  • /client: entry point for client
  • /imports: basically all code, client and server
  • /public: static assets to be loaded from web server
  • /scripts: command line scripts used for deployment, testing, etc
  • /server: entry point for server
  • /stylesheets: sass for generating our css using sass and junction
  • */__tests__: tests adjacent to the module they are testing
  • */__stories__: react storybook stories adjacent to the module they are displaying
  • */__mocks__: module mocks for testing adjacent to the module they mock.
  • main.html: root HTML file
  • mobile-config.js: used to generate cordova apps
  • package.json: used to manage yarn dependencies and etc.
  • yarn.lock: used to make sure all developers are using the same package versions

Local Development

Basics

To install all dependencies, we use Yarn. To get started:

  1. Clone down the repo
  2. Make sure you have the Yarn CLI installed
  3. Run yarn.
  4. run npm link. This will bind apollos to your system to be used to run this app (more info).

apollos setup: This command will bootstrap the application. This may take some time.

  • -c || --clean: Force rebuild of application
  • -l || --log <level>: NOT IMPLEMENTED

apollos run: This will start a local server to serve the site and print its address in your console.

  • -p || --port: NOT IMPLEMENTED
  • -v || --verbosity: NOT IMPLEMENTED
  • -q || --quick: Removes built files (.meteor/local)
  • -n || --native: This will run the native version of the application but allow you to work on most of the code in your web browser
  • --ios: Run the native app in the iOS simulator
  • --android: Run the native app in the Android simulator
  • --device: Run the native app on a device. Use in conjunction with --ios or --android
  • --production: Run the application in production mode
  • --debug: Run the application in debug mode

Testing

This project uses Jest for unit tests. These tests are located in __tests__ subfolders adjacent to the thing they're testing.

To run tests, call yarn test or yarn test -- --watch. This will also run eslint and flow tests when complete.

Linting

This project includes linting using ESLint. To enable linting in Visual Studio Code, you will need to install the ESLint extension.

To install the extension you'll need to press ⌘+P, paste the following command and press enter.

ext install vscode-eslint

To manually run eslint, use yarn lint.

Typing

This project contains static typing for most code. We use Flow for this. To enable flow to a file, add // @flow to the very top of the file.

To run flow, use yarn flow.

Deploys

This project can be automatically deployed by Travis CI using release tags. We have 2 different versions of the application, web and native. We also have 3 different environments to deploy to: alpha, beta, production.

To deploy, create a release/tag using a combination of the site name, site version, environment target, and version number.

newspring/web/production/1.0.8
newspring/native/beta/0.0.3-45

Contributing

For more information about contributing PRs and issues, see our Contribution Guidelines.

[Good First PR](https://github.com/NewSpring/Holtzman/labels/good first pr) is a great starting point for people new to this project.