Skip to content

D3OXY/siploop

Repository files navigation

Siploop

Siploop cover

Local-first Android hydration reminders that remain noticeable on silent phones. Siploop combines exact alarms, a full-screen grace countdown, smart suppression, local history, and one responsive home-screen widget.

Important

Siploop is an early-stage personal project, not a medical device. It is Android-only, unpublished, and distributed without official APK releases. Review the permissions and build the app yourself.

Features

  • Exact reminder slots inside a configurable active window
  • Full-screen, screen-waking countdown before alarm audio begins
  • Alarm-priority vibration and audio that can work in silent/DND modes after Android access is granted
  • Manual, timed, face-down, pocket, allowed-area, and allowed-Wi-Fi suppression
  • Selectable OR/AND presence rules for area and Wi-Fi checks
  • Room/SQLite intake history, progress, trends, backup, CSV export, and restore
  • Resizable 1×1-and-up widget with Pause/Resume prioritized at every size
  • Dark-only interface with 12-hour times

Privacy and security

Siploop has no account, application server, telemetry, advertising, map provider, or cloud sync. Intake history, settings, captured coordinates, and allowed Wi-Fi names remain in the app's Android sandbox. Android backup is disabled.

Development builds use Metro over the network. The production application contains no feature that sends personal data to a remote service. User-initiated backup and CSV exports are plaintext files once shared outside the app; protect them accordingly.

Permissions are requested only for the selected features:

Access Purpose
Notifications, exact alarms, full-screen intents, wake lock, vibration Reliable reminders and alarm UX
Foreground media playback Alarm-stream audio while the app is backgrounded
Fine/background location Optional allowed-area checks at reminder time
Nearby Wi-Fi and network state Optional allowed-network checks
Boot and time changes Rebuild reminder schedules after system changes

See SECURITY.md for vulnerability reporting.

Architecture

The UI uses Expo SDK 57, React Native, TypeScript, Expo Router, Uniwind, and Hugeicons. A local Kotlin Expo module owns Room/SQLite, exact scheduling, alarm delivery, sensors, presence checks, import/export, and the Android widget so those features work without the React Native runtime.

android/ is generated by Expo Continuous Native Generation and intentionally ignored. Maintained native source lives under modules/siploop-native.

Requirements

  • Node.js 24+
  • pnpm 11
  • JDK 17
  • Android SDK 36
  • Android 13+ device or emulator

Development

Expo Go is unsupported because Siploop includes native Android code. Use a development build:

pnpm install --frozen-lockfile
pnpm prebuild
pnpm android

Checks

pnpm check
pnpm audit --prod
pnpm exec expo config --type public
pnpm exec expo-modules-autolinking search --platform android

Sideloaded release APK

Generate the Android project, configure a private signing key, then build locally:

pnpm prebuild
cd android
./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a

The APK is written under android/app/build/outputs/apk/release/. Never commit signing keys or generated APKs. Keep the same private key for future in-place updates. Expo's generated debug signing configuration is suitable only for local testing, not redistribution.

Project status

The intended behavior is documented in docs/spec.md, with architectural decisions in docs/adr. Some specification acceptance tests and hardening work remain; contributions should not describe the app as production-ready.

Contributing

Read CONTRIBUTING.md, keep changes focused, and run all checks before opening a pull request.

License

MIT

About

Local-first Android hydration reminders with exact alarms, smart suppression, history, and a responsive widget.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages