swentel / Indigenous Android
Programming Languages
Projects that are alternatives of or similar to Indigenous Android
Indigenous for Android
An open social app with support for IndieWeb, Mastodon, Pleroma and Pixelfed.
More information at https://indieweb.org/Indigenous and https://indigenous.realize.be
iOS: https://github.com/swentel/indigenous-ios
Desktop: https://github.com/swentel/indigenous-desktop
Features
- Login with multiple domains and account types:
- IndieWeb: discover IndieAuth, micropub, microsub and media endpoints. The micropub and microsub endpoints are optional, but at least one should be available. Token revoke happens when deleting an account. PKCE support for additional security when authenticating.
- Fediverse: Mastodon, Pleroma and Pixelfed.
- Comes with a built-in anonymous user which allows reading channels and posts coming from https://indigenous.realize.be, https://mastodon.social, https://pleroma.site or https://pixelfed.social. Posts can be send to a custom endpoint and token.
- Posting
- post types: article, note, reply, repost, like, bookmark, event, issue, rsvp, geocache, read, checkin, trip and venue (h-card).
- add multiple images, videos, audio, tags, toggle syndication targets
- share location on note, article, event, checkin, geocache and venue
- send image to media endpoint
- apply filters, add text and emojis on images
- Toggle post-status (published vs draft)
- Toggle sensitivity and visibility
- Save as local draft to finish later. This also includes coordinates, so you can finish later even when you are on a different location then. Place suggestions are also supported.
- Allow autocomplete of usernames in body text
- Manage contacts (add/delete/update)
- Query, update and delete: get a list of posts and update basic properties (experimental)
- Reader
- read channels, with pull to refresh
- read items per channel, with pull to refresh, response actions per item
- reply, like, repost, rsvp, bookmark, upload or add feed directly
- listen to audio or watch video if available
- view fullscreen images, zoom and pinch
- Manage channels and feeds
- Offline reading, optional via settings
- Main content becomes selectable after long click
- Browse by tag for Mastodon
- Share intents: receive text or images to directly share
- Push notifications: receive push notifications if you have an account on https://indigenous.realize.be. Only for IndieWeb accounts. You can also use your own custom MQTT server to receive notifications.
Checkin, Geocache and Venue are experimental and pass on all information into a Geo URI in the geo property, e.g.
geo:51.5258325,-0.1359825,0.0;name=london;url=https://hwclondon.co.uk
Some features are not available for Mastodon and Pixelfed, because they either don't make sense or the API doesn't support it yet. Pull requests welcome of course! To check authorizations of this app on your accounts, go to following url on your instance:
Mastodon: oauth/authorized_applications Pixelfed: settings/applications Pleroma: not found yet (info welcome!)
Screenshot
More screenshots at https://indigenous.realize.be
Known issues
Authentication loop
When authenticating for the first time, you might see a message "Authentication successul" but then returning to the Sign in screen. While the account has been created, the default was not set. In this case, the sign in screen will allow you to select the account.
See https://github.com/swentel/indigenous-android/issues/84
This happens sometimes, but not always.
Known syndication targets not parsed
See https://github.com/swentel/indigenous-android/issues/152
Authenticating
- Some browsers (e.g. the default browser on LineageOS), won't allow Indigenous to listen to the callback to verify the authorization code. Install a browser like Firefox (any flavor) so you can login.
- When your account requires 2FA, put the apps in split screen mode, see https://github.com/swentel/indigenous-android/issues/210
Notifications don't arrive after the app is closed
This is due to new default settings in the latest Android versions. Try turning of battery optimization for the Indigenous app and it should work fine.
Translations
Indigenous is available in English and Dutch. If you want to translate to another language, or improve the default English there are two options:
- Create a pull request with a strings.xml file in a directory named 'values-{langcode}' in app/src/main/res: strings.xml
- Join via Crowdin: https://crowdin.com/project/indigenous It contains all strings used in Android and iOS.
You can use informal tone for translating pronouns.
API
If you'd like to add a new account type, checkout API.md for a quick guide.
Credits
This app uses following external libraries:
- https://github.com/burhanrashid52/PhotoEditor
- https://github.com/chrisbanes/PhotoView
- https://github.com/4eRTuk/audioview
- https://github.com/Karumi/Dexter
- https://github.com/bumptech/glide
- https://jsoup.org/download
- https://github.com/ticofab/android-gpx-parser
- https://github.com/hivemq/hivemq-mqtt-client
Other IndieWeb and Fediverse clients
- Indieweb: https://indieweb.org/Micropub/Clients and https://indieweb.org/Microsub
- Mastodon: https://joinmastodon.org/apps
- Pleroma: https://docs.pleroma.social/clients.html
Issues
If you found a bug, open a request. Feature requests might be closed as I love having a clean queue. Pull requests are welcome though!
Things I'd love to explore one day:
- allow posting to multiple accounts at once
- detail views for Fediverse
- cleaner account names (am.renameAccount())
- better UI/UX for managing feeds
- cleanup the various ways of requests
Sponsors
I would like to extend many thanks to the following sponsors for funding development.
- NLnet Foundation and NGI0 Discovery, part of the Next Generation Internet initiative.