Local-first, Markdown-centric, Multiplatform notes.
Built with Kotlin Multiplatform and Compose Multiplatform.
Re-Markor is a modern, cross-platform port of the original Markor project. It preserves the core philosophyโplain text files, offline-first workflow, and no account lock-inโwhile leveraging Kotlin Multiplatform (KMP) to bring a unified experience to Android, iOS, and the web.
Try it in your browser: markor-five.vercel.app
- ๐ Markdown-First: Fast editing with live preview and syntax highlighting.
- ๐ Multiplatform: Shared business logic and UI across Android, iOS, JVM, and Web (Wasm).
- ๐ Web Demo: Run Markor in the browser via Compose Multiplatform for Web.
- ๐ Local-First: Your data stays on your device in plain text files.
- ๐ท๏ธ Smart Organization: Pinned notes, archive, labels, trash, and recents.
- ๐จ Modern UX: A complete redesign using Material 3 and Compose Multiplatform.
- ๐ผ๏ธ Asset Aware: Built-in support for images and attachments within your notes.
This project is a showcase of modern Kotlin Multiplatform development:
- UI: Compose Multiplatform (Material 3)
- Database: Room (KMP)
- Dependency Injection: Koin
- Navigation: Navigation 3
- Preferences: DataStore (KMP)
- Concurrency: Kotlinx Coroutines
- Serialization: Kotlinx Serialization
- Images: Coil3 (KMP)
- Theming: Material Kolor (Dynamic Color)
The project follows a standard KMP layout:
shared/: The heart of the app. Contains common UI (Compose), business logic, and data layers (Room, DataStore).app/: Android-specific entry point and resources.iosApp/: iOS-specific Xcode project and Swift entry point.webApp/: Wasm browser entry point for the GitHub Pages demo.metadata/: App store metadata and screenshots.
- JDK 17 or higher.
- Android Studio (Koala or newer) with the KMP plugin.
- Xcode 15+ (for iOS development).
- CocoaPods (if applicable) or Swift Package Manager.
./gradlew :app:installFlavorDefaultDebug- Open
iosApp/iosApp.xcodeprojin Xcode. - Select a simulator or device.
- Click Run.
Alternatively, via CLI:
./gradlew :shared:embedAndSignAppleFrameworkForXcode./gradlew :webApp:wasmJsBrowserDevelopmentRunProduction build:
./gradlew :webApp:wasmJsBrowserDistributionSimulate the CI build locally before pushing:
./scripts/simulate-web-ci.shDeploy manually (after vercel login or with a token):
./scripts/verify-web-deploy.sh --ci
VERCEL_TOKEN=... VERCEL_ORG_ID=... VERCEL_PROJECT_ID=... ./scripts/deploy-web-vercel.shPushes to master run .github/workflows/deploy-web-vercel.yml, which builds the wasm bundle and deploys to Vercel. Add these repository secrets:
| Secret | Where to find it |
|---|---|
VERCEL_TOKEN |
vercel.com/account/tokens |
VERCEL_ORG_ID |
Vercel project โ Settings โ General |
VERCEL_PROJECT_ID |
Vercel project โ Settings โ General |
- Original Project: Markor by Gregor Santner.
- License: Apache License 2.0. See LICENSE.txt for details.
Made with โค๏ธ using Kotlin Multiplatform

