QKeep / КуЗаметки
Android notes app published as QKeep and shown on Android as КуЗаметки. It stores notes locally, supports pinned notes, formatted text notes, checklist notes with configurable list behavior, image and drawing notes, voice notes, labels, QSfera collaborators, timed reminders, search filters by note type and color, sending notes to other Android apps, manual card ordering, archive and trash sections, and syncs them with the Keeper Notes REST service in G:\Repos\QSfera\Server\services\keepernotes.
Build
The project follows the same baseline as G:\Repos\QSfera\Android: Android Gradle Plugin 8.7.2, Kotlin 1.9.20, compile SDK 35, target SDK 35, min SDK 26, and Java 17.
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
$env:ANDROID_HOME='C:\Users\seven\AppData\Local\Android\Sdk'
$env:ANDROID_SDK_ROOT=$env:ANDROID_HOME
.\gradlew.bat :keeperApp:assembleDebug
The default backend URL is https://qsfera.kusoft.xyz/keeper-notes. The default QSfera cloud used for first-run authorization is https://qsfera.kusoft.xyz.
To use another backend URL:
.\gradlew.bat :keeperApp:assembleDebug -PkeeperApiBaseUrl=https://example.org
To use another QSfera cloud URL for authorization:
.\gradlew.bat :keeperApp:assembleDebug -PqsferaCloudBaseUrl=https://qsfera.example.org
Server
From G:\Repos\QSfera\Server:
go run .\services\keepernotes\cmd\keepernotes -addr :8098 -data .\keeper-notes.json
Publish to Argus
The Argus publisher script uses the admin endpoints exposed by https://argus.kusoft.xyz/site.js:
POST /api/admin/session/loginPUT /api/admin/apps/{slug}POST /api/admin/apps/{slug}/releases
Set credentials in the current shell, then run:
$env:ARGUS_USERNAME='admin'
$env:ARGUS_PASSWORD='<password>'
.\scripts\publish-argus.ps1
Default publish metadata:
- slug:
keeper-android - package:
eu.qsfera.keeper - name:
QKeep - Android label:
КуЗаметки - version:
0.1.21 - Android version code:
22 - channel:
stable