{"id":43846098,"url":"https://github.com/ComputerElite/ShockAlarmApp","last_synced_at":"2026-02-17T20:00:34.964Z","repository":{"id":270621828,"uuid":"910946678","full_name":"ComputerElite/ShockAlarmApp","owner":"ComputerElite","description":"App for controlling and managing OpenShock devices","archived":false,"fork":false,"pushed_at":"2026-01-01T17:38:45.000Z","size":86914,"stargazers_count":20,"open_issues_count":6,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-07T00:22:24.672Z","etag":null,"topics":["flutter","openshock"],"latest_commit_sha":null,"homepage":"https://computerelite.github.io/ShockAlarmApp/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ComputerElite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-01T21:43:55.000Z","updated_at":"2026-01-01T17:36:21.000Z","dependencies_parsed_at":"2025-01-01T22:29:12.949Z","dependency_job_id":"f36aa067-c096-4eb2-a4fc-6370e19efe34","html_url":"https://github.com/ComputerElite/ShockAlarmApp","commit_stats":null,"previous_names":["computerelite/shockalarmapp"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/ComputerElite/ShockAlarmApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ComputerElite%2FShockAlarmApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ComputerElite%2FShockAlarmApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ComputerElite%2FShockAlarmApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ComputerElite%2FShockAlarmApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ComputerElite","download_url":"https://codeload.github.com/ComputerElite/ShockAlarmApp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ComputerElite%2FShockAlarmApp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29556404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T18:16:07.221Z","status":"ssl_error","status_checked_at":"2026-02-17T18:16:04.782Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","openshock"],"created_at":"2026-02-06T06:00:21.104Z","updated_at":"2026-02-17T20:00:34.958Z","avatar_url":"https://github.com/ComputerElite.png","language":"Dart","funding_links":[],"categories":["Applications"],"sub_categories":["Modules"],"readme":"# \u003cimg src=\"https://raw.githubusercontent.com/ComputerElite/ShockAlarmApp/refs/heads/main/web/icons/Icon-192.png\" width=\"30\" height=\"30\" alt=\"Logo\"\u003e ShockAlarm\n[\u003cimg src=\"https://github.com/user-attachments/assets/713d71c5-3dec-4ec4-a3f2-8d28d025a9c6\"\n    alt=\"Get it on Obtainium\"\n    height=\"80\"\u003e](https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/ComputerElite/ShockAlarmApp)\u0026nbsp;\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n    alt=\"Get it on F-Droid\"\n    height=\"80\"\u003e](https://f-droid.org/packages/de.computerelite.shockalarm)\n\nA powerful app for controlling [OpenShock](https://openshock.org/) shockers and setting alarms with custom tones.\n\nA web version (for IOS, ...) can be found [here](https://computerelite.github.io/ShockAlarmApp/) (does not support live controls).\n\n# Features\nShockAlarm is a powerful tool for controlling your Shockers via OpenShock. It allows you to fully manage your shockers, logs, shares, hubs, share links, tokens and sessions. On top it also allows you to seamlessly use ShareLinks.\n\nThere is advanced functionality like controlling multiple shockers at the same time, specifying a random interval for intensity, duration and a delay, live controls with patterns and alarms.\n\nIt's fully material you themed just like the standard Android apps you're already used to and provides a responsive ui with a nice design.\n\nFurthermore it fixes some layout flaws of the official OpenShock Frontend like having shared and own shockers in separate tabs (which is annoying). On top it also has lots of info buttons you can press to get more insight on what something does.\n\nYou can also log in on multiple OpenShock instances at once. ShockAlarm will show all shockers from all instances seamlessly at a glance!\n\n## Other information\nI cannot guarentee that all features work with all possible configurations. I try to make them work with each other but sometimes I miss them. For example a random intensity won't work with the shock confirmation dialog. However a hard limit will.\n\n### Not supported in Web Version\nEverything with websockets is currently not supported due to authentication problems with websockets. This includes:\n- OTA Updates\n- Enabling/Disabling the captive portal\n- Live control\n\n# Installation on Android\n## Through Obtainium (recommended as you get the updates the fastest)\n[\u003cimg src=\"https://github.com/user-attachments/assets/713d71c5-3dec-4ec4-a3f2-8d28d025a9c6\"\n    alt=\"Get it on Obtainium\"\n    height=\"80\"\u003e](https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/ComputerElite/ShockAlarmApp)\n1. Download [Obtainium](https://obtainium.imranr.dev/) either via [their website](https://obtainium.imranr.dev/) or [FDroid](https://f-droid.org/)\n2. Add ShockAlarm by clicking [here](https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/ComputerElite/ShockAlarmApp) or putting `github.com/ComputerElite/ShockAlarmApp` as th app source\n\n## FDroid\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n    alt=\"Get it on F-Droid\"\n    height=\"80\"\u003e](https://f-droid.org/packages/de.computerelite.shockalarm)\n1. [Download FDroid](https://f-droid.org/)\n2. Search for ShockAlarm and install it. As easy as that!\n\n## GitHub\nInstall the apk file from the [releases](https://github.com/ComputerElite/ShockAlarmApp/releases/latest)\n\n# Installation on Linux\n## Through the AUR\nUse your favorite aur helper like [paru](https://github.com/Morganamilo/paru) or [yay](https://github.com/Jguer/yay) and install `shock-alarm`. [link to aur](https://aur.archlinux.org/packages/shock-alarm)\n\n# Installation on Windows\n## Installer\nYou can download a Windows installer from the [releases](https://github.com/ComputerElite/ShockAlarmApp/releases/latest) and then execute it.\n\n## Portable\nYou can download a Portable version (zip file) from the [releases](https://github.com/ComputerElite/ShockAlarmApp/releases/latest), unzip and then execute it.\n\n# Screenshots\n![ShockAlarm](fastlane/metadata/android/en-US/images/phoneScreenshots/1.png)\n![ShockAlarm](fastlane/metadata/android/en-US/images/phoneScreenshots/2.png)\n\n[More images](fastlane/metadata/android/en-US/images/phoneScreenshots)\n\n# Planned features\n- [x] (Un)Pausing of shockers\n- [x] Login with username/email and password\n- [x] Random delay\n- [x] Renaming of shockers (global)\n- [x] Viewing of logs\n- [x] Change sharing limits\n- [x] Create share codes\n- [x] Redeem share codes\n- [x] Adding of shockers\n- [x] Creation, editing and pairing of hubs\n- [x] Add option to repeat default shock/vibration... option for one minute (perhaps adjustable in settings). Needs reworking of the alarm stop feature\n- [x] Websocket controlling\n- [x] Alarm tones\n- [x] Grouping of shockers\n- [x] Redo settings\n- [x] Random intensity and duration\n- [x] Safety warning\n- [x] Share link management\n- [x] Allow setting initial limits when adding a shocker\n- [x] Add ui to rename tones\n- [x] Better desktop support (keybinds)\n- [x] Better desktop support (layout)\n- [x] Better desktop support (dynamic layout)\n- [x] Show 3 point menu when 1 shocker is selected\n- [x] Share codes sometimes can't be claimed when the app is already open (treating as fixed for now)\n- [x] Show loading animation when share codes are loading in after shares loaded\n- [x] Allow toggling of the captive portal\n- [x] Add alarm renaming\n- [x] Finally code weekday scheduling for alarms\n- [x] Add changing of shocker type (and even hub and rfId)\n- [x] save last opened tab (and load it on start)\n- [x] Random shocking (specify random delay between shocks, min and max intensity/duration)\n- [x] Random shocking -\u003e Add background task + notification (works without notification???)\n- [x] Fix alarms not sending controls when app is minimized (seems to work)\n- [x] Live controls\n- [x] Allow alarm tones to be used as patterns\n- [x] Request permissions only when needed\n- [x] fix reloading problems in settings after login?\n- [ ] ~~(Big controls mode)~~ fuck this shit, there's no space\n- [x] Improved login for web (aka using token requests)\n- [x] Web support (alarms working via AlarmServer)\n- [x] Linux support (alarms working via AlarmServer)\n- [x] Alarm support for Linux and web via https://dev1.rui2015.me\n- [x] Add separate slider for shock and vibrate intensity\n- [x] Add Alarm tone support for AlarmServer\n- [x] Add info about alarm server\n- [x] Code cleanup, add multiple predefined dialogs\n- [x] Add online indicator for hubs on web\n- [x] Add OTA Updates\n- [x] Add Share Link support\n- [ ] Fix WS on web\n- [x] Add Patterns to live controls\n- [x] Flaschendrehen\n- [x] Add shock confirmation above adustable intensity and duration.\n- [x] Adapt to new Backend duration limit\n- [x] Add confirmation on live system as well. \n- [x] Add global limit for self.\n- [x] Stop live playback when changing type\n- [x] Make sure text in popups is scrollable so it can be read completely\n- [x] Implement login V2 (Android only currently)\n- [x] Implement Shares V2 (once officially declared done in backend and implementation in official frontend exists. Can't make sense of the api rn without explenation)\n\n# Planned settings\n- [x] Hide/unhiding of the delay option\n- [x] Slider instead of RangeSlider for delay\n\n# Development\nThis app is based on flutter and thus you need to first install flutter: https://docs.flutter.dev/get-started/install\n\nAfterwards clone the repository and get all dependencies:\n\n1. `git clone https://github.com/ComputerElite/ShockAlarmApp`\n2. `cd ShockAlarmApp`\n3. `flutter pub get`\n\n# Publishing\n## Steps for making a new release\n1. Test functionality of app on Android, Web and Linux.\n2. (when adding new packages) Test the Android build pipeline by [manually triggering](https://github.com/ComputerElite/ShockAlarmApp/actions/workflows/build_android.yml)\n3. Bump the version in [pubspec.yaml](pubspec.yaml) and [main.dart](main.dart)\n4. Create a changelog at [fastlane/metadata/android/en-US/changelogs](fastlane/metadata/android/en-US) in a file names `\u003cversioncode\u003e.txt`. It should be markdown formatted.\n5. Create a new tag (or release) and push it to the repo. Actions will spin up to compile the binaries and add the previously created changelog to the release\n6. (optional) Update the screenshots in [fastlane/metadata/android/en-US/images/phoneScreenshots/](fastlane/metadata/android/en-US/images/phoneScreenshots/) for FDroid and the ReadMe\n\n## Publishing on FDroid\nFDroid will publish the update autonomously once a build cycle starts. The changelog we created earlier will be added to the FDroid page automatically\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FComputerElite%2FShockAlarmApp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FComputerElite%2FShockAlarmApp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FComputerElite%2FShockAlarmApp/lists"}