Scala framework for building web applications and services based on Play and Akka.
- Minimizes effort required to secure web applications
- Separates actions (as workflows) and data objects (as containers) into easily testable and maintainable units
- Disconnects application logic from data layer and action management
libraryDependencies += "com.interelgroup" %% "core3" % "2.2.0"
Released for Scala 2.11 and 2.12
See Additional dependencies for other libraries you may need.
For more information, check the wiki and the example projects:
- Getting Started
- Wiki
- Example Engine - Example backend web service
- Example UI - Example user interface application, utilizing the example backend service
- Example Engine + UI - Example backend and frontend service
- MariaDB (tested on
10.0
,10.1
) - CouchDB (tested on
1.6.0
,2.0.0
) - Elasticsearch (tested on
5.1.2
,5.3.1
,5.4.0
) - Redis (tested on
3.2.5
,3.2.8
) - Solr (tested on
6.3.0
,6.5.1
) - DistributedCache (uses another source for persistence)
- MemoryOnly (offers no persistence)
Depending on your data layer setup, you may have to include one or more of the dependencies listed here.
CouchDB and Solr require no additional libraries
Running the supplied tests will require all supported services to be present and active on the test machine.
The default test configuration can be found here.
For security, the various usernames and passwords have not been included and will need to be supplied either in the test static.conf
file or via -D
JVM options (preferred).
For MariaDB, a test database needs to be created and it needs to use UTF8:
CREATE DATABASE core3_test CHARACTER SET utf8 COLLATE utf8_general_ci;
Main test suite for verifying core component functionality.
sbt "testOnly core3.test.specs.unit.*"
Required options:
-Dserver.static.database.mariadb.username=<some user>
-Dserver.static.database.mariadb.password=<some password>
-Dserver.static.database.solr.username=<some user>
-Dserver.static.database.solr.password=<some password>
-Dserver.static.database.redis.secret=<some password>
-Dserver.static.database.couchdb.username=<some user>
-Dserver.static.database.couchdb.password=<some password>
Additional tests for data-centric components.
sbt "testOnly core3.test.specs.prop.*"
Required options:
-Dserver.static.database.mariadb.username=<some user>
-Dserver.static.database.mariadb.password=<some password>
-Dserver.static.database.solr.username=<some user>
-Dserver.static.database.solr.password=<some password>
-Dserver.static.database.redis.secret=<some password>
-Dserver.static.database.couchdb.username=<some user>
-Dserver.static.database.couchdb.password=<some password>
Additional tests for tracking performance changes over time.
It's best to avoid, as this test suite is not entirely stable and has issues dealing with async operations
sbt "testOnly core3.test.specs.perf.*"
Required options:
-Dserver.static.database.mariadb.username=<some user>
-Dserver.static.database.mariadb.password=<some password>
-Dserver.static.database.solr.username=<some user>
-Dserver.static.database.solr.password=<some password>
-Dserver.static.database.redis.secret=<some password>
-Dserver.static.database.couchdb.username=<some user>
-Dserver.static.database.couchdb.password=<some password>
Multi-JVM tests for the core3.database.dals.memory.DistributedCache
data layer.
sbt "multi-jvm:test-only core3_multi_jvm.test.specs.DistributedCache -- -Dserver.static.database.mariadb.username=<some user> -Dserver.static.database.mariadb.password=<some password>"
sbt "project meta" "testOnly core3.test.specs.unit.meta.*"
- Scala 2.12.3
- sbt 0.13.16
- Play 2.6.x - Base framework
- Akka 2.5.x - Core component actors and (optional) data layer clustering
- Slick - SQL data layer support
- Scalameta - Macro annotations support
- rediscala - (optional) Redis data layer support
- elastic4s - (optional) Elasticsearch data layer support
- courier - (optional) E-mail support
We use SemVer for versioning.
- Play 2.6 and Scala 2.12 support
- Improve test coverage
- Improve performance testing
- Generate container boilerplate and data conversions with macros (and/or
scala.meta
) -
Make slick dependency optional - Add / verify support for additional (No)SQL DBs (now supports all Slick databases)
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details
Copyright 2017 Interel
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.