Skip to content

mobilemobilellc/solpan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SolPan

A simple and elegant mobile application that provides essential information about the sun's position and path.

Get it on Google Play Download on GitHub
Build and Test


☀️ Features

SolPan is a foundational application for understanding the sun's movement, built with a modern Android tech stack.

  • Clean, Intuitive UI: A modern interface built with Jetpack Compose and Material 3 Expressive.
  • Solid Foundation: A well-structured project that's easy to build upon.
  • Solar Panel Optimization: Use the phone sensors to orient your solar panels for maximum energy output.
  • Adaptive Layout: Staggered grid UI that adapts gracefully to both phone and tablet screen widths.

📸 Screenshots

🏗️ Architecture

SolPan follows a straightforward single-screen architecture with a clear separation of concerns:

  • ViewModel + StateFlow — UI state is managed in a single ViewModel and exposed as a StateFlow, keeping the composables stateless and easy to test.
  • Clean Analytics Abstraction — All event tracking is routed through a testable AnalyticsTracker interface, decoupling the UI from any specific analytics backend.
  • Adaptive Layout — The staggered grid automatically adjusts column count based on available window width, providing a polished experience on phones and tablets alike.

📖 For detailed architecture, design decisions, performance tuning, security hardening, and testing strategies, see:

🛠️ Building from Source

To build and run the project, you'll need:

Clone the repository and open it in Android Studio:

git clone https://github.com/mobilemobilellc/solpan.git

Common build commands

# Assemble a release APK
./gradlew assembleRelease

# Format code
./gradlew app:spotlessApply

# Run static analysis
./gradlew app:detekt

# Run unit tests (45 tests)
./gradlew :app:testDebugUnitTest

# Regenerate screenshot reference images (after intentional UI changes)
./gradlew :app:updateDebugScreenshotTest

# Validate screenshots haven't changed
./gradlew :app:validateDebugScreenshotTest

💻 Tech Stack & Libraries

This project is a showcase of modern Android development practices.

Category Library / Tool
Language 100% Kotlin
UI Jetpack Compose + Material 3 Expressive (1.5.0-alpha17)
Navigation Navigation 3 (nav3 1.2.0-alpha01)
State management Lifecycle ViewModel + StateFlow (2.11.0-alpha03)
Async Coroutines & Flow
Permissions Accompanist Permissions
Persistence DataStore Preferences
Analytics Firebase Analytics + Crashlytics + Performance Monitoring, abstracted via AnalyticsTracker
Screenshot testing Android Compose Screenshot Testing (com.android.compose.screenshot)
Code quality Detekt + Spotless/ktlint
Performance Baseline Profiles + ProGuard/R8

🙏 How to Contribute

Contributions are welcome! Whether it's reporting a bug, suggesting a feature, or submitting a pull request, all help is appreciated. Please see CONTRIBUTING.md for detailed guidelines.


About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages