{"id":26383210,"url":"https://github.com/tbsklg/strikes","last_synced_at":"2026-04-18T01:01:57.958Z","repository":{"id":253056919,"uuid":"841289015","full_name":"tbsklg/strikes","owner":"tbsklg","description":"Strikes is a simple CLI tool to hold people or things accountable for their mistakes.","archived":false,"fork":false,"pushed_at":"2024-10-07T05:56:22.000Z","size":138,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T08:34:01.382Z","etag":null,"topics":["aws","aws-lambda","fun","rust","strikes","terraform"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tbsklg.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":"2024-08-12T05:32:31.000Z","updated_at":"2024-10-07T05:55:42.000Z","dependencies_parsed_at":"2024-09-10T22:53:46.980Z","dependency_job_id":null,"html_url":"https://github.com/tbsklg/strikes","commit_stats":null,"previous_names":["tbsklg/strike"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/tbsklg/strikes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbsklg%2Fstrikes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbsklg%2Fstrikes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbsklg%2Fstrikes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbsklg%2Fstrikes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tbsklg","download_url":"https://codeload.github.com/tbsklg/strikes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbsklg%2Fstrikes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31952206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"ssl_error","status_checked_at":"2026-04-18T00:39:20.671Z","response_time":62,"last_error":"SSL_read: 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":["aws","aws-lambda","fun","rust","strikes","terraform"],"created_at":"2025-03-17T06:33:40.046Z","updated_at":"2026-04-18T01:01:57.926Z","avatar_url":"https://github.com/tbsklg.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strikes\nStrikes is a simple CLI tool to hold people or things accountable for their mistakes.\n\nKeep in mind that it is not intended for serious use. It's just a fun project to\nplay around with Rust and AWS Lambda. At its core, it's a simple CRUD app.\n\n## Description\nStrikes can be used to track (add, list, delete) strikes for a person, team or anything else you want to track.\nThe tool can be used with a remote server or locally.\n\n## Tech Stack\n- Rust\n- Terraform\n- HTMX\n- Handlebars\n- AWS\n\n## AWS Infrastructure\n![AWS Infrastructure diagram](infrastructure/docs/strikes.drawio.svg)\n\n## Installation\n\nOn macOS using homebrew:\n```bash\nbrew tap tbsklg/strikes\nbrew install strikes\n```\n\nThere are specific binaries available. You can choose the release for your platform from the [releases page](https://github.com/tbsklg/strikes/releases).\nThe binary is a standalone executable and does not require installation.\n\nExample for the Linux binary:\n### Linux\n```bash\ntar -xvzf strikes-0.0.1-alpha-x86_64-unknown-linux-musl.tar.gz -C \u003cpath-to-install\u003e\n```\n\nAfter extracting the binary, you may need to add the path to your PATH environment variable.\n\n## Usage\n```bash\nSimple CLI tool to track and assign strikes\n\nUsage: strikes [OPTIONS] [COMMAND]\n\nCommands:\n  strike        Add a strike\n  ls            List all strikes\n  clear         Clear strikes\n  check-health  Check health of the client\n  help          Print this message or the help of the given subcommand(s)\n\nOptions:\n  -c, --config-path \u003cCONFIG_PATH\u003e\n          Specify the path to the configuration file\n\n  -h, --help\n          Print help (see a summary with '-h')\n\n  -V, --version\n          Print version\n```\n\n## Use with a remote server\nYou can use a remote server to store the strikes. Either you get access to an existing server or you can deploy the infractructure to your AWS account yourself.\nAnyways you need to provide the URL to the server and an API key.\n\n## Use locally\nYou can use the local client without a remote server.\nIt will generate a JSON file where the strikes are stored. \n\n## Configuration file\nProvide a configuration file at .config/strikes/configuration.yaml. The remote server configuration has precedence over the local configuration.\n\n```yaml\nremote:\n    base_url: \"https://strikes.example.com\"\n    api_key: \"your-api-key\"\nlocal:\n    db_path: \"/path/to/db.json\"\n```\n\nYou can configure a different configuration file location by using the '--config-path' argument.\nThe argument has precedence over the configuration file.\n\n```bash\nstrikes --config-path /path/to/configuration.yaml strike guenther\n```\n\n## Development\n### Pre-requisites\nYou'll need to install:\n- [Rust](https://www.rust-lang.org/tools/install) \n- [Docker](https://docs.docker.com/get-docker)\n- [Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)\n- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)\n\n### Deploy infrastructure to your AWS account\nFirst of all you need to create a S3 bucket to store the terraform state. Navigate to the infrastructure/remote-state directory and run:\n```bash\nterraform init\nterraform plan\nterraform apply\n```\nThis will create a S3 bucket and a DynamoDB table to store the terraform state. \n\nThen build releases for all lambda functions within the /lambdas folder:\n```bash\ncargo lambda build --release\n```\n\nAfterwards you can deploy the infrastructure by navigating to the infrastructure directory and running:\n```bash\nterraform init\nterraform plan\nterraform apply\n```\n\n### How to test the cli-client\nNavigate to cli-client and run:\n```bash\ncargo test\n```\n\n### How to test the infrastructure lambdas\nNavigate to infrastructure/lambdas/tests and run:\n\n```bash\ndocker-compose up -d\n```\n\nThis will set up a DynamoDB local instance. Afterwards navigate back to infrastructure/lambdas and run:\n\n\n```bash\ncargo test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbsklg%2Fstrikes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftbsklg%2Fstrikes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbsklg%2Fstrikes/lists"}