Hapi server startup module for MWP applications


Keywords
web-platform
License
MIT
Install
npm install mwp-app-server@27.0.36-beta

Documentation

Web Platform Components

npm version Build Status Coverage Status styled with prettier

This is the base platform for serving Meetup web apps including the public website and admin. It provides a Hapi webserver and a set of conventions for composing applications with React + Redux.

In general, application-specific code will live outside of this package.

Public modules

Releases

This package uses semver versioning to tag releases, although the patch version is determined exclusively by the Travis build number for pushes to master. Major and minor versions are hard-coded into the Makefile.

Manual pushes to master and PR merges to master will be built by Travis, and will kick off the yarn publish routine. The currently-published version of the package is shown on the repo homepage on GitHub in a badge at the top of the README.

Development/Beta releases

When developing a consumer application that requires changes to the platform code, you can release a beta version of the platform on npm by opening a PR in the meetup-web-platform repo. When it builds successfully, a new beta version will be added to the list of available npm versions. The generated version number is in the Travis build logs, which you can navigate to by clicking on 'Show all checks' in the box that says 'All checks have passed', and then getting the 'Details' of the Travis build.

screen shot 2016-10-29 at 10 25 20 am

screen shot 2016-10-29 at 10 25 29 am

At the bottom of the build log, there is a line that echos the GIT_TAG. If you click the disclosure arrow, the version number will be displayed, e.g. 0.5.177-beta.

screen shot 2016-10-29 at 10 25 59 am

screen shot 2016-10-29 at 10 26 06 am

You can then install this beta version into your consumer application with

> yarn add -W \
    mwp-api-state@<version tag> \
    mwp-app-render@<version tag> \
    mwp-app-server@<version tag> \
    mwp-config@<version tag> \
    mwp-core@<version tag> \
    mwp-i18n@<version tag> \
    mwp-router@<version tag> \
    mwp-store@<version tag> \
    mwp-toaster@<version tag>

Each time you push a change to your meetup-web-platform PR, you'll need to re-install it with the new tag in your consumer application code.

The overall workflow is:

  1. Open a PR for your meetup-web-platform branch
  2. Wait for Travis to successfully build your branch (this can take 5+ minutes)
  3. Get the version string from the build logs under GIT_TAG
  4. Update the mwp-* (except mwp-cli) on your consumer application and test the changes
  5. (if needed) Push changes to your meetup-web-platform branch
  6. Repeat steps 2-3

Adding a new package

  1. Create a new mwp-* directory in /packages/
  2. Add a new package.json file in the new package
  3. Add a line to .travis.yml before_install to create a .npmrc file that will enable NPM publishing
  4. Increment the version number (a point release is usually okay since a new package is not a breaking change of existing packages)
  5. Add a line to the CHANGELOG.md

If other MWP packages will depend on the new package, you'll need to first publish the package without updating dependencies in other packages, and then make a new release that updates the other packages with the new dependency - the dependency must exist in NPM before it can be specified as a dependency.