{"id":14969115,"url":"https://github.com/interel-group/core3","last_synced_at":"2025-04-14T13:22:00.440Z","repository":{"id":57725304,"uuid":"87170215","full_name":"Interel-Group/core3","owner":"Interel-Group","description":"Scala framework for building web applications and services based on Play and Akka","archived":false,"fork":false,"pushed_at":"2017-09-13T11:05:47.000Z","size":380,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T13:21:50.883Z","etag":null,"topics":["akka","auth0","core3","couchdb","elasticsearch","mariadb","microsoft-graph-api","playframework","redis","scala","scala-play","solr"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Interel-Group.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-04T09:43:27.000Z","updated_at":"2022-10-11T06:55:29.000Z","dependencies_parsed_at":"2022-09-11T20:30:22.831Z","dependency_job_id":null,"html_url":"https://github.com/Interel-Group/core3","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interel-Group%2Fcore3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interel-Group%2Fcore3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interel-Group%2Fcore3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interel-Group%2Fcore3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Interel-Group","download_url":"https://codeload.github.com/Interel-Group/core3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248886389,"owners_count":21177656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["akka","auth0","core3","couchdb","elasticsearch","mariadb","microsoft-graph-api","playframework","redis","scala","scala-play","solr"],"created_at":"2024-09-24T13:41:09.045Z","updated_at":"2025-04-14T13:22:00.408Z","avatar_url":"https://github.com/Interel-Group.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# core3\nScala framework for building web applications and services based on [Play](https://www.playframework.com/) and [Akka](http://akka.io/).\n\n## Motivation\n* Minimizes effort required to secure web applications\n* Separates actions (as workflows) and data objects (as containers) into easily testable and maintainable units\n* Disconnects application logic from data layer and action management\n\n## Getting Started\n```\nlibraryDependencies += \"com.interelgroup\" %% \"core3\" % \"2.2.0\"\n```\n\n\u003e Released for Scala 2.11 and 2.12\n\n\u003e See [Additional dependencies](https://github.com/Interel-Group/core3/wiki/Additional-Dependencies) for other libraries you may need.\n\nFor more information, check the wiki and the example projects:\n\n* [Getting Started](https://github.com/Interel-Group/core3/wiki/Getting-Started)\n* [Wiki](https://github.com/Interel-Group/core3/wiki)\n* [Example Engine](https://github.com/Interel-Group/core3-example-engine) - Example backend web service\n* [Example UI](https://github.com/Interel-Group/core3-example-ui) - Example user interface application, utilizing the example backend service\n* [Example Engine + UI](https://github.com/Interel-Group/core3-example-combined) - Example backend and frontend service\n\n## Supported data sources\n* [MariaDB](https://mariadb.org/) (tested on `10.0`, `10.1`)\n* [CouchDB](http://couchdb.apache.org/) (tested on `1.6.0`, `2.0.0`)\n* [Elasticsearch](https://www.elastic.co/products/elasticsearch) (tested on `5.1.2`, `5.3.1`, `5.4.0`)\n* [Redis](https://redis.io/) (tested on `3.2.5`, `3.2.8`)\n* [Solr](http://lucene.apache.org/solr/) (tested on `6.3.0`, `6.5.1`)\n* [DistributedCache](https://github.com/Interel-Group/core3/wiki/DistributedCache) (uses another source for persistence)\n* [MemoryOnly](https://github.com/Interel-Group/core3/wiki/Databases#memoryonly) (offers no persistence)\n\n## Supported auth providers\n* [Auth0](https://auth0.com/) - JWT based authentication and authorization\n* [Local](https://github.com/Interel-Group/core3/wiki/Controllers-(Basics)) - local credentials DB\n\n## Additional dependencies\nDepending on your data layer setup, you may have to include one or more of the dependencies listed [here](https://github.com/Interel-Group/core3/wiki/Additional-Dependencies).\n\n\u003e CouchDB and Solr require no additional libraries\n\n## Testing\nRunning the supplied tests will require all supported services to be present and active on the test machine.\n\n### Test configuration\nThe default test configuration can be found [here](src/test/resources/static.conf).\n\nFor 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).\n\n\u003e For MariaDB, a test database needs to be created and it needs to use UTF8:\n\u003e\n\u003e ```\n\u003e CREATE DATABASE core3_test CHARACTER SET utf8 COLLATE utf8_general_ci;\n\u003e ```\n\n### Unit tests\nMain test suite for verifying core component functionality.\n\n```\nsbt \"testOnly core3.test.specs.unit.*\"\n```\n\nRequired options:\n```\n-Dserver.static.database.mariadb.username=\u003csome user\u003e\n-Dserver.static.database.mariadb.password=\u003csome password\u003e\n-Dserver.static.database.solr.username=\u003csome user\u003e\n-Dserver.static.database.solr.password=\u003csome password\u003e\n-Dserver.static.database.redis.secret=\u003csome password\u003e\n-Dserver.static.database.couchdb.username=\u003csome user\u003e\n-Dserver.static.database.couchdb.password=\u003csome password\u003e\n```\n\n### Property tests\nAdditional tests for data-centric components.\n\n```\nsbt \"testOnly core3.test.specs.prop.*\"\n```\nRequired options:\n```\n-Dserver.static.database.mariadb.username=\u003csome user\u003e\n-Dserver.static.database.mariadb.password=\u003csome password\u003e\n-Dserver.static.database.solr.username=\u003csome user\u003e\n-Dserver.static.database.solr.password=\u003csome password\u003e\n-Dserver.static.database.redis.secret=\u003csome password\u003e\n-Dserver.static.database.couchdb.username=\u003csome user\u003e\n-Dserver.static.database.couchdb.password=\u003csome password\u003e\n```\n\n### Performance tests\nAdditional tests for tracking performance changes over time.\n\n\u003e It's best to avoid, as this test suite is not entirely stable and has issues dealing with async operations\n\n```\nsbt \"testOnly core3.test.specs.perf.*\"\n```\nRequired options:\n```\n-Dserver.static.database.mariadb.username=\u003csome user\u003e\n-Dserver.static.database.mariadb.password=\u003csome password\u003e\n-Dserver.static.database.solr.username=\u003csome user\u003e\n-Dserver.static.database.solr.password=\u003csome password\u003e\n-Dserver.static.database.redis.secret=\u003csome password\u003e\n-Dserver.static.database.couchdb.username=\u003csome user\u003e\n-Dserver.static.database.couchdb.password=\u003csome password\u003e\n```\n\n### Multi-JVM tests\nMulti-JVM tests for the `core3.database.dals.memory.DistributedCache` data layer.\n\n```\nsbt \"multi-jvm:test-only core3_multi_jvm.test.specs.DistributedCache  -- -Dserver.static.database.mariadb.username=\u003csome user\u003e -Dserver.static.database.mariadb.password=\u003csome password\u003e\"\n```\n\n### Scalameta tests\n```\nsbt \"project meta\" \"testOnly core3.test.specs.unit.meta.*\"\n```\n\n## Built With\n* Scala 2.12.3\n* sbt 0.13.16\n* [Play 2.6.x](https://github.com/playframework/playframework) - Base framework\n* [Akka 2.5.x](https://github.com/akka/akka) - Core component actors and (optional) data layer clustering\n* [Slick](https://github.com/slick/slick) - SQL data layer support\n* [Scalameta](https://github.com/scalameta/scalameta) - Macro annotations support\n* [rediscala](https://github.com/etaty/rediscala) - (optional) Redis data layer support\n* [elastic4s](https://github.com/sksamuel/elastic4s) - (optional) Elasticsearch data layer support\n* [courier](https://github.com/softprops/courier) - (optional) E-mail support\n\n## Versioning\nWe use [SemVer](http://semver.org/) for versioning.\n\n## Future Goals\n- [X] Play 2.6 and Scala 2.12 support\n- [ ] Improve test coverage\n- [ ] Improve performance testing\n- [x] Generate container boilerplate and data conversions with macros (and/or `scala.meta`)\n- [ ] ~~Make slick dependency optional~~\n- [x] Add / verify support for additional (No)SQL DBs (now supports all Slick databases)\n\n## License\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details\n\n\u003e Copyright 2017 Interel\n\u003e\n\u003e Licensed under the Apache License, Version 2.0 (the \"License\");\n\u003e you may not use this file except in compliance with the License.\n\u003e You may obtain a copy of the License at\n\u003e\n\u003e http://www.apache.org/licenses/LICENSE-2.0\n\u003e\n\u003e Unless required by applicable law or agreed to in writing, software\n\u003e distributed under the License is distributed on an \"AS IS\" BASIS,\n\u003e WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\u003e See the License for the specific language governing permissions and\n\u003e limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterel-group%2Fcore3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finterel-group%2Fcore3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterel-group%2Fcore3/lists"}