{"id":15994026,"url":"https://github.com/azuobs/naive-workflow-manager","last_synced_at":"2026-05-07T15:33:20.544Z","repository":{"id":143238983,"uuid":"140820607","full_name":"AzuObs/naive-workflow-manager","owner":"AzuObs","description":"Naive-workflow-manager microservice with akka-http and akka-actors","archived":false,"fork":false,"pushed_at":"2018-07-16T07:47:48.000Z","size":123,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-16T17:23:02.920Z","etag":null,"topics":["akka-actors","akka-http","cron","crontab","docker","example-project","functional-programming","mysql","sbt","scala"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AzuObs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-07-13T08:35:44.000Z","updated_at":"2018-08-09T13:47:01.000Z","dependencies_parsed_at":"2023-04-17T11:32:10.747Z","dependency_job_id":null,"html_url":"https://github.com/AzuObs/naive-workflow-manager","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/AzuObs/naive-workflow-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzuObs%2Fnaive-workflow-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzuObs%2Fnaive-workflow-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzuObs%2Fnaive-workflow-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzuObs%2Fnaive-workflow-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AzuObs","download_url":"https://codeload.github.com/AzuObs/naive-workflow-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzuObs%2Fnaive-workflow-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32743949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-actors","akka-http","cron","crontab","docker","example-project","functional-programming","mysql","sbt","scala"],"created_at":"2024-10-08T07:05:09.286Z","updated_at":"2026-05-07T15:33:20.527Z","avatar_url":"https://github.com/AzuObs.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# App Architecture\n\nThe app is a fairly standard scala server that uses akka http, akka actors, and mysql.  \nIt is possible to run the application from the command line and to make requests against it  \nusing curl \n\nThis is the high-level lifecycle of a request:\n- Requests are received in the Route handlers\n- Route handler dispatches a message to an Actor\n- Actor uses a Service\n- Service uses a DatabaseAccessObject\n\nFunctional:\n- The data is almost entirely immutable\n- Side effects are handled at the edge of the application (inside DatabaseAccessObjects)\n\n\n# Dependencies\n\nThe project assumes you have installed:\n- Java 8 JDK\n- Scala compiler 2.12.1+ \n- sbt\n- Docker\n- Docker-compose\n\n\n# Run Dev\n\n```bash\ndocker-compose build\ndocker-compose up\nsbt run\n```\n\n\n# Run Tests\n\n```bash\ndocker-compose build\ndocker-compose up\nsbt test\n```\n\n\n# Periodic Jobs\n\nPeriodic job run in the `crond` docker container. There is a `docker/crond/config.json` describing the periodic job being run.\n\n\n# HTTP Routes\n\n```text\ncurl -X GET  localhost:8080/v1/workflows\ncurl -X POST localhost:8080/v1/workflows -H \"Content-Type: application/json\" --data '{\"nSteps\": 3}'\n\ncurl -X GET  localhost:8080/v1/workflows/:workflowId/executions\ncurl -X POST localhost:8080/v1/workflows/:workflowId/executions\ncurl -X POST localhost:8080/v1/workflows/:workflowId/executions/:executionId/incrementations\n\ncurl -X POST localhost:8080/v1/jobs/delete-terminated-workflow-executions\n```\n\n\n# Architecture Log Document\n\n[architecture-log](./docs/architecture-log.md)\n\n\n# Further Improvements\n\n## Strong\n- more QA\n- e2e tests\n- healthcheckz endpoint\n- add logging for http requests and actors\n\n## Average\n- ./publish.sh do publish image to of the naiveworkflow app dockerhub\n- create an APIResponse JSON formatted as `{\"data\": {}, \"errors\": []}` for each endpoint\n- configure sbt to flag unused imports\n- learn more about akka http\n- learn more about actor model (akka/jvm in particular)\n- use EitherT in the route handlers\n\n## Weak\n- learn more about akka dispatchers\n- learn more about execution context\n- Utils classes are candidates for property-based testing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazuobs%2Fnaive-workflow-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazuobs%2Fnaive-workflow-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazuobs%2Fnaive-workflow-manager/lists"}