HTML JavaScript
Clone or download
limonte Merge pull request #112 from vaadin/vaadin-router
Integrate Vaadin.Router into the expense-app
Latest commit 321de9a Jul 10, 2018

Progressive Web App with full offline capabilities

This is an example project for how you can build a Progressive Web Application with Polymer and Vaadin components.

The application uses a Service Worker to cache the Application Shell. A Web App Manifest file ensures that the browser identifies our app as a Progressive Web Application and offers the user to install the application through an install banner.

Live Demo

Try the live demo of the Progressive Web Application.

Running locally

  1. Fork this repository and clone it locally.

  2. Make sure you have npm installed.

  3. Run npm install bower polymer-cli -g to install tools needed to run the project.

  4. When in the expense-manager directory, run npm install and then bower install to install dependencies.

  5. Run polymer serve to start the development server.

  6. Go to


Run all lint tasks in parallel

npm run lint

Run ESLint for JS

npm run lint:javascript

Run Stylelint for CSS

npm run lint:css

Run polymer-linter

npm run lint:polymer

Docker container for production

You can use the included Dockerfile to deploy the built app using prpl-server.

Build project locally

The default polymer.json contains the "autoBasePath": true setting to support differential serving with the prpl-server. This option makes the build incompatible with static file servers, though. So, in order to serve bundled app locally using polymer-cli, do the following steps:

  1. Remove "autoBasePath": true setting from the polymer.json

  2. Run polymer build

  3. Run polymer serve build/es6-bundled (you can choose es5-bundled instead)

Read more about the build options in the Polymer: Build for production documentation.