Use play framework to develop the web application backend/services and frontend using Angular CLI, all in a totally integrated workflow and single unified console. This approach will deliver perfect development experience without CORS hassle.
Read more @ http://bit.ly/2AStvhK
Fork or clone this repository.
Used any of the following SBT commands which will intern trigger frontend associated npm scripts.
sbt clean # Clean existing build artifacts
sbt stage # Build your application from your project’s source directory
sbt run # Run both backend and frontend builds in watch mode
sbt dist # Build both backend and frontend sources into a single distribution artifact
sbt test # Run both backend and frontend unit tests
ui
directory.├── /app/ # The backend source (controllers, models, services)
│ └── /controllers/ # Backend controllers
│ └── FrontendController.scala # Asset controller wrapper serving frontend assets and artifacts
├── /conf/ # Configurations files and other non-compiled resources (on classpath)
│ ├── application.conf # Play application configuratiion file.
│ ├── logback.xml # Logging configuration
│ └── routes # Routes definition file
├── /logs/ # Log directory
│ └── application.log # Application log file
├── /project/ # Contains project build configuration and plugins
│ ├── FrontendCommands.scala # Frontend build command mapping configuration
│ ├── FrontendRunHook.scala # Forntend build PlayRunHook (trigger frontend serve on sbt run)
│ ├── build.properties # Marker for sbt project
│ └── plugins.sbt # SBT plugins declaration
├── /public/ # Frontend build artifacts will be copied to this directory
├── /target/ # Play project build artifact directory
│ ├── /universal/ # Application packaging
│ └── /web/ # Compiled web assets
├── /test/ # Contains unit tests of backend sources
├── /ui/ # React frontend source (based on Create React App)
│ ├── /e2e/ # End to end tests folder
│ ├── /node_modules/ # 3rd-party frontend libraries and utilities
│ ├── /src/ # The frontend source code (modules, componensts, models, directives, services etc.) of the application
│ │ ├── karma.conf.js # Karma configuration file
│ │ └── proxy.conf.json # UI proxy configuration
│ ├── .angular.json # Angular CLI configuration
│ ├── .editorconfig # Define and maintain consistent coding styles between different editors and IDEs
│ ├── .gitignore # Contains ui files to be ignored when pushing to git
│ ├── package.json # NPM package configuration.
│ ├── README.md # Contains all user guide details for the ui
│ ├── tsconfig.json # Contains typescript compiler options
│ └── tslint.json # Lint rules for the ui
├── .gitignore # Contains files to be ignored when pushing to git
├── build.sbt # Play application SBT configuration
├── LICENSE # License Agreement file
├── README.md # Application user guide
└── ui-build.sbt # SBT command hooks associated with frontend npm scripts
├── /project/
│ ├── FrontendCommands.scala
npm run start
on sbt run
. ├── /project/
│ ├── FrontendRunHook.scala
├── /app/
│ └── /controllers/
│ └── FrontendController.scala
├── /ui/
│ ├── package.json
├── /ui/
│ ├── proxy.conf.json
├── /conf/
│ ├── routes
GET / controllers.FrontendController.index()
application.conf
(Default prefix apiPrefix = "api"
) Example API route:
GET /api/summary controllers.HomeController.appSummary
GET /*file controllers.FrontendController.assetOrDefault(file)
Note: On production build all the front end Angular build artifacts will be copied to the public/ui
folder.
Yohan Gomez |
Lahiru Jayamanna |
Gayan Attygalla |
Anuradha Gunasekara |
---|
This software is licensed under the MIT license