{"id":40864013,"url":"https://github.com/takecare/haiku","last_synced_at":"2026-01-22T00:13:53.966Z","repository":{"id":48171270,"uuid":"510312503","full_name":"takecare/haiku","owner":"takecare","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-08T10:59:01.000Z","size":210,"stargazers_count":0,"open_issues_count":19,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-08T13:24:30.194Z","etag":null,"topics":["deta","deta-base","flask","jetpack-compose","kotlin","kotlin-flow"],"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/takecare.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":"2022-07-04T10:25:46.000Z","updated_at":"2024-07-08T10:58:57.000Z","dependencies_parsed_at":"2024-07-08T13:21:52.617Z","dependency_job_id":null,"html_url":"https://github.com/takecare/haiku","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/takecare/haiku","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takecare%2Fhaiku","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takecare%2Fhaiku/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takecare%2Fhaiku/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takecare%2Fhaiku/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takecare","download_url":"https://codeload.github.com/takecare/haiku/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takecare%2Fhaiku/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28647807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"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":["deta","deta-base","flask","jetpack-compose","kotlin","kotlin-flow"],"created_at":"2026-01-22T00:13:53.905Z","updated_at":"2026-01-22T00:13:53.961Z","avatar_url":"https://github.com/takecare.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Haiku\n\nA tool to help you write Haikus in 🇵🇹 PT-PT and 🇧🇷 PT-BR.\n\nNote: Portuguese makes heavy usage of characters that are not in the English\nalphabet - e.g. \"ó\", \"ç\", \"é\", etc. Writing \"olá\" or \"ónibus\" is therefore\ndifferent from writing \"ola\" and \"onibus\". So, words missing accents where they\nare required are fundamentally different from the ones that have them (\"ola\" vs\n\"olá\"), or they might not even be words at all (like \"onibus\"). This service is\nnot yet ready to support this sort of cases, so accents are required.\n\n## Server\n\nThe enterity of the infrastructure is on Deta, requiring little to no\nintervention on our end.\n\nAt the moment we have only one micro/cloud function, named `api`. It\ncurrently requires no authentication whatsoever (although we may be adding\nAPI keys in the future). It is served over HTTPS, managed by Deta.\n\nIt's our whole API, providing endpoints to determine the number of syllables in\na word, line or set of lines.\n\nWe rely on [gunicorn](https://gunicorn.org/) as our WSGI server in production,\nand on [Werkzeug](https://pypi.org/project/Werkzeug/) for local development.\n\n### Local development\n\nAs we only have one micro at the moment, these section focus on that single\nmicro/function. If we deploy more micros in the future they'll likely follow\nthe same exact setup as our `api` micro.\n\n#### Virtual Environment\n\nWe use Python v3.9.13 (this is because Deta Space [only supports versions 3.8\nand 3.9](https://deta.space/docs/en/quickstart-guides/python)). We use `pyenv`\nto manage Python versions locally (but you don't have to).\n\n- Go to `server/api`\n- Run `python3 -m venv .venv` to create the virtual environment\n- Activate it: `source .venv/bin/activate`\n- Make sure you're picking up the virtual environment: `which python3`,\n  `which pip` - these should print out results from your local virtual\n  environment\n\n#### Environment variables\n\nWe make use of `.env` files to store environment variables. `.env` is used\nfor local development, whereas `.env.prod` is used to track environment\nvariables for the production environment.\n\nAll this is already setup and you shouldn't need to worry about it, except\nmaking sure you have the `.env.prod` file when deploying the app.\n\n#### Makefile\n\n- Run `make install-dev` to install all dependencies needed for local\n  development\n\n`make install` is also available (production dependencies only) but since Deta\nonly looks at `requirements.txt` you will likely won't ever need to run this\ncommand (unless you're deplyoing to some other target).\n\n- Run `make run` to run the server locally\n\n#### Typechecking\n\nThis project uses mypy. Run it with `make typecheck`.\n\n#### Formatting\n\nThis project uses black to format code. Run it with `make format`.\n\n### Deployments\n\nWe deploy on Deta Space, now that Deta Cloud is deprecated. Deta will look for\ndependencies declared in `requirements.txt` so make sure you have this file\n(it's already in the repo).\n\nTo deploy a micro run `make deploy` in the micro's directory.\n\n### Logging\n\nDeta no longer supports VISOR, after migrating from \"Deta Cloud\" to\n\"Deta Spaces\". This means there is only one way to check the logs and that is\nin the web browser, as such `make logs` will open the Builder UI in a browser.\n\n## Android\n\nTODO\n\n- Coroutines + StateFlow\n- ViewModel\n- Compose\n- How UI is modelled\n- Navigation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakecare%2Fhaiku","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakecare%2Fhaiku","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakecare%2Fhaiku/lists"}