Giter Site home page Giter Site logo

ioweb2015's Introduction

Google I/O 2015 web app

Setup

Prerequisites

  • Go 1.4.

  • Optional: gcloud tool and app component to run and deploy GAE-based backend (hint: gcloud components update app).

    Once gcloud and app component are installed, you'll need to do a one-off configuration by executing the following command: gcloud config set project <project-id>. Project ID can be any non-empty string if you just want to run the app locally.

Setup

  1. git clone https://github.com/GoogleChrome/ioweb2015.git
  2. cd ioweb2015
  3. npm install
  4. gulp setup

If you plan on modifying source code, be a good citizen and:

  1. Install EditorConfig plugin for your favourite browser. The plugin should automatically pick up the .editorconfig settings.
  2. Obey the pre-commit hook that's installed as part of gulp setup. It will check for JavaScript and code style errors before committing to the master branch.

Running

Run gulp serve to start a standalone backend, while still enjoying live-reload. You'll need Go for that.

Normally the app is running in "dev" environment but you can change that by providing --env argument to the gulp task:

# run in dev mode, default:
gulp serve
# set app environment to production:
gulp serve --env prod
# or run as if we were in staging:
gulp serve --env stage

Not that this does not change the way the backend code is compiled or the front-end is built. It merely changes a variable values, which the app takes into account when rendering a page or responding to a request.

Running in stage or prod requires real credentials when accessing external services. You'll need to run a one-off gulp decrypt which will decrypt a service account private key.

You can also use GAE dev appserver by running gulp serve:gae. This is closer to what we're using in our webapp environment but a bit slower on startup. You'll need gcloud tool and app component to do this.

To change the app environment when using GAE SDK, provide --env argument:

# run in dev mode, default:
gulp serve:gae
# set app environment to production:
gulp serve:gae --env prod
# or run as if we were in staging:
gulp serve:gae --env stage

Other arguments are:

  • --no-watch don't watch for file changes and recompile relative bits.
  • --open open serving url in a new browser tab on start.
  • --reload enable live reload. Always watches for file changes; --no-watch will have no effect.

Building

Run gulp. This will create dist directory with both front-end and backend parts, ready for deploy.

Note: Build won't succeed if either gulp jshint or gulp jscs reports errors.

You can also serve the build from dist by running gulp serve:dist, and navigating to http://localhost:8080.

serve:dist runs the app in prod mode by default. You can change that by providing the --env argument as with other serve tasks. For instance:

# run in stage instead of prod
gulp serve:dist --env stage

Deploying

To deploy complete application on App Engine:

  1. Run gulp which will build both frontend and backend in dist directory.
  2. Run gcloud preview app deploy dist/backend --version <v>.

The app will be deployed to the project configured in gcloud tool. To check which project you're deploying to, run gcloud config list and look for project = ... line.

Backend

Backend is written in Go. It can run on either Google App Engine or any other platform as a standalone binary program.

gulp backend will build a self-sufficient backend server and place the binary in backend/bin/server.

gulp backend:test will run backend server tests. If, while working on the backend, you feel tired of running the command again and again, use gulp backend:test --watch to watch for file changes and re-run tests automatically.

Add --gae cmd line argument to the test task to run GAE-based tests.

Debugging

A list of tools to help in a debugging process. NOT available in prod

Proxy with the service account credentials

http://HOST/io2015/debug/srvget?url=<some-url>

The backend will GET some-url and respond back with the original status code, content-type header and the content.

Useful for browsing original CMS data on staging GCS bucket:

go/iowastaging/debug/srvget?url=https://storage.googleapis.com/io2015-data-dev.google.com.a.appspot.com/manifest_v1.json

List contents of Google Drive AppFolder.

TODO

Send GCM push notifications

http://HOST/io2015/debug/push

Follow instructions on that page.

On staging server this is go/iowastaging/debug/push

Re-sync local datastore with remote

http://HOST/io2015/debug/sync

ioweb2015's People

Contributors

alexmahan avatar brendankenny avatar devnook avatar ebidel avatar jeffposnick avatar paullewis avatar robdodson avatar samthor avatar tdreyno avatar wibblymat avatar x1ddos avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.