A lightweight Pinterest client for Android — browse your Pinterest home feed, search ideas, and save images & videos locally on your device.
- Home feed with a Pinterest-style staggered grid
- Feed media modes: Images only, Videos only, or Images & videos (toggle in Settings)
- Videos stream full-frame via ExoPlayer, with infinite scroll and topic-based discovery
- Save any image or video locally (tap the bookmark) — works offline after download
- Saved tab with a swipeable full-screen viewer to switch between saved pins
- Search Pinterest for ideas
- Auto-save ideas while you browse (optional, Wi-Fi-only option)
- Dark mode and other playback/download settings
- Clean image cards — no title/author clutter on image pins
- Kotlin, Jetpack Compose (Material 3)
- Room (local saved-pin database), DataStore (preferences)
- WorkManager (background downloads), Coil (images)
- Media3 ExoPlayer (video playback)
- OkHttp + Pinterest web API (session cookies from an embedded WebView login)
Prerequisites: JDK 17, Android SDK (compileSdk 35).
./gradlew :app:assembleDebug # debug APK
./gradlew :app:assembleRelease # signed release APKSigning credentials are not committed. Provide them in local.properties
(git-ignored) or as environment variables:
keystorePath=/path/to/pinoff-release.jks
keystorePassword=...
keyAlias=...
keyPassword=...CI builds read the same values from GitHub Actions secrets
(KEYSTORE_PATH, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD,
plus KEYSTORE_BASE64 for the keystore file itself).
Buildworkflow (.github/workflows/build.yml): builds both debug and release APKs and uploads them as workflow artifacts. Manual trigger only.Releaseworkflow (.github/workflows/release.yml): builds both APKs, generates a changelog from commits since the last tag, and publishes a GitHub Release with the APKs attached. Run it from the Actions tab and enter a version (e.g.1.1.0).
- The app signs into Pinterest through a WebView login flow and reuses those cookies for API calls — no tokens are stored server-side.
- Saved media is stored on-device only.