This guide covers building, testing, and releasing the Oracy client app for Android, Web, Linux, and Windows.
- Flutter SDK 3.10+
- Dart SDK (included with Flutter)
- Android Studio with Android SDK
- Java 17+ (included with Android Studio)
sudo apt install clang cmake ninja-build libgtk-3-dev pkg-config- Visual Studio 2022 with "Desktop development with C++" workload
- Windows 10 SDK
- Chrome browser (for development and testing)
flutter doctorAll checks should pass for your target platforms.
git clone https://github.com/pentaxis93/oracy.git
cd oracy/mobile
# Install Flutter dependencies
flutter pub get
# Generate Drift database code (if modified)
dart run build_runner buildThe app connects to https://api.oracy.app by default. To use a different server:
- Edit
lib/services/api_client.dart - Change
kDefaultBaseUrlconstant
For development, you can also configure in the app's Settings screen.
# Run on auto-detected platform
flutter run
# Run on specific platform
flutter run -d chrome # Web browser
flutter run -d linux # Linux desktop
flutter run -d windows # Windows desktop
# List available devices
flutter devices
# Run on specific Android device
flutter run -d <device_id>- Hot Reload (r): Preserves state, fast
- Hot Restart (R): Full restart, clears state
Create keystore (one-time):
keytool -genkey -v -keystore ~/upload-keystore.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias uploadCreate android/key.properties:
storePassword=<password>
keyPassword=<password>
keyAlias=upload
storeFile=<path/to/upload-keystore.jks>Important: Add key.properties to .gitignore (already done).
# Build release APK
flutter build apk --release
# Output: build/app/outputs/flutter-apk/app-release.apk# Build release bundle
flutter build appbundle --release
# Output: build/app/outputs/bundle/release/app-release.aabflutter build web --release
# Output: build/web/The build/web/ directory contains static files that can be hosted anywhere:
GitHub Pages:
# Copy build/web contents to your gh-pages branch or docs/ folderAny static host (Netlify, Vercel, Firebase Hosting):
- Upload the contents of
build/web/ - Configure to serve
index.htmlfor all routes (SPA mode)
Local testing:
cd build/web
python -m http.server 8080
# Open http://localhost:8080flutter build linux --release
# Output: build/linux/x64/release/bundle/The bundle directory contains the executable and required libraries.
Direct distribution (zip/tar):
cd build/linux/x64/release
tar -czvf oracy-linux-x64.tar.gz bundle/Snap Store (recommended for wider distribution):
Create snap/snapcraft.yaml:
name: oracy
version: '1.0.0'
summary: Voice transcription made simple
description: |
Record audio and get instant transcripts powered by AI.
grade: stable
confinement: strict
base: core22
apps:
oracy:
command: oracy
extensions: [gnome]
plugs:
- audio-record
- network
parts:
oracy:
plugin: nil
source: build/linux/x64/release/bundle
override-build: |
cp -r $SNAPCRAFT_PART_SRC/* $SNAPCRAFT_PART_INSTALL/Build and publish:
snapcraft
snapcraft upload oracy_1.0.0_amd64.snap --release=stableflutter build windows --release
# Output: build/windows/x64/runner/Release/Direct distribution (zip):
cd build/windows/x64/runner
# Zip the Release/ folderMSIX Package (for Microsoft Store):
Install the msix package:
flutter pub add --dev msixAdd to pubspec.yaml:
msix_config:
display_name: Oracy
publisher_display_name: Your Name
identity_name: com.yourcompany.oracy
msix_version: 1.0.0.0
capabilities: microphone, internetClientBuild MSIX:
dart run msix:create
# Output: build/windows/x64/runner/Release/oracy.msixEdit pubspec.yaml:
version: 1.0.0+1 # format: <version>+<build_number>version: User-visible version (1.0.0)build_number: Internal build number, increment for each release
- Major (1.x.x -> 2.x.x): Breaking changes
- Minor (1.0.x -> 1.1.x): New features
- Patch (1.0.0 -> 1.0.1): Bug fixes
flutter testflutter test integration_test/flutter analyze
dart format --set-exit-if-changed .- Update version in
pubspec.yaml - Run
flutter analyze- no issues - Run
flutter test- all pass - Test on target platforms
- Verify API connectivity to production server
- Update changelog
- Build signed APK/AAB
- Test APK on device before upload
- Upload to Play Console
- Fill release notes
- Submit for review
- Build with
flutter build web --release - Test locally with a web server
- Deploy to hosting (GitHub Pages, Netlify, etc.)
- Verify production URL works
- Build with
flutter build linux --release - Test on clean Linux system
- Package as tar.gz or Snap
- Upload to Snap Store or GitHub Releases
- Build with
flutter build windows --release - Test on clean Windows system
- Package as zip or MSIX
- Upload to Microsoft Store or GitHub Releases
# Clean and rebuild
flutter clean
flutter pub get
flutter build <platform> --release# Ensure all dependencies are installed
sudo apt install clang cmake ninja-build libgtk-3-dev pkg-config- Ensure Visual Studio 2022 is installed with C++ workload
- Run from "Developer Command Prompt for VS 2022" if PATH issues occur
# Regenerate Drift database code
dart run build_runner clean
dart run build_runner build --delete-conflicting-outputsname: Build
on:
push:
tags:
- 'v*'
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.10.0'
- run: flutter pub get
working-directory: client/flutter
- run: flutter build apk --release
working-directory: client/flutter
- uses: actions/upload-artifact@v4
with:
name: android-release
path: client/flutter/build/app/outputs/flutter-apk/app-release.apk
build-web:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.10.0'
- run: flutter pub get
working-directory: client/flutter
- run: flutter build web --release
working-directory: client/flutter
- uses: actions/upload-artifact@v4
with:
name: web-release
path: client/flutter/build/web
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y clang cmake ninja-build libgtk-3-dev
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.10.0'
- run: flutter pub get
working-directory: client/flutter
- run: flutter build linux --release
working-directory: client/flutter
- uses: actions/upload-artifact@v4
with:
name: linux-release
path: client/flutter/build/linux/x64/release/bundle
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.10.0'
- run: flutter pub get
working-directory: client/flutter
- run: flutter build windows --release
working-directory: client/flutter
- uses: actions/upload-artifact@v4
with:
name: windows-release
path: client/flutter/build/windows/x64/runner/ReleaseOracy
Voice transcription made simple.
Oracy turns your voice into text instantly. Record audio memos and get accurate transcripts powered by AI.
Features:
- One-tap recording
- Fast, accurate transcription
- Offline queue for unreliable connections
- Transcript history and search
- Android home screen widget for quick access
voice, transcription, speech-to-text, memo, recording, audio, notes
- Android: Productivity
- Windows: Productivity