based on "webapp-generator"