Skip to content

AnikethanVA/Splashnt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Splashnt

A wallpaper browser and setter app for Android, built with Jetpack Compose and powered by Unsplash's unofficial internal API (unsplash.com/napi/) — no API key required.

Features

  • Browse wallpapers — Staggered grid layout with infinite scroll pagination and pull-to-refresh
  • Filter by category — Chip row above the grid lets you scope the feed to Unsplash featured topics ("All" plus topics like Nature, Architecture, Travel, etc.)
  • Full-screen viewer — Pinch-to-zoom (1x–5x), pan with clamped boundaries, double-tap to toggle fit/fill
  • Photographer details — Tap to reveal an animated overlay with photographer name and profile link
  • Download — Save images to device via DownloadManager with notification progress
  • Set as wallpaper — Apply images to home screen, lock screen, or both via WallpaperManager
  • Material You — Dynamic theming with Material 3 expressive components

Tech Stack

Layer Libraries
UI Jetpack Compose, Material 3, Navigation 3
Networking Ktor (Android engine)
Image Loading Coil 3
Serialization kotlinx.serialization
DI Koin

All libraries are chosen for Kotlin Multiplatform compatibility.

Setup

No API key needed. Just build and run:

./gradlew assembleDebug

The app hits Unsplash's unofficial napi endpoint (the same one their website uses). Premium (Unsplash+) photos are filtered out at the repository layer since they aren't downloadable without a paid account.

Requirements: Android Studio, minSdk 30 (Android 11+), targetSdk 36

Architecture

Single-module MVVM app with clean separation between data and UI layers.

app/src/main/java/com/ava/splashnt/
├── data/
│   ├── model/          # Unsplash API response models (UnsplashModel, UnsplashTopic)
│   ├── remote/         # Ktor HTTP client
│   └── repository/     # Repository interface + implementations
├── di/                 # Koin dependency injection modules
└── ui/
    ├── home/           # Staggered grid + topic chip row + ViewModel with pagination
    ├── detail/         # Full-screen viewer with gestures + overlays
    ├── common/         # Reusable composables (CenteredLoader, SpringyTextButton)
    └── theme/          # Material You theming

Roadmap

  • Provider abstraction & additional sources — Extract provider-neutral domain models (Wallpaper, Topic) as a prerequisite, then add Pexels alongside Unsplash with a navigation drawer for source selection
  • Polish — Splash screen, search, wallpaper crop preview before applying (via WallpaperManager.getCropAndSetWallpaperIntent), collapsing header on scroll, home screen design polish (top bar, wordmark subtitle), shared element transitions

License

This project is for educational purposes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages