bamzi / graysky

a bluesky client

Home Page:https://graysky.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Graysky

Graysky is a Bluesky client written in React Native. 🚧 WIP 🚧

Getting Started

You'll need pnpm, and some sort of simulator or device to run the app on.

pnpm install

Weird side step - you need to go to apps/expo/app.config.ts and delete the extra field which has an expo project id in it. Sorry, I'll fix this later. You may also need to delete Sentry, or else provide your own key

Build the dev client using EAS:

cd apps/expo
pnpm build:dev-client

Unzip the graysky.zip file that appears, then install Graysky.app to your simulator.

eas build:run --path=Graysky.app

You can then start the expo server with:

pnpm dev

Roadmap to Feature Parity

  • Notifications screen
  • Image viewer
  • Pull to refresh fix
  • Haptics
  • Post composer
  • Context menu - post actions
  • Block/Unblock user
  • Quote post
  • Dark mode
  • Sidebar w/ logout button
  • Search screen
  • Invites screen
  • Upload images
  • Followers/Following screens
  • Likes list
  • Context menu - user actions
  • Image viewer: Pinch to zoom
  • Custom feeds
  • Settings screens
    • Moderation settings
      • Content filtering
      • Review blocked/muted users
    • Account settings
      • Edit profile
      • Change handle
    • App settings
      • Notification grouping
    • About & credits
  • App Store???

Future (no promises)

  • Push notifications
  • Composer rewrite
    • Embeds in composer
    • Drafts

Android local APK builds

  • Install Android Studio, and the Android SDK
  • Install Oracle Java 11 JDK
  • Make Gradle faster in ~/.gradle/gradle.properties:
org.gradle.jvmargs=-Xmx20g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=2g
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=false
org.gradle.caching=true
  • Create a signing key in Android Studio
  • Build it with: eas build --platform android --profile production-apk --non-interactive --local --output="./foo.apk" --wait
  • Sign it with: /Users/alice/Library/Android/sdk/build-tools/33.0.0/apksigner sign -ks sideload.jks foo.apk

iOS local IPA builds

ZSH/Bash

SHORT_SHA=$(git rev-parse --short HEAD)
eas build --platform ios --profile production --non-interactive --local --output="./$SHORT_SHA.ipa" --wait && say "Build finished"
eas submit --platform ios --path="./$SHORT_SHA.ipa" --wait && say "Submitted to TestFlight"

Fish shell

set SHORT_SHA (git rev-parse --short HEAD)
eas build --platform ios --profile production --non-interactive --local --output="./$SHORT_SHA.ipa" --wait; and say "Build finished"
eas submit --platform ios --path="./$SHORT_SHA.ipa" --wait; and say "Submitted to TestFlight"

Sponsors

Thank you to @thepriceisright for sponsoring my work on this project!

Contributors

Graysky is primarily developed by @mozzius.dev. If you'd like to show your support for the project, you can sponsor me.

However, I'm not the only one who's contributed to this project. I'd like to especially thank @alice.bsky.sh for her work on adding dark mode, and getting Android builds working, and thank @holden.bsky.social for their invaluable accessibility improvements.

All Contributors

My eternal thanks to the following people for their contributions to Graysky:

About

a bluesky client

https://graysky.app

License:MIT License


Languages

Language:TypeScript 97.0%Language:JavaScript 3.0%Language:CSS 0.0%