- Xcode 16.0+
- Android Studio (for Android development)
- Bun (for docs/web packages)
- XcodeGen (for iOS Example app)
git clone https://github.com/hyodotdev/locanara.git
cd locanaracd packages/apple
# Build
swift build
# Test
swift test
# Open Example app
cd Example
make local && make opencd packages/android
# Build
./gradlew build
# Test
./gradlew testcd packages/site
bun install
bunx convex dev & bun devWhen developing the SDK, you can switch between local source and released packages for testing.
cd packages/apple/Example
# Development mode - uses local source (../)
make local
make open
# Release testing - uses published SPM package
make release
make open| Mode | Command | Package Source |
|---|---|---|
| Local | make local |
path: ../ (local source) |
| Release | make release |
url: locanara-swift (published) |
- During development: Use
make localto test changes immediately - After release: Use
make releaseto verify the published package works correctly - Always close Xcode before switching modes
<type>: <description>
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
- Write commit messages in English
- Use lowercase for type
- Keep description concise (under 72 characters)
feat: add summarize API for iOS
fix: resolve dark mode code block styling
docs: update API documentation
refactor: simplify MLKit client initialization
- Create a feature branch from
main - Make your changes
- Run tests locally
- Submit a PR with a clear description
Releases are automated via GitHub Actions:
- Apple SDK:
release-apple.ymlworkflow - Android SDK:
release-android.ymlworkflow
Packages are distributed via:
- Swift Package Manager (locanara-swift repo)
- CocoaPods
- Maven Central
- Swift 6.0+ with strict concurrency
- Follow Apple's Swift API Design Guidelines
- Use
async/awaitfor AI operations
- Kotlin 2.0+
- Use
suspendfunctions for AI operations - Follow Kotlin coding conventions
Open an issue on GitHub for questions or discussions.