Skip to content

Repository files navigation

Pinoff

A lightweight Pinterest client for Android — browse your Pinterest home feed, search ideas, and save images & videos locally on your device.

Features

  • 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

Tech Stack

  • 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)

Building

Prerequisites: JDK 17, Android SDK (compileSdk 35).

./gradlew :app:assembleDebug      # debug APK
./gradlew :app:assembleRelease    # signed release APK

Release signing

Signing 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).

CI

  • Build workflow (.github/workflows/build.yml): builds both debug and release APKs and uploads them as workflow artifacts. Manual trigger only.
  • Release workflow (.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).

Notes

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages