Skip to content

mobilemobilellc/solpan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages