Skip to content

RtiM0/peek

Repository files navigation

Peek app icon

Peek for Android

A calm, native space for the links people share.
Kotlin · Jetpack Compose · Android

Paste a link, then read, watch, and browse the content without the noise of the source app.

Screens

Peek home and recent links Peek post viewer Peek video post viewer

Peek full-screen video flow Peek loading state Peek unsupported link state

Current features

  • Paste links from the clipboard or open Instagram links directly.
  • Resolve public Instagram posts, reels, and carousels with photos and videos.
  • Read comments, load more replies, refresh content, and revisit recent links.
  • Open media in an edge-to-edge viewer with video playback and carousel navigation.
  • Cache resolved content locally for a quicker return experience.

Availability

Link type Availability Resolver
Public Instagram posts (/p/) Available Direct logged-out GraphQL resolver
Public Instagram reels (/reel/, /reels/) Available Direct GraphQL resolver, then hidden WebView fallback
Public Instagram carousels Available Instagram resolver chain above
Private posts, login-required content, challenges, consent flows Unsupported No resolver currently available

Resolvers are selected through a shared prioritized resolver chain, so adding a new source does not require changing the viewer UI.

Roadmap

  • Add more link sources, including Reddit, X/Twitter, TikTok, and YouTube.
  • Add more Instagram features, including Stories.
  • Improve sharing, link history, and source-specific viewing experiences.

Principle and architecture

Peek separates link resolution from presentation. Source-specific resolvers normalize content into shared domain models; repositories handle caching and pagination; ViewModels expose screen state; stateless Jetpack Compose UI renders it.

flowchart LR
    A[Shared link] --> B[Resolver chain]
    B --> C[Normalized domain model]
    C --> D[Repository + cache]
    D --> E[ViewModel state]
    E --> F[Jetpack Compose UI]
Loading

The app is a single-activity Kotlin/Jetpack Compose project. domain contains models, repository contracts, and use cases; data contains Instagram resolution, persistence, caching, and fixtures; ui contains navigation, ViewModels, mappers, and rendering.

Contributing

Peek is early and intentionally small. Ideas, source integrations, design improvements, bug reports, and pull requests are all welcome—please include a short description and relevant tests when you can.

Build and verify

Requires JDK 17 and Android SDK 36.

./gradlew :app:assembleDebug
./gradlew :app:testDebugUnitTest :app:lintDebug
./gradlew :app:validateDebugScreenshotTest
./gradlew :app:connectedDebugAndroidTest

Acknowledgements

  • Peek’s Instagram fetching logic is based on Kittygram.

About

Open social media links without distraction

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages