{"id":28545212,"url":"https://github.com/playframework/play-courses","last_synced_at":"2025-07-06T03:05:51.491Z","repository":{"id":152313610,"uuid":"624788513","full_name":"playframework/play-courses","owner":"playframework","description":"Courses on play using the course management tools","archived":false,"fork":false,"pushed_at":"2023-07-26T09:20:08.000Z","size":708,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-06-03T09:36:27.939Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/playframework.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},"funding":{"github":["playframework"],"open_collective":"playframework"}},"created_at":"2023-04-07T09:01:39.000Z","updated_at":"2024-06-17T17:27:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"f0438365-ebee-48b3-a472-02ee3721696f","html_url":"https://github.com/playframework/play-courses","commit_stats":{"total_commits":44,"total_committers":3,"mean_commits":"14.666666666666666","dds":0.5,"last_synced_commit":"c80cdf7be6611252f9781b134d128e9176fb217e"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/playframework/play-courses","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playframework%2Fplay-courses","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playframework%2Fplay-courses/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playframework%2Fplay-courses/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playframework%2Fplay-courses/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/playframework","download_url":"https://codeload.github.com/playframework/play-courses/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playframework%2Fplay-courses/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259660382,"owners_count":22891780,"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":[],"created_at":"2025-06-09T23:06:51.702Z","updated_at":"2025-07-06T03:05:51.484Z","avatar_url":"https://github.com/playframework.png","language":"CSS","readme":"# play-courses\n\nThis course is based on the example of the book `Play For Scala` written by `Peter Hilton, Erik Bakker and Francisco Canedo`.\n\nThe CMT complete documentation is available [here](http://cmt.lunatech.com/docs/getting_started).\n\n## Requirement\n\nTo follow the steps in this tutorial, you will need the correct version of Java and sbt. The tutorial requires:\n\n* Java Software Developer's Kit (SE) 11 or higher\n* sbt 1.8.2 or higher. Note: if you downloaded this project as a zip file from https://developer.lightbend.com, the file includes an sbt distribution for your convenience.\n\nTo check your Java version, enter the following in a command window:\n\n```bash\njava -version\n```\n\nTo check your sbt version, enter the following in a command window:\n\n```bash\nsbt sbtVersion\n```\n\nIf you do not have the required versions, follow these links to obtain them:\n\n* [Java SE](http://www.oracle.com/technetwork/java/javase/downloads/index.html)\n* [sbt](http://www.scala-sbt.org/download.html)\n\n## CMT installation\n\n- Download the [latest CMT release](https://github.com/lunatech-labs/course-management-tools/releases)\n- Unzip the zip file downloaded\n- Update your PATH to include the `course-management-tools/bin` folder in\n  the folder in which you unzipped the downloaded zip file\n\nThe installation documentation about the CMT is available [here](http://cmt.lunatech.com/docs/install).\n\nTo check if the installation is a success try to run:\n\n```\n~ cmta\n~ cmtc\n```\n\nIf the possible parameters are returned the installation is successful.\n\n## CMT course setup\n\n- Clone the repository to a directory of your choice\n- At the root of the repository run the studentify: `cmta studentify -f -m . -d [target_dir_path]`\n- Set up the studentified course as the current course: `cmtc set-current-course -s [target_dir_path]`\n\nOnce this is done you can run `cmtc` to display the possible commands\n\n## Build and run the project\n\nTo build and run the project:\n\n1. Use a command window to change into the code folder of the project directory, for example: `cd play-course/code`\n2. Build the project. Enter: `sbt run`. The project builds and starts the embedded HTTP server. Since this downloads libraries and dependencies, the amount of time required depends partly on your connection's speed.\n3. After the message `Server started, ...` displays, enter the following URL in a browser: [http://localhost:9000](http://localhost:9000)\n\n## Release\n\n- Push your changes \u0026 create a pull request\n- CI will run tests on each exercise\n- Merge the pull request into main\n- Create a tag for the release (e.g., `2.9.0-M4`)\n- Push the tag on the upstream repository (e.g. `git push --tags upstream`)\n- CI will run tests \u0026 create a release -\u003e A release consists of a student \u0026 a linearised repository\n\n## Rules \u0026 Convention\n\nCommits name:\nName the commit after the exercise name (e.g. exercise_00X_subject) when creating a new one.\nWhen doing a fix, add the exercise(s) name and the change in the title (e.g. exercise_00X fix css main template).\nWhen updating multiple exercises, the commit title should contain all the exercises' names and the subject of the change -\u003e (e.g. exercises 001, 002, 00X =\u003e update http port application.conf).\n\nIt's always a good idea to add a description under the commit title.\n- What are the changes\n- Why did it change\n- Meaningful resources related to the change\n\n## Setting up the database\n\nTo setup the database, we provided a docker-compose file that take care of creating a Postgresql instance and initializing with a single table and some dummy data.\n\n```\ndocker-compose up\n```\n\n## Possible enhancements\n\n- Divide exercise 003 (create a new product) in two parts.\n    - First part =\u003e creating the product with a simple form.\n    - Second part =\u003e adding validation to the form\n","funding_links":["https://github.com/sponsors/playframework","https://opencollective.com/playframework"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplayframework%2Fplay-courses","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplayframework%2Fplay-courses","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplayframework%2Fplay-courses/lists"}