{"id":21862278,"url":"https://github.com/innfactory/bootstrap-play2","last_synced_at":"2025-04-14T19:41:32.988Z","repository":{"id":37198023,"uuid":"150160673","full_name":"innFactory/bootstrap-play2","owner":"innFactory","description":"A scala bootstrap template for the play 2 framework to build real world applications.","archived":false,"fork":false,"pushed_at":"2025-04-10T00:24:20.000Z","size":1278,"stargazers_count":14,"open_issues_count":38,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T04:29:18.546Z","etag":null,"topics":["akka","docker","firebase","google-cloud","play2","play2-bootstrap","postgres","sbt","sbt-native-packager","scala","slick","webservices"],"latest_commit_sha":null,"homepage":"https://innfactory.de","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/innFactory.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-24T19:57:49.000Z","updated_at":"2024-12-07T00:27:50.000Z","dependencies_parsed_at":"2024-03-15T01:32:22.081Z","dependency_job_id":"f6046687-a76a-4f77-a595-89acb56e9778","html_url":"https://github.com/innFactory/bootstrap-play2","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innFactory%2Fbootstrap-play2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innFactory%2Fbootstrap-play2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innFactory%2Fbootstrap-play2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innFactory%2Fbootstrap-play2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/innFactory","download_url":"https://codeload.github.com/innFactory/bootstrap-play2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248948570,"owners_count":21187895,"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","docker","firebase","google-cloud","play2","play2-bootstrap","postgres","sbt","sbt-native-packager","scala","slick","webservices"],"created_at":"2024-11-28T03:14:33.145Z","updated_at":"2025-04-14T19:41:32.945Z","avatar_url":"https://github.com/innFactory.png","language":"Scala","readme":"# Play2-Bootstrap\n\n### Status\n\n[![codecov](https://codecov.io/gh/innFactory/bootstrap-play2/branch/master/graph/badge.svg)](https://codecov.io/gh/innFactory/bootstrap-play2)  ![Run Tests](https://github.com/innFactory/bootstrap-play2/workflows/Run%20Tests/badge.svg) [![Mergify Status][mergify-status]][mergify]\n\n[mergify]: https://mergify.io\n[mergify-status]: https://img.shields.io/endpoint.svg?url=https://gh.mergify.io/badges/innFactory/bootstrap-play2\u0026style=flat\n\n\n###### Scala, Akka, Play2, Slick, Flyway, Insomnia, Sangria, GraphQL, Firebase\n\nBootstrap a REST and/or GraphQL(Sangria) service with Play2, isolated Slick and isolated Flyway\n\nThis project is built with:\n   - Play Framework 2.8.X\n   - Slick 3.3.X\n   - Flyway-sbt \u0026 Flyway-Core 7.1.X\n   - Akka 2.6.X\n   - Sangria 2.0 for GraphQL\n   - Scala 2.13.X\n   \n  A PostgreSQL Database with activated postgis extensions is needed (for geolocation queries)\n    \n## Table of Contents:\n\n- [Play2-Bootstrap](#play2-bootstrap)\n- [Status](#status)\n- [Getting Started](#getting-started)\n    - [Quickstart Dev Guide](#see-quickstart-dev-guidedocquickstartdevguidemd)\n    - [MacOS/Linux/Unix](#macoslinuxunix)\n        - [Prerequisites](#prerequisites)\n        - [Run Locally](#run-locally)\n    - [Windows](#windows)\n- [Documentation](#documentation)\n- [Dependencies](#dependencies)\n    - [Service Accounts](#service-accounts)\n    - [Database](#database)\n- [Miscellaneous](#miscellaneous)\n    - [Testing](#testing)\n    - [Database Migration](#database-migration)\n    - [Code Generation Slick](#slick-code-generation)\n    - [Running](#running)\n- [Licenses](#licenses)\n- [Changes](#changes)\n- [Contributors](#contributors)\n\n## Getting Started\n\n#### IMPORTANT:\n\nTo load innFactory-scala-utils a Github-Personal-Access-Token with package:read has to be exported as GITHUB_TOKEN.\nThis is necessary to load the packages from Github-Package-Registry.\n\n#### See [Quickstart Dev Guide](./doc/QuickstartDevGuide.md)\n\n#### Insomnia:\n\n- [Download Insomnia](https://insomnia.rest/download) | [Docs](https://support.insomnia.rest/)\n- Download and import to Insomnia:  \n\u003ca href=\"https://github.com/innFactory/bootstrap-play2/blob/master/doc-assets/insomnia-workspace.json\" target=\"_blank\"\u003e\u003cimg src=\"https://insomnia.rest/images/run.svg\" alt=\"Run in Insomnia\"\u003e\u003c/a\u003e\n\n- Configure Environment in Insomnia to match with local or prod/staging services\n\n#### MacOS/Linux/Unix: \n\n##### Prerequisites: \n\n- Install Docker\n- Install sbt\n- Install openJDK 11\n- firebase.json (Firebase Service-Account-Access json with firebase-admin-sdk rights) in __./conf/__\n\n##### Run locally:\n\nIf prerequisites are met, the service can be started with:\n\n```bash\ncd ./local-runner\n\n./runFor.sh\n```\n\n- Name mentioned in logs:\n\n ``` \n ./local-runner/runFor.sh -n Name\n ```\n\n- Remove docker container volume mounted at __./local-runner/postigs__:\n\n``` \n./local-runner/runFor.sh -r\n```\n\nService is then locally available at: \u003chttp://localhost:9000\u003e\n\n[RunForScriptDocs](local-runner/runForDoc.md)\n\n#### Windows:\n\n- Sorry, no out of the box solution\n\n## Dependencies:\n\n#### Service Accounts:\n\n##### ./conf/firebase.json\n\nService Account from Google Cloud for the Firebase Admin Sdk. Needs **Editor** role.\n\n#### Databases:\n\n- **PostgresQl** Database with Password and User set. Needs Postgis Plugin fully installed.   \n\n## Documentation\n\n\u003cimg src=\"doc/RequestFlow.svg\" width=\"100%\" alt=\"request-flow\" /\u003e  \n\n###### Request Flow \n\u003cbr/\u003e\n\n- [1. Filter ()](./doc/FilterDoc.md)\n    - [AccessLoggingFilter](./doc/FilterDoc.md#AccessLoggingFilter)\n    - [RouteBlacklistFilter](./doc/FilterDoc.md#RouteBlacklistFilter)\n- [2. Controller (Http Request Handling)](./doc/ControllerDoc.md)\n- [3. Repository (Data handling)](./doc/RepositoryDoc.md)\n- [4. DAOs (Database Access)](./doc/DaoDoc.md)\n    - [BaseDAO](./doc/DaoDoc.md#BaseSlickDAO)\n\n## Deployment and Environment\n\nSee here for [Deployment and Environment Documentation](./doc/Deployment.md)\n\n## Authentication\n\n- Some requests will require a Firebase JWT Token in the Authorization Header\n- The Firebase.json file has to be present and filled at ./conf/firebase.json\n\n## Miscellaneous\n\n### Database Migration\n\nThis has to be run first\n\n```bash\nsbt flyway/flywayMigrate\n```\n\n### Slick Code Generation\n\nYou will need to run the flywayMigrate task first, and then you will be able to generate tables using slickGen.\n\n```bash\nsbt slickGen\n```\n\nafter that you will have to mark the folder target/scala-x.xx/scr_managed as \"generated sources root\"\n\n### Setup\n\nYou can find a setup script in `.bin/setup`. Run it from your projects root with \n```bash\n.bin/setup/setup.sh\n```\n\nIt supports bootstrapping your project to rename the project and domain with \n```bash\n.bin/setup/setup.sh bootstrap\n```\n\nAs well as creating new packages with\n```bash\n.bin/setup/setup.sh package\n```\n\nYou need to repackage the setup application, located in `.bin/setup`, if you made some changes to it\n```bash\n# Assuming you are located in your applications root\ncd .bin/setup\nsbt assembly\ncd ../..\n```\n\n## Testing\n\nYou can run functional tests against an in memory database and Slick easily with Play from a clean slate:\n\nFor local Testing:\n\n```bash\n./deployment/runtest.sh\n```\n\n#### For CI:\n\nA Postgis Database has to be available to run:\n\n```bash\nsbt ciTests\n```\n\n## Running\n\n###### Before Running this you have to run: slickGen and ciTest\n\nTo run the project, start up Play:\n\n```bash\nsbt run\n```\n\nAnd that's it!\n\nThe service locally aviable at: \u003chttp://localhost:9000\u003e\n\n## Licenses:\nLiceses Markdown: [Last updated (18.06.2020)](doc/licenses.md)\n\n## Changes:\nChanges Markdown: [Changes](doc/changes.md)\n\n## Contributors:\n\n\u003ca href=\"https://github.com/jona7o\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8403631?s=460\u0026u=831a4265651db985e3a043ad0fec697f68130c04\u0026v=4\" title=\"jona7o\" width=\"80\" height=\"80\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/patsta32\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/12295003?s=460\u0026u=5f79d4aac3414271cd5393c3b97f413a417925aa\u0026v=4\" title=\"patsta32\" width=\"80\" height=\"80\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/anderha\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36031262?s=96\u0026v=4\" title=\"anderha\" width=\"80\" height=\"80\"\u003e\u003c/a\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnfactory%2Fbootstrap-play2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finnfactory%2Fbootstrap-play2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnfactory%2Fbootstrap-play2/lists"}