{"id":40513410,"url":"https://github.com/sakisv/canibeloud","last_synced_at":"2026-01-20T20:31:45.786Z","repository":{"id":218962392,"uuid":"714816973","full_name":"sakisv/canibeloud","owner":"sakisv","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-13T22:30:06.000Z","size":178,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-14T00:20:35.742Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sakisv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2023-11-05T22:15:07.000Z","updated_at":"2025-08-13T22:30:10.000Z","dependencies_parsed_at":"2024-02-16T00:33:59.369Z","dependency_job_id":"4495f5f8-28cc-45f1-8956-40a7e77c72a5","html_url":"https://github.com/sakisv/canibeloud","commit_stats":null,"previous_names":["sakisv/canibeloud"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sakisv/canibeloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakisv%2Fcanibeloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakisv%2Fcanibeloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakisv%2Fcanibeloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakisv%2Fcanibeloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sakisv","download_url":"https://codeload.github.com/sakisv/canibeloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakisv%2Fcanibeloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28612873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T18:56:40.769Z","status":"ssl_error","status_checked_at":"2026-01-20T18:54:26.653Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":[],"created_at":"2026-01-20T20:31:45.215Z","updated_at":"2026-01-20T20:31:45.777Z","avatar_url":"https://github.com/sakisv.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![justforfunnoreally.dev badge](https://img.shields.io/badge/justforfunnoreally-dev-9ff)](https://justforfunnoreally.dev)\n\n# Can I be loud?\n\nA website that tries to answer this simple question based on your location.\n\nUsing it as an excuse and playground to learn rust, so the code you see here is probably\nneither safe nor efficient.\n\nFeel free to open a PR and suggest improvements.\n\n## Why though?\n\nInspired by a neighbour of mine, seemingly unaware of the concepts of clocks and time.\n\n## Build/Development\n\nJust clone the repo and `cargo run` to run it.\n\nDuring development, you can install `cargo-watch`[^1] and set it to\nautomatically recompile and run everytime there is a change with `cargo watch -x run`\n\n### Docker\n\n#### Building and pushing the `builder` image\n\nTo build the `builder` which contains precompiled versions of the dependencies:\n\n    $ cd canibeloud\n    $ docker buildx build --build-arg --platform=linux/arm64 -t sakisv/canibeloud-builder:main -f Dockerfile-builder  .\n    $ docker push sakisv/canibeloud-builder:main\n\n#### Building the app image\n\nThe app image relies on the `builder` image being available on dockerhub ☝️\n\nTo build a docker image on your current branch:\n\n    $ cd canibeloud\n    $ branch=$(git rev-parse --abbrev-ref HEAD)\n    $ docker buildx build --platform=linux/amd64 -t canibeloud:${branch} .\n\nBy default this will build an image for `linux/amd64` and the rust target will be `aarch64-unknown-linux-gnu`.\n\nThese are controlled by the `--platform` argument in the command above and the `ARG TARGET_ARCHITECTURE` in the Dockerfile.\n\nThe first one tells docker which version of the images to fetch from dockerhub, whereas\nthe second tells rust which architecture the build is intended for.\n\n#### Running\n\nTo run the image you just built:\n\n    $ docker run --rm --platform linux/amd64 -p 8080:8080 -e CAN_I_BE_LOUD_BIND_ADDR=0.0.0.0 -it canibeloud:${branch}\n\n\nThe `--platform` argument here is necessary if you're on a different architecture (e.g. an\nM1 Mac) but you want to run an x86_64 image.\n\nAlso the `-e CAN_I_BE_LOUD_BIND_ADDR=0.0.0.0` is required because by default the actix\nserver binds on `127.0.0.1`, which won't accept any requests when running inside a container.\n\n\n[^1]: https://crates.io/crates/cargo-watch\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakisv%2Fcanibeloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsakisv%2Fcanibeloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakisv%2Fcanibeloud/lists"}