Build is fully local — no expo.dev account or EAS cloud required.
---
@@ -25,357 +11,100 @@ React Native (Expo) mobile app to control a self-hosted **Postiz** instance from
| 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 pull-to-refresh and swipe left to delete. |
| **Compose** | Text editor, channel picker, date/time picker, gallery image import + upload, publish now or schedule. |
| **Settings** | API key and base URL input, connection test, secure storage (SecureStore). |
| **Notifications** | Automatic local alerts when a post transitions to PUBLISHED or ERROR (polling every 15 minutes). |
| **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 (`userInterfaceStyle: dark`).
**Authentication**: API key stored in `expo-secure-store`, never hardcoded.
**Theme**: forced dark. **Auth**: API key in `expo-secure-store`, never hardcoded.
---
## Prerequisites
| Tool | Minimum version |
|------|----------------|
| Tool | Version |
|------|---------|
| Node.js | 20 LTS |
| pnpm | 10+ |
| Expo Go (phone) | SDK 54 compatible |
| EAS account (for APK) | free on expo.dev |
```bash
npm install -g pnpm
npm install -g eas-cli
```
| Java (JDK) | 17–24 (Java 25+ not yet supported by Gradle 8) |
App-side variables (Postiz API key, URL) are **entered by the user** in the Settings screen and stored in `expo-secure-store` — they never pass through the source code.
---
## Troubleshooting
### The app shows "Not Configured" on all screens
**"Not Configured" on all screens** → Settings tab → enter API key and URL → Test Connection.
→ Go to the **Settings** tab, enter your API key and URL, then tap **Test Connection**.
**"Connection failed"** → URL must end with `/api/public/v1` — check Postiz is reachable.
### "Connection failed" in Settings
**No notifications** → Accept permissions on first launch. Polling runs every 15 min.
- Check that the URL ends with `/public/v1`
- Check that the API key is valid (generated in Postiz → API Keys)
- Check that your Postiz instance is accessible from the internet
**Build fails at Gradle** → Make sure `ANDROID_HOME` is set and Java is ≤ 24 (the script auto-detects `~/jdk21`).
### No notifications received
- Accept notification permissions on first launch
- Polling runs every 15 minutes — wait for a full cycle
- On Android, check that the app's notifications are not disabled in system settings
### Metro error "module not found"
```bash
pnpm install
# Puis redémarrer le workflow Expo
```
### Calendar does not load posts
- Check that the Postiz API supports `startDate` / `endDate` parameters on `GET /posts`
- Check network logs: in Expo Go, shake the device → *Open Debugger*
### EAS build fails
```bash
# Vérifier la version Expo
npx expo --version
# Vérifier la cohérence des packages
npx expo install --check
```
---
## Contributing
1. Fork on Gitea: `https://homegit.gyozamancave.fr/billisdead/Postiz-android`
2. Create a feature branch: `git checkout -b feature/my-feature`
3. Commit your changes
4. Push and open a Pull Request
---
*Generated with ❤️ on Replit — PostizMobile v1.0.0*
**`expo prebuild` fails** → Run `pnpm install` from the repo root first.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.