# Wedding RSVP site Forked from [React Starter Kit](https://www.reactstarterkit.com) development built on top of [Node.js](https://nodejs.org/), [Express](http://expressjs.com/), [GraphQL](http://graphql.org/) and [React](https://facebook.github.io/react/), containing modern web development tools such as [Webpack](http://webpack.github.io/), [Babel](http://babeljs.io/) and [Browsersync](http://www.browsersync.io/). Helping you to stay productive following the best practices. A solid starting point for both professionals and newcomers to the industry. ## Getting Started ### Requirements * Mac OS X, Windows, or Linux * [Yarn](https://yarnpkg.com/) package + [Node.js](https://nodejs.org/) v6.5 or newer * `node-gyp` prerequisites mentioned [here](https://github.com/nodejs/node-gyp) * Text editor or IDE pre-configured with React/JSX/Flow/ESlint ([learn more](./how-to-configure-text-editors.md)) ### Quick Start #### 1. Run `yarn install` This will install both run-time project dependencies and developer tools listed in [package.json](../package.json) file. #### 2. Run `yarn start` This command will build the app from the source files (`/src`) into the output `/build` folder. As soon as the initial build completes, it will start the Node.js server (`node build/server.js`) and [Browsersync](https://browsersync.io/) with [HMR](https://webpack.github.io/docs/hot-module-replacement) on top of it. > [http://localhost:3000/](http://localhost:3000/) — Node.js server (`build/server.js`)
> [http://localhost:3000/graphql](http://localhost:3000/graphql) — GraphQL server and IDE
> [http://localhost:3001/](http://localhost:3001/) — BrowserSync proxy with HMR, React Hot Transform
> [http://localhost:3002/](http://localhost:3002/) — BrowserSync control panel (UI) Now you can open your web app in a browser, on mobile devices and start hacking. Whenever you modify any of the source files inside the `/src` folder, the module bundler ([Webpack](http://webpack.github.io/)) will recompile the app on the fly and refresh all the connected browsers. ![browsersync](https://dl.dropboxusercontent.com/u/16006521/react-starter-kit/brwosersync.jpg) Note that the `yarn start` command launches the app in `development` mode, the compiled output files are not optimized and minimized in this case. You can use `--release` command line argument to check how your app works in release (production) mode: ```shell $ yarn start -- --release ``` *NOTE: double dashes are required* ### How to Build, Test, Deploy If you need just to build the app (without running a dev server), simply run: ```shell $ yarn run build ``` or, for a production build: ```shell $ yarn run build -- --release ``` or, for a production docker build: ```shell $ yarn run build -- --release --docker ``` *NOTE: double dashes are required* After running this command, the `/build` folder will contain the compiled version of the app. For example, you can launch Node.js server normally by running `node build/server.js`. To check the source code for syntax errors and potential issues run: ```shell $ yarn run lint ``` To launch unit tests: ```shell $ yarn run test # Run unit tests with Mocha $ yarn run test:watch # Launch unit test runner and start watching for changes ``` By default, [Mocha](https://mochajs.org/) test runner is looking for test files matching the `src/**/*.test.js` pattern. Take a look at `src/components/Layout/Layout.test.js` as an example. To deploy the app, run: ```shell $ yarn run deploy ``` The deployment script `tools/deploy.js` is configured to push the contents of the `/build` folder to a remote server via Git. You can easily deploy your app to [Azure Web Apps](https://azure.microsoft.com/en-us/services/app-service/web/), or [Heroku](https://www.heroku.com/) this way. Both will execute `yarn install --production` upon receiving new files from you. Note, you should only deploy the contents of the `/build` folder to a remote server.