{"id":28361339,"url":"https://github.com/juandjara/wafrn-rn","last_synced_at":"2025-10-08T11:11:17.240Z","repository":{"id":258016573,"uuid":"836686516","full_name":"juandjara/wafrn-rn","owner":"juandjara","description":"Official app for the Wafrn Social Network","archived":false,"fork":false,"pushed_at":"2025-09-22T23:57:00.000Z","size":5288,"stargazers_count":35,"open_issues_count":4,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-23T01:14:20.570Z","etag":null,"topics":["activitypub","bluesky","expo","fediverse","paint","react-native","social","unified-push","wafrn"],"latest_commit_sha":null,"homepage":"https://wafrn.net","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juandjara.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-08-01T10:53:13.000Z","updated_at":"2025-09-22T23:57:03.000Z","dependencies_parsed_at":"2025-05-02T23:25:24.824Z","dependency_job_id":"683e74a8-0291-4601-9bcd-f3206098a8f6","html_url":"https://github.com/juandjara/wafrn-rn","commit_stats":null,"previous_names":["juandjara/wafrn-rn"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/juandjara/wafrn-rn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juandjara%2Fwafrn-rn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juandjara%2Fwafrn-rn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juandjara%2Fwafrn-rn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juandjara%2Fwafrn-rn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juandjara","download_url":"https://codeload.github.com/juandjara/wafrn-rn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juandjara%2Fwafrn-rn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278931654,"owners_count":26070789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["activitypub","bluesky","expo","fediverse","paint","react-native","social","unified-push","wafrn"],"created_at":"2025-05-28T13:07:54.905Z","updated_at":"2025-10-08T11:11:17.235Z","avatar_url":"https://github.com/juandjara.png","language":"TypeScript","funding_links":["https://ko-fi.com/juandjara"],"categories":[],"sub_categories":[],"readme":"\u003c!-- Badges --\u003e\n\n[\u003cimg src=\"https://shields.rbtlog.dev/simple/dev.djara.wafrn_rn\" alt=\"RB shield\"\u003e](https://shields.rbtlog.dev/dev.djara.wafrn_rn)\n[\u003cimg src=\"https://github.com/juandjara/wafrn-rn/actions/workflows/build.yml/badge.svg\" alt=\"Build Status\" /\u003e](https://github.com/juandjara/wafrn-rn/actions/workflows/build.yml)\n[\u003cimg src=\"https://github.com/juandjara/wafrn-rn/actions/workflows/build_ios.yml/badge.svg\" alt=\"Build Status\" /\u003e](https://github.com/juandjara/wafrn-rn/actions/workflows/build_ios.yml)\n\n# Wafrn React Native App\n\nThis is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app).\n\nMain repo has moved to Codeberg on [wafrn/wafrn-rn](https://codeberg.org/wafrn/wafrn-rn). The Github repo [juandjara/wafrn-rn](https://github.com/juandjara/wafrn-rn) is still going to be up as a mirror.\n\nYou can get the app in the following places:\n\n\u003c!--\n\u003ca href=\"https://play.google.com/store/apps/details?id=dev.djara.wafrn_rn\"\u003e\n\u003cimg height=\"60\" alt=\"Get it on Google Play\" src=\"assets/badges/google-play-margin.png\" /\u003e\u003c/a\u003e\n--\u003e\n\u003cdiv\u003e\n  \u003ca href=\"https://f-droid.org/packages/dev.djara.wafrn_rn/\"\u003e\n  \u003cimg height=\"60\" alt=\"Get it on F-Droid\" src=\"assets/badges/fdroid-margin.png\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://apt.izzysoft.de/fdroid/index/apk/dev.djara.wafrn_rn\"\u003e\n  \u003cimg height=\"60\" alt=\"Get it on IzzyOnDroid\" src=\"assets/badges/izzy-margin.png\" /\u003e\u003c/a\u003e\n  \u003ca href=\"http://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://codeberg.org/wafrn/wafrn-rn\"\u003e\n  \u003cimg height=\"60\" alt=\"Get it on Obtanium\" src=\"assets/badges/obtanium-margin.png\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n  \u003ca href=\"https://apps.apple.com/us/app/wafrn/id6737332622\"\u003e\n  \u003cimg height=\"48\" alt=\"Get it on the App Store\" src=\"assets/badges/apple-app-store.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://testflight.apple.com/join/k98B8bDq\"\u003e\n  \u003cimg height=\"48\" alt=\"Get it on Testflight\" src=\"assets/badges/testflight.png\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codeberg.org/wafrn/wafrn-rn/releases/latest\"\u003e\n  \u003cimg height=\"40\" alt=\"Get it on Codeberg\" src=\"assets/badges/codeberg.png\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\u003cbr /\u003e\n\nFor Android there are many choices, but I recommend using [Droid-ify](https://droidify.eu.org/) to install the versions from F-Droid (or IzyyOnDroid) and keep them updated with some extra stability. But if you want to get the latest version as soon as possible and still be notified of updates, you can use Obtanium.\n\n## APK Certificate fingerprint\n\nThe APK certificate fingerprint is:\n\n```text\nSHA1:   75:81:D0:4E:5F:1A:87:D6:35:33:8B:72:CC:04:84:DF:20:EA:27:2F\nSHA256: 09:1A:D9:44:84:3E:18:0C:43:22:ED:E2:02:A7:33:09:4C:DC:07:DD:1A:CD:51:52:3F:E8:13:EA:E9:04:F4:87\n```\n\nThis is the fingerprint of the certificate used to sign the APKs. It can be used to verify the authenticity of the APKs with the [APKVerifier app](https://github.com/soupslurpr/AppVerifier) or with the following command (replace `app-arm64-v8a-release.apk` with the path to the APK you want to verify):\n\n```bash\nkeytool -printcert -jarfile app-arm64-v8a-release.apk\n```\n\n\u003e NOTE: Only APKs distributed by IzzyOnDroid and Obtanium are signed with this certificate. APKs distributed by F-Droid use a different certificate and are signed by F-Droid themselves.\n\n## Get started for development\n\n1. Install dependencies\n\n   ```bash\n   npm install\n   ```\n\n2. Start the app\n\n   ```bash\n   npm start\n   ```\n\nIn the output, you'll find options to open the app in a\n\n- [development build](https://docs.expo.dev/develop/development-builds/introduction/)\n- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)\n- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)\n\nYou can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction).\n\n\u003e NOTE: This project contains custom native modules, so you cannot run the app with Expo Go. You need to use a real device or an emulator.\n\n## Build from source a local version of the production release (only for Android)\n\nYou need to have your android environment setup to build the app. See [the expo docs](https://docs.expo.dev/get-started/set-up-your-environment/?mode=development-build\u0026buildEnv=local) for more info.\n\nFor the production release build process to work, you will need to define some variables for signing the resulting apk or aab file.\n\nYou should create a `~/.gradle/gradle.properties` file with the following: (Where `~` is your home directory)\n\n```properties\nWAFRN_UPLOAD_STORE_FILE=production.keystore\nWAFRN_UPLOAD_STORE_PASSWORD=13132423\nWAFRN_UPLOAD_KEY_ALIAS=1232342\nWAFRN_UPLOAD_KEY_PASSWORD=3224242\n```\n\nThese are the values that will be used to sign the resulting apk or aab file with your `upload key`. You can see more info about this in the [Android documentation](https://developer.android.com/studio/publish/app-signing#generate-key).\n\nThe `WAFRN_UPLOAD_STORE_FILE` variable is a path relative to the `android/app/` directory inside this repo pointing to the keystore file. Make sure the path is correct and the file exists before running the build. This file should not be included in version control.\n\nThen, you can run the following command to build the production release:\n\n```bash\nnpm run build:prod:android\n```\n\nThis will create a series of APK files in the `android/app/build/outputs/apk/release` directory.\n\n## About UnifiedPush\n\nThis app uses UnifiedPush for sending its notifications (via [expo-unified-push](https://github.com/juandjara/expo-unified-push/)). You can read more about UnifiedPush in https://unifiedpush.org. After a sucessfull login, the Wafrn App will ask for notification permission and try to register with the first UnifiedPush distributor available in your device. You can change this later in settings. If no UnifiedPush distributor is installed in your device, the Wafrn App will use the embedded Firebase Cloud Messaging distributor, but only as a last resource.\n\n## About OTA updates\n\nThis app has an OTA update functionality provided by `expo-updates`. What this means is that the JS code bundle of the app can be updated to point to latest commit in the `main` branch without the user needing to download a new version of the app. This is done by connecting to the updates server provided by Expo on launch, checking for updates, downloading them if any, and presenting the user a modal to restart the app.\n\nThis feature can be easily disabled with no harm to the normal flow of the app. In fact, this is explicitly disabled in [the F-Droid build of the app](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/dev.djara.wafrn_rn.yml) by setting the `expo.modules.updates.ENABLED` to `false` in the [`AndroidManifest.xml`](android/app/src/main/AndroidManifest.xml) file. This can also be disabled by changing `expo.updates.enabled` to `false` in the [`app.config.ts`](app.config.ts) file.\n\nThis feature is also disabled in the FOSS versions of the app, available in github releases and in the APK distributed to F-Droid and IzzyOnDroid.\n\n## Join the community\n\nDiscussions and contributions about the development of the app are welcome on the [Discord server](https://discord.gg/DTqGpk2AUV). (migration to some other platform might come in the future) and on [Wafrn itself](https://app.wafrn.net). When adding your feedback, please consider that the app is still in beta and some things might change.\n\nIf you want to ensure a quick response, you can always ping [@javascript@app.wafrn.net](https://app.wafrn.net/blog/javascript) or [@gabboman@app.wafrn.net](https://app.wafrn.net/blog/gabboman) using any fediverse software.\n\n## Contributing\n\nYou can contribute to the project by creating a PR or by opening an issue for discussion.\n\n## License\n\nThis project is licensed under the AGPL-3.0 License. See the [LICENSE](LICENSE.md) file for details.\n\n## Donations\n\nIf you want to support the development of the app, you can donate to the developer on Ko-fi using this link: https://ko-fi.com/juandjara\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuandjara%2Fwafrn-rn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuandjara%2Fwafrn-rn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuandjara%2Fwafrn-rn/lists"}