{"id":31721173,"url":"https://github.com/obecker/causalist","last_synced_at":"2026-01-20T17:43:42.139Z","repository":{"id":216463493,"uuid":"741391275","full_name":"obecker/causalist","owner":"obecker","description":"German legal case management app","archived":false,"fork":false,"pushed_at":"2025-10-08T12:47:26.000Z","size":2490,"stargazers_count":0,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-08T14:37:33.552Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/obecker.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-10T09:50:42.000Z","updated_at":"2025-10-08T12:47:28.000Z","dependencies_parsed_at":"2024-05-30T12:56:55.114Z","dependency_job_id":"26b57a76-664f-4ca5-8adf-dd9676df58cf","html_url":"https://github.com/obecker/causalist","commit_stats":null,"previous_names":["obecker/causalist"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/obecker/causalist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obecker%2Fcausalist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obecker%2Fcausalist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obecker%2Fcausalist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obecker%2Fcausalist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/obecker","download_url":"https://codeload.github.com/obecker/causalist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obecker%2Fcausalist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000713,"owners_count":26082911,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-09T03:42:43.932Z","updated_at":"2025-10-09T03:42:48.355Z","avatar_url":"https://github.com/obecker.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"frontend/public/logo.svg\" width=\"24\"\u003e Causalist\n\nCausalist is a tool designed for the organization and monitoring of legal cases in the German legal system. \nThe application operates on AWS and comprises a Kotlin-based lambda backend along with a React-based frontend.\n\nPlease be aware that the deployed service is presently not accessible to the public.\n\n\n## Backend\n\nThe [backend](backend) directory contains a Gradle project responsible for the backend service, which exposes a \nREST API for the frontend. This service, implemented in Kotlin, utilizes [http4k](https://github.com/http4k/http4k) \nfor the API and [http4k-connect](https://github.com/http4k/http4k-connect) \nfor [DynamoDB](https://aws.amazon.com/dynamodb/) and [S3](https://aws.amazon.com/s3/) access.\n\nTo run the service locally, local instances of DynamoDB and S3 are required. \nThere is a [docker compose](scripts/docker-compose.yml) file that starts a local DynamoDB and a [MinIO](https://min.io)\nserver (for S3).\nThe scripts [init-local-dynamodb.sh](scripts/init-local-dynamodb.sh) and [init-local-s3.sh](scripts/init-local-s3.sh) \nfacilitate the initial creation of the required local DynamoDB tables and the local S3 bucket.\n\nExecute the command `gradle runShadow` to launch the application at `http://localhost:4000`.\n\nVisit http://localhost:4000/api/ to access a Swagger UI providing documentation for the service's API.\n\n\n## Frontend\n\nWithin the [frontend](frontend) directory, you'll find the source code for a single-page application that interfaces \nwith the backend service. This application is developed in JavaScript, employing [Vite](https://vitejs.dev), \n[React](https://react.dev), and [Tailwind CSS](https://tailwindcss.com).\n\nTo initiate a server delivering the frontend, execute the command `pnpm run start`.\nThe frontend will be accessible at http://localhost:3000, while it will interact with the backend service at \n`http://localhost:4000`.\n\n\n## Infrastructure\n\nIn the [infrastructure](infrastructure) directory, you'll find the [Terraform](https://www.terraform.io) source code \nfor deploying the service on AWS. Before the first deployment you need to:\n\n- Create a Terraform [workspace](https://developer.hashicorp.com/terraform/language/state/workspaces) named `prod` (and optionally `stage`).\n- Supply the necessary variables, as outlined in [variables.tf](infrastructure/variables.tf), by creating a file named \n  `prod.tfvars` (and optionally `stage.tfvars`).\n\nTo execute an AWS deployment, follow these steps:\n\n1. Run `gradle assemble` in the backend directory.\n2. Run `pnpm run build` in the frontend directory.\n3. Execute `scripts/deploy.sh prod` or `scripts/deploy.sh stage`.\n\nNote: Every AWS Lambda deployment creates a new function version, however\n[terraform currently doesn't remove previous function versions](https://github.com/hashicorp/terraform-provider-aws/issues/17668).\nTo get rid of unused functions versions, execute the script [cleanup-lambda.sh](scripts/cleanup-lambda.sh).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobecker%2Fcausalist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobecker%2Fcausalist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobecker%2Fcausalist/lists"}