This is a boilerplate template for a akka http service with slick and flyway database migration. You can use it to create your own REST Services on top of the lightbend stack.
- JDK8 http://www.oracle.com/technetwork/java/javase/downloads/index.html)
 - sbt(http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html)
 - docker for dockerbuild (https://www.docker.com/community-edition/)
 - aws account if you want to use a cognito userpool for authentifaction (https://aws.amazon.com/de/)
 
- Integration of swagger-ui 
localhost:8080/v1/swagger/index.html - Autogenerated swagger doc from routes as yaml / json 
localhost:8080/v1/api-docs/swagger.yamlorlocalhost:8080/v1/api-docs/swagger.json - CRUD Repositorys via slick-repo
 - CORS Support via akka-http-cors
 - Implemented Authentication with AWS Cognito (JWK) and JWT Token via akka-jwt
 - Test coverage with ScalaTest and scoverage code coverage report
 - Ready for Docker deployment and CloudFormation deployment
 - Config file with optional runtime parameters
 - In-Memory Postgres SQL database for tests
 - Flyway database migration
 - HikariCP as connection pool
 - Logging via Log4j with a xml template
 
- Start a PostgreSQL Database via RDS, Docker or locally
 - Create a Userpool with AWS Cognito if you need AWS Authentication.
 - Configure your application.conf and the docker.conf (
src/main/resources/) (application.conf in test has to stay as it is, for running in a in-memory postgresql instance) 
SQL_URL- database url by schemejdbc:postgresql://host:port/database-nameSQL_USER- database userSQL_PASSWORD- database passwordNIC_IP- IP Address bounded to the http service default is 0.0.0.0NIC_PORT- TCP Port used for the http service default is 8080USER_POOL- Define an other cognito user pool than the preconfigured userpool
To run application, call:
sbt run
If you wanna restart your application without reloading of sbt, use (revolver sbt plugin):
sbt re-start
For launching application in Docker, you must configure database docker instance and run docker image, generated by sbt.
Generating application docker image and publishing on localhost:
sbt docker:publishLocal
Example of running, generated docker image:
docker run --name akkaHttp -e SQL_USER=dbuser -e SQL_PASSWORD=dbpass -e SQL_URL=jdbcURL -d -p 9090:9000 APPLICATION_IMAGE
APPLICATION_IMAGE- id or name of application docker image
look at --link parameter if the database is also a docker container
To run tests, call:
sbt test
To run all tests, with codecoverage, call:
sbt clean coverage test
To generate a coverage report afterwars the testrun, call:
sbt coverageReport
We will write a blog post soon on innFactory about microservice development.
- Auth now via akka-jwt
 - Persistence will be injected to the services
 
- First stable release
 
Tobias Jonas
Copyright (C) 2017 innFactory Cloud- & DataEngineering
Published under the Apache 2 License.