Skip to content

Repository files navigation

Onpa (音波)

Onpa (音波) is a native SwiftUI companion app for BirdNET-Go stations. The name is Japanese for "sound wave", reflecting the app's focus on turning station audio into a clear, mobile view of recent detections, live updates, species activity, media, and station status.

This project is intentionally a companion app, not a standalone classifier: BirdNET-Go remains the station-side analyzer and source of truth.

Current Capabilities

  • Connect to a BirdNET-Go station by URL and validate station configuration.
  • Log in to protected stations, including password-only simple auth setups.
  • Show recent detections and stream live detection events over SSE.
  • Open detection detail with audio playback, spectrogram generation/display, species image attribution, weather, and time-of-day context.
  • Browse detected species using station species data plus recent detection summaries.
  • Cache recent detections/species for graceful offline fallback.
  • Generate redacted diagnostics bundles from station management in the Dashboard navigation bar.

Screenshots

Dashboard Feed
Dashboard tab showing daily detection activity Feed tab showing recent detections
Species Station Management
Species tab showing detected species Station management showing connection settings

Tech Stack

  • Swift, SwiftUI, Swift Concurrency, and URLSession.
  • AVPlayer for station audio clips.
  • UserDefaults-backed station/preferences storage, Keychain-backed credentials, and file-backed local cache.
  • Xcode project with GitHub Actions CI and semantic-release-based GitHub releases.

Development

Requirements:

  • macOS with Xcode 26.1.1 or newer compatible tooling.
  • iOS Simulator runtime compatible with the project deployment target.
  • Node.js 22 for release tooling.

Build locally:

xcodebuild \
  -project src/Onpa.xcodeproj \
  -scheme Onpa \
  -configuration Debug \
  -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.1' \
  -derivedDataPath build/DerivedData \
  CODE_SIGNING_ALLOWED=NO \
  build

For debug simulator launches, the app supports flags such as -initialTab, -stationURL, and -debugDetectionID. See docs/DEVELOPMENT.md for the full contributor guide.

Releases

Releases are managed by semantic-release through GitHub Actions. Conventional Commits determine release notes, tags, and published GitHub releases.

The checked-in app and package versions intentionally remain 0.0.0-development; release workflows pass the semantic-release version to xcodebuild at build time and do not commit version bumps back to the repository. When a new release is created on main, the release workflow also exports a signed App Store Connect IPA and uploads it to TestFlight. See docs/DEVELOPMENT.md for the required GitHub secrets.

Roadmap

The long-term plan covers station administration, taxonomy browsing, analytics, notifications, widgets, App Intents, and other Apple platform integrations. Track current status in docs/BIRDNET_GO_IOS_PROJECT_PLAN.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages