Skip to content

maxkrieger/voiceliner

Repository files navigation

Voiceliner

A 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. The codebase is still quite messy, but contributions welcome!

Screenshots

Contributing & License

This project is AGPLv3 but with an exception for the App Store. Learn More

Building

  • Install flutter
  • flutter run lib/main.dart

Rebuilding Icons

Place a 1024x1024 icon.png in assets/icon/icon.png and run

flutter pub run flutter_launcher_icons:main

Deploying

  • android/key.properties:
  storePassword=keystore password
  keyPassword=key password
  keyAlias=key alias
  storeFile=/keystore/location

For continuous integration:

Env Var Value
APPLE_ID apple account email"
APP_IDENTIFIER ios com.blabla.blabla
PLAY_APP_IDENTIFIER android com.blablabla.bla
ITC_TEAM_ID documented in fastlane
TEAM_ID documented in fastlane
MATCH_GIT github SSH URI for fastlane match
MATCH_PASSWORD documented in fastlane
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD app specific password for fastlane
FASTLANE_USER documented in fastlane
FASTLANE_PASSWORD documented in fastlane
CONNECT_KEY app store connect .p8 file contents
CONNECT_KEY_ID app store connect key id
CONNECT_ISSUER_ID app store connect key issuer id
GOOGLE_PLAY_JSON_CONTENT base64 encoded json keys for google play fastlane
KEYSTORE base64 encoded keystore.jks
KEY_PROPERTIES key.properties seen above
SSH_PRIVATE_KEY for github access
SENTRY_DSN for sentry logging

For local deployment, populate the following .env files:

ios/fastlane/.env:

MATCH_GIT=...
APP_IDENTIFIER=...
CONNECT_KEY_ID=...
CONNECT_ISSUER_ID=...
APPLE_ID=...
FIRST_NAME=...
LAST_NAME=...
PHONE_NUMBER=...
EMAIL_ADDRESS=...

android/fastlane/.env:

PLAY_APP_IDENTIFIER=...

.env:

SENTRY_DSN=...

You can then use ./deploy_ios.sh and ./deploy_android.sh to deploy to the app stores.

Upgrading fastlane

ios/$ bundle update fastlane
android/$ bundle update fastlane

Fastlane Match Notes

When 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.