{"id":13620697,"url":"https://github.com/maxkrieger/voiceliner","last_synced_at":"2025-04-04T09:10:37.915Z","repository":{"id":42705491,"uuid":"404925853","full_name":"maxkrieger/voiceliner","owner":"maxkrieger","description":"Braindump better.","archived":false,"fork":false,"pushed_at":"2024-04-12T08:37:52.000Z","size":41313,"stargazers_count":652,"open_issues_count":50,"forks_count":45,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-28T08:09:09.529Z","etag":null,"topics":["app","flutter"],"latest_commit_sha":null,"homepage":"https://a9.io/voiceliner","language":"Dart","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/maxkrieger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","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},"funding":{"github":"maxkrieger"}},"created_at":"2021-09-10T02:00:22.000Z","updated_at":"2025-03-27T23:37:49.000Z","dependencies_parsed_at":"2024-08-01T21:54:01.492Z","dependency_job_id":null,"html_url":"https://github.com/maxkrieger/voiceliner","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrieger%2Fvoiceliner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrieger%2Fvoiceliner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrieger%2Fvoiceliner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrieger%2Fvoiceliner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxkrieger","download_url":"https://codeload.github.com/maxkrieger/voiceliner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149505,"owners_count":20891954,"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":["app","flutter"],"created_at":"2024-08-01T21:00:58.555Z","updated_at":"2025-04-04T09:10:37.899Z","avatar_url":"https://github.com/maxkrieger.png","language":"Dart","funding_links":["https://github.com/sponsors/maxkrieger"],"categories":["Dart"],"sub_categories":[],"readme":"# \u003cimg src=\"assets/icon/icon.png\" width=\"100\" /\u003e Voiceliner\n\nA voice memos-like for Android and iOS. Written in Flutter. Transcription on iOS uses the native transcription APIs (mostly on-device) and on Android, uses [Vosk](https://github.com/alphacep/vosk-api).\nThe codebase is still quite messy, but contributions welcome!\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshots/1.png\" width=\"300\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshots/2.png\" width=\"300\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshots/3.png\" width=\"300\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Contributing \u0026 License\n\nThis project is AGPLv3 but with an exception for the App Store. [Learn More](CONTRIBUTING.md)\n\n## Building\n\n- Install flutter\n- `flutter run lib/main.dart`\n\n## Rebuilding Icons\n\nPlace a 1024x1024 `icon.png` in `assets/icon/icon.png` and run\n\n```\nflutter pub run flutter_launcher_icons:main\n```\n\n## Deploying\n\n- `android/key.properties`:\n\n```\n  storePassword=keystore password\n  keyPassword=key password\n  keyAlias=key alias\n  storeFile=/keystore/location\n```\n\nFor continuous integration:\n\n| Env Var                                      | Value                                             |\n|----------------------------------------------|---------------------------------------------------|\n| APPLE_ID                                     | apple account email\"                              |\n| APP_IDENTIFIER                               | ios com.blabla.blabla                             |\n| PLAY_APP_IDENTIFIER                          | android com.blablabla.bla                         |\n| ITC_TEAM_ID                                  | documented in fastlane                            |\n| TEAM_ID                                      | documented in fastlane                            |\n| MATCH_GIT                                    | github SSH URI for fastlane match                 |\n| MATCH_PASSWORD                               | documented in fastlane                            |\n| FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD | app specific password for fastlane                |\n| FASTLANE_USER                                | documented in fastlane                            |\n| FASTLANE_PASSWORD                            | documented in fastlane                            |\n| CONNECT_KEY                                  | app store connect .p8 file contents               |\n| CONNECT_KEY_ID                               | app store connect key id                          |\n| CONNECT_ISSUER_ID                            | app store connect key issuer id                   |\n| GOOGLE_PLAY_JSON_CONTENT                     | base64 encoded json keys for google play fastlane |\n| KEYSTORE                                     | base64 encoded keystore.jks                       |\n| KEY_PROPERTIES                               | key.properties seen above                         |\n| SSH_PRIVATE_KEY                              | for github access                                 |\n| SENTRY_DSN                                   | for sentry logging                                |\n\nFor local deployment, populate the following `.env` files:\n\n`ios/fastlane/.env`:\n\n```\nMATCH_GIT=...\nAPP_IDENTIFIER=...\nCONNECT_KEY_ID=...\nCONNECT_ISSUER_ID=...\nAPPLE_ID=...\nFIRST_NAME=...\nLAST_NAME=...\nPHONE_NUMBER=...\nEMAIL_ADDRESS=...\n```\n\n`android/fastlane/.env`:\n\n```\nPLAY_APP_IDENTIFIER=...\n```\n\n`.env`:\n\n```\nSENTRY_DSN=...\n```\n\nYou can then use `./deploy_ios.sh` and `./deploy_android.sh` to deploy to the app stores.\n\n\n## Upgrading fastlane\n\n```\nios/$ bundle update fastlane\nandroid/$ bundle update fastlane\n```\n\n## Fastlane Match Notes\n\nWhen running `fastlane match development --generate_apple_certs`, make sure to specify `*` for the bundle id, so that it can make provisioning profiles both for the `.debug` bundle identifier and the main one.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxkrieger%2Fvoiceliner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxkrieger%2Fvoiceliner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxkrieger%2Fvoiceliner/lists"}