billisdead 0696f5663e
Release APK / build (push) Has been cancelled
feat: multi-images, media library, + fix HTML in notifications
Multi-images (compose):
- Replace single imageUri with mediaItems: MediaItem[] (local | uploaded)
- allowsMultipleSelection: true, selectionLimit up to 4 total
- Each picked image is resized to max 1920px before upload
- Thumbnail row with individual × remove buttons
- uploaded badge (cloud icon) on library/prefill images
- buildMediaPayload() uploads local items, passes uploaded items as-is

Media Library:
- New MediaLibraryModal component — full-screen modal
- Fetches GET /media from Postiz instance
- 3-column grid with multi-select (capped at remaining slots)
- Selected items added to compose media pool

Notifications:
- Strip HTML from notification body text

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 17:09:08 +02:00
2026-04-27 21:55:40 +00:00
2026-04-27 21:55:40 +00:00
2026-05-04 04:33:26 +00:00
2026-04-27 21:55:40 +00:00
2026-04-27 21:55:40 +00:00
2026-04-27 21:55:40 +00:00
2026-04-27 21:55:40 +00:00
2026-04-27 21:55:40 +00:00

PostizMobile

React Native (Expo) mobile app to control a self-hosted Postiz instance from Android.

Build is fully local — no expo.dev account or EAS cloud required.


Features

Screen Description
Calendar Monthly view with color dots per day (indigo = scheduled, green = published, red = error). Tap a day to see its posts.
Posts Filtered list (All / Queue / Published / Draft / Error) with sort toggle, pull-to-refresh, swipe left to delete, swipe right to reschedule.
Compose Text editor with per-network character limit, channel picker, date/time picker, gallery image pick + upload, publish now or schedule. Local draft save/restore.
Settings API key and base URL, connection test, secure storage. 401 auto-redirect to Settings.
Notifications Local alerts when a post transitions to PUBLISHED or ERROR (polling every 15 min).

Theme: forced dark. Auth: API key in expo-secure-store, never hardcoded.


Prerequisites

Tool Version
Node.js 20 LTS
pnpm 10+
Java (JDK) 1724 (Java 25+ not yet supported by Gradle 8)
Android SDK see below

Installation & Development

git clone https://github.com/pirona/postiz-android.git
cd postiz-android
pnpm install

Start the dev server (requires Expo Go on the device):

pnpm --filter @workspace/postiz-mobile run dev

Building an APK (local, no EAS)

See artifacts/postiz-mobile/README.md for the full build guide.

Quick start:

cd artifacts/postiz-mobile
./install-android-sdk.sh        # first time only
cp ~/.config/postiz-mobile/signing.env.example ~/.config/postiz-mobile/signing.env
$EDITOR ~/.config/postiz-mobile/signing.env   # fill in keystore credentials
./build-apk.sh                  # → dist/postiz-mobile-YYYYMMDD-HHMM.apk

GitHub Actions release

Pushing a tag triggers an automated signed APK release:

git tag v1.0.0
git push origin --tags

The workflow builds the APK on GitHub's infrastructure and attaches it to a GitHub Release. Required secrets: KEYSTORE_B64, KEYSTORE_ALIAS, KEYSTORE_STORE_PASSWORD, KEYSTORE_KEY_PASSWORD.


App Configuration

On first launch, go to Settings:

  1. Base URL: https://your-postiz-instance/api/public/v1
  2. API Key: generated in Postiz → Settings → API Keys
  3. Tap Test Connection, then Save Settings

Postiz API

Method Endpoint Usage
GET /integrations List channels
GET /posts?startDate=&endDate= Posts over a date range
POST /posts Create / schedule a post
DELETE /posts/:id Delete a post
POST /upload Upload an image (multipart)

Troubleshooting

"Not Configured" on all screens → Settings tab → enter API key and URL → Test Connection.

"Connection failed" → URL must end with /api/public/v1 — check Postiz is reachable.

No notifications → Accept permissions on first launch. Polling runs every 15 min.

Build fails at Gradle → Make sure ANDROID_HOME is set and Java is ≤ 24 (the script auto-detects ~/jdk21).

expo prebuild fails → Run pnpm install from the repo root first.

S
Description
No description provided
Readme 3.5 MiB
Languages
TypeScript 86.1%
JavaScript 5.9%
HTML 4.2%
Shell 2.5%
CSS 1.3%