{"id":13549779,"url":"https://github.com/Bost/corona_cases","last_synced_at":"2025-04-02T23:31:08.760Z","repository":{"id":43821974,"uuid":"243966487","full_name":"Bost/corona_cases","owner":"Bost","description":"🦠 Coronavirus Information on Telegram Chatbot","archived":false,"fork":false,"pushed_at":"2025-02-09T15:08:56.000Z","size":61100,"stargazers_count":19,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-09T16:23:10.603Z","etag":null,"topics":["babashka","clojure","corona","covid-19","graphs","heroku","telegram-bot"],"latest_commit_sha":null,"homepage":"https://t.me/corona_cases_bot","language":"Clojure","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/Bost.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":"2020-02-29T12:39:57.000Z","updated_at":"2025-02-09T15:08:59.000Z","dependencies_parsed_at":"2024-01-14T15:23:53.397Z","dependency_job_id":"6a4f5ce2-7e22-4ef6-ae85-bf35d8a07fab","html_url":"https://github.com/Bost/corona_cases","commit_stats":null,"previous_names":[],"tags_count":128,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bost%2Fcorona_cases","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bost%2Fcorona_cases/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bost%2Fcorona_cases/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bost%2Fcorona_cases/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bost","download_url":"https://codeload.github.com/Bost/corona_cases/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246910913,"owners_count":20853652,"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":["babashka","clojure","corona","covid-19","graphs","heroku","telegram-bot"],"created_at":"2024-08-01T12:01:25.441Z","updated_at":"2025-04-02T23:31:07.072Z","avatar_url":"https://github.com/Bost.png","language":"Clojure","funding_links":[],"categories":["Clojure","covid-19"],"sub_categories":[],"readme":"Coronavirus disease 2019 (COVID-19) information on Telegram Messenger\n[@corona_cases_bot](https://t.me/corona_cases_bot)\n\n## Raison d´être\n\u003e The Internet interprets censorship as damage and routes around it.\n\u003e - John Gilmore\n\n\u003cimg src=\"./resources/pics/screenshot_1.png\" width=\"385\" height=\"492\"\u003e\n\u003cimg src=\"./resources/pics/screenshot_2.png\" width=\"386\" height=\"323\"\u003e\n\u003cimg src=\"./resources/pics/recovered-sum.jpg\" width=\"400\" height=\"300\"\u003e\n\u003cimg src=\"./resources/pics/recovered-abs.jpg\" width=\"400\" height=\"300\"\u003e\n\n\u003c!-- TODO add monkeypox data: https://github.com/globaldothealth/monkeypox --\u003e\n\n## Setup environment\n\n### Install\n* Java on GuixOS: `guix install openjdk:jdk`. Thanks to [awb99](https://github.com/clojure-emacs/orchard/issues/117#issuecomment-859987280)\n* [Clojure](https://clojure.org/guides/getting_started#_clojure_installer_and_cli_tools)\n* [Heroku for Clojure](https://devcenter.heroku.com/articles/getting-started-with-clojure)\n```bash\n# on Ubuntu:\n# The `sudo snap install heroku --classic` doesn't work on Ubuntu\n# See https://github.com/heroku/cli/issues/822\ncurl https://cli-assets.heroku.com/install.sh | sh\n\n# on Guix:\nnpm install -g heroku\nsudo rm /usr/local/bin/heroku\nsudo ln -s /home/bost/.npm-packages/bin/heroku /usr/local/bin/heroku\n```\n* [Babashka](https://github.com/babashka/babashka#installer-script)\n* postgresql:\n```bash\n## on Ubuntu:\nsudo apt install --yes postgresql postgresql-contrib\n# TODO see the the proposition given by the installation process:\n# You can now start the database server using:\n#     pg_ctlcluster 13 main start\nsudo systemctl status postgresql.service\nsudo systemctl stop postgresql.service\npgdata=./var/pg/data\npglog=./var/log/postgres.log\nmkdir -p $pgdata\nsudo chmod --recursive u=rwx,g=rwx,o=rwx ./var/\nsudo --shell --user=postgres\n# when using fish shell:\nset --export PATH /usr/lib/postgresql/*/bin $PATH\ninitdb $pgdata # dropdb postgres \u0026\u0026 rm -rf $pgdata\npg_ctl --pgdata=$pgdata --log=$pglog start\n# see also: postgres --pgdata=$pgdata \u0026\n\n## on Guix:\npg_ctl --pgdata=$pgdata --log=$pglog start\n```\nOpen new console and log in\n```bash\n# in case of:\n#      psql: error: FATAL:  role \"username\" does not exist\n#   sudo --user=postgres createuser -s \u003cusername\u003e\n# or:\n#   createuser --shell postgres # on guix\npsql --dbname=postgres # or:\n# sudo -u postgres psql --dbname=postgres\n```\n```postgres\n\\conninfo\n-- list databases:\n\\l\n\\l+\nSELECT datname FROM pg_database;\n```\n\n### Create\n* [Telegram Chatbot](https://core.telegram.org/bots#3-how-do-i-create-a-bot)\n* [Heroku App](https://www.heroku.com/), optionally add the Papertrail add-on\n\n### Define local environment vars\nCreate `.env` in the project root directory and set the `CLOJURE_CLI_VERSION`:\n```bash\necho \\\n\"# See also .custom.env\n\n# The value must be one of `(keys corona.envdef/environment)`;\n# lower-cased and not surrounded by the double quote chars \\\"\\\".\nCORONA_ENV_TYPE=hokuspokus\n# (keyword corona-cases)\n# (keyword hokuspokus)\n# (keyword \\\"local\\\")\n# (keyword \\\"devel\\\")\n\n# https://clojure.org/guides/getting_started#_installation_on_linux\nCLOJURE_CLI_VERSION=0.0.0.0\n\nPAPERTRAIL_API_TOKEN=\\$PAPERTRAIL_API_TOKEN_HOKUSPOKUS\nTELEGRAM_TOKEN=\\$TELEGRAM_TOKEN_HOKUSPOKUS\n\n# PAPERTRAIL_API_TOKEN=\\$PAPERTRAIL_API_TOKEN_CORONA_CASES\n# TELEGRAM_TOKEN=\\$TELEGRAM_TOKEN_CORONA_CASES\" \u003e .env\nheroku_clj updateClojureCliVersion\n```\n* Define Heroku config vars\nSee [https://dashboard.heroku.com/apps/\\\u003cHEROKU-APP-NAME\\\u003e/settings]().\nIt should contain:\n```bash\nheroku config --app \u003cHEROKU-APP-NAME\u003e\nCLOJURE_CLI_VERSION:  ...\nCOMMIT:               ...\nCORONA_ENV_TYPE:      ...\nPAPERTRAIL_API_TOKEN: ...\nREPL_PASSWORD:        ...\nREPL_USER:            ...\nTELEGRAM_TOKEN:       ...\n```\n\n## Develop\n\n1. Get the test data and start the mockup data service\nInitially, copy the whole project to a separate directory:\n```bash\ncd ..\ncp -r corona_cases/ corona_cases.data\ncd corona_cases.data\n```\n1. Repeatedly\n```bash\nheroku_clj getMockData\nclj -X:mockup-server\n```\n\n1. Start the nREPL from the command line:\n\u003c!-- No line continuations '\\' accepted --\u003e\n```bash\nclojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} refactor-nrepl/refactor-nrepl {:mvn/version \"3.5.5\"} cider/cider-nrepl {:mvn/version \"0.28.3\"}}}' -m nrepl.cmdline --middleware '[\"refactor-nrepl.middleware/wrap-refactor\", \"cider.nrepl/cider-middleware\"]'\n```\nThen in Emacs `M-x cider-connect-clj`\n\n1. Start the telegram chatbot long-polling:\n```clojure\n(require '[corona.telegram])\n(corona.telegram/start)\n```\n\n1. Start the web server:\n```clojure\n(require '[corona.web])\n(alter-var-root #'system component/start)\n```\nand check the [http://localhost:5050/](http://localhost:5050/) if it's running.\n\n## Run locally\n\nOn PostgreSQL 13.3 no var/pg/postgresql.conf changes needed.\n\nOn PostgreSQL 13.6, in the var/pg/postgresql.conf:\n1. activate:\n```\nunix_socket_directories = '/tmp'  # comma-separated list of directories\n```\n1. comment out:\n```\n# lc_messages = 'en_US.utf8'\t\t\t# locale for system error message\n# \t\t\t\t\t# strings\n# lc_monetary = 'en_US.utf8'\t\t\t# locale for monetary formatting\n# lc_numeric = 'en_US.utf8'\t\t\t# locale for number formatting\n# lc_time = 'en_US.utf8'\t\t\t\t# locale for time formatting\n```\n\n```bash\n# start Postgres\npg_ctl --pgdata=./var/pg --log=./var/log/postgres.log start # on Guix\n# pg_ctl --pgdata=./var/pg stop\nbin/build \u0026\u0026 heroku local --env=.custom.env\n# or:\n# bin/build \u0026\u0026 heroku local --env=.custom.env --set COMMIT=...\n```\n\n## Heroku CI pipeline\n```bash\nheroku_clj deploy --heroku-env hokuspokus\n# heroku_clj promote\n```\n\n## MySQL -\u003e PostgreSQL script conversion\n\n```bash\nsudo apt install postgresql postgresql-contrib\n# Switch over to the postgres account:\nsudo su postgres\ncreatedb postgres # or: dropdb postgres\n\n# psql --dbname=postgres         --echo-all --file=dbase/my.sql | rg \"ERROR\\|NOTICE|WARN\"\n# psql --dbname=postgres --quiet            --file=dbase/drop-everything.sql\npsql --dbname=postgres   --quiet            --file=dbase/my.sql\n\n# get the psql prompt:\npsql --dbname=postgres\n```\n\nthen\n```postgres\n-- help\n\\?\n-- list roles / show users\n\\du\n-- list tables\n\\dt\n-- list sequences\n\\ds\n-- list indices\n\\di\n```\n\n## Update\n```bash\nheroku_clj updateClojureCliVersion\n# like `lein ancient`\n# see also https://github.com/practicalli/clojure-deps-edn\n# clojure -Spom # generate the pom.xml\nclojure -M:outdated --upgrade # --force\n```\n\n## Others\n\n```bash\n# Inspect logfile:\n# heroku plugins:install heroku-papertrail\nheroku pt \":type -'ssl-client-cert' -'$MY_TELEGRAM_ID'\" --app \u003cHEROKU-APP-NAME\u003e | grep -v -e '^[[:space:]]*$\n\n# Inspect memory:\n# sudo apt install visualvm\nvisualvm -J-DsocksProxyHost=localhost -J-DsocksProxyPort=1080 \u0026 disown\n\n# get command line access\nTODO it reads the .bashrc and/or .bash_profile HUH!\nheroku run bash --app \u003cHEROKU-APP-NAME\u003e\n\n# postgres database command line\nheroku pg:psql --app \u003cHEROKU-APP-NAME\u003e \u003cDATABASE\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBost%2Fcorona_cases","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBost%2Fcorona_cases","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBost%2Fcorona_cases/lists"}