MCPcopy Index your code
hub / github.com/BootBoi/android-app

github.com/BootBoi/android-app @1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1 ↗ · + Follow
76 symbols 155 edges 23 files 2 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

BootBoi Logo

BootBoi

Ever wanted to turn on your remote machine (laptop, Raspberry, NAS), but didn't want to leave the couch? Well I for sure understand this problem to the heart. But fear no more, as BootBoi is here to save you from the gruesome task of standing up and pushing a button.

BootBoi features remote power on / power off / reboot for as many remote machines as you can imagine with the combined power of ssh and Wake On Lan.

BootBoi Screenshots BootBoi Screenshots

Preparing your Remote Machine

  • Before you can use BootBoi with your remote machines, you have to prepare them for remote rebooting and powering them on/off.

Power On

  • To power a remote device on, BootBoi uses Wake On Lan.
  • This needs to be enabled in the BIOS of the machine you want to power on, read more here.

Power Off / Reboot

  • BootBoi uses SSH to execute whoami, poweroff and reboot on the remote machine.
  • So make sure that
  • Those binaries are available and in $PATH
  • The SSH user has sudo access to whoami, poweroff and reboot
    • Either by allowing the user sudo access only to those binaries via the sudoers file (recommended)
      • E.g. echo "my_ssh_user ALL=(ALL) /sbin/reboot,/sbin/poweroff,/usr/bin/whoami" >> /etc/local/sudoers
    • Or by using root as SSH user in BootBoi

Release

F-Droid

Google Play

  • Setup gradle and keystore for release: Follow https://reactnative.dev/docs/signed-apk-android
  • cd android and ./gradlew bundleRelease
  • Change BOOTBOI_UPLOAD_STORE_PASSWORD and BOOTBOI_UPLOAD_KEY_PASSWORD in android/gradle.properties accordingly
  • To test the release, run npx react-native run-android --variant=release, it will create a release apk to android/app/build/outputs/apk/release/app-release.apk

Development

Remote Communication Module

Environment

  • yarn start to start the development server
  • reload with r
  • yarn android to build the android app (dev server needs to be running), only needed when dependencies in package.json or native source changes
  • If you get Could not initialize class org.codehaus.groovy.reflection.ReflectionCache: Need to lower JDK version (tested with JDK 11)

Extension points exported contracts — how you extend this code

Props (Interface)
(no doc)
src/Connection/ConnectionList.tsx
Props (Interface)
(no doc)
src/Component/IconPicker.tsx
State (Interface)
(no doc)
src/Connection/ConnectionList.tsx
Props (Interface)
(no doc)
src/Component/ColorPicker.tsx
Props (Interface)
(no doc)
src/Connection/ConnectionDetail.tsx
Props (Interface)
(no doc)
src/Component/LargeButton.tsx
RemoteActionResult (Interface)
(no doc)
src/Connection/ConnectionDetail.tsx
Props (Interface)
(no doc)
src/Connection/ConnectionItem.tsx

Core symbols most depended-on inside this repo

getStoredConnections
called by 4
src/Connection/ConnectionStoreHelper.ts
handleRemoteActionPromise
called by 3
src/Connection/ConnectionDetail.tsx
getIndexOfConnection
called by 2
src/Connection/ConnectionStoreHelper.ts
onTouchEnd
called by 2
src/Component/IconPicker.tsx
wakeUp
called by 1
android/app/src/main/java/com/elektropepi/bootboi/RemoteCommunicationModule.java
powerOff
called by 1
android/app/src/main/java/com/elektropepi/bootboi/RemoteCommunicationModule.java
reboot
called by 1
android/app/src/main/java/com/elektropepi/bootboi/RemoteCommunicationModule.java
canExecuteAsRoot
called by 1
android/app/src/main/java/com/elektropepi/bootboi/RemoteCommunicationModule.java

Shape

Function 31
Method 25
Interface 13
Class 7

Languages

TypeScript57%
Java43%

Modules by API surface

android/app/src/main/java/com/elektropepi/bootboi/RemoteCommunicationModule.java14 symbols
src/Connection/ConnectionDetail.tsx11 symbols
android/app/src/main/java/com/elektropepi/bootboi/MainApplication.java7 symbols
src/Connection/ConnectionEdit.tsx6 symbols
src/Connection/ConnectionStoreHelper.ts5 symbols
android/app/src/debug/java/com/elektropepi/bootboi/ReactNativeFlipper.java5 symbols
src/Connection/ConnectionList.tsx4 symbols
src/Connection/ConnectionItem.tsx3 symbols
src/Connection/Connection.ts3 symbols
src/Component/LargeButton.tsx3 symbols
src/Component/IconPicker.tsx3 symbols
src/Component/ColorPicker.tsx3 symbols

For agents

$ claude mcp add android-app \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact