A modern, cross-platform mobile and desktop application to organize your photo library from any web source (WebDAV support). Built with Flutter for seamless multi-platform experience.
- π± Cross-platform: Runs on iOS, Android, macOS, Windows, and Linux
- π WebDAV Support: Connect to any WebDAV server (Nextcloud, ownCloud, etc.)
- πΌοΈ Smart Gallery: Grid view with date-based organization
- ποΈ EXIF Data: Automatic extraction and display of photo metadata
- π GPS Support: View photo locations on an interactive map
- π¬ Video Support: Play and organize videos alongside photos
- πΎ Local Caching: Efficient thumbnail generation and caching
- π Auto-sync: Automatic synchronization with remote sources
- π Dark/Light Theme: Follows system theme preferences
- π Modern UI: Clean, Material Design 3 interface
First install the required tools:
-
Clone the repository
git clone https://github.com/yourusername/piyp.git cd piyp -
Install development tools
mise plugins install android-sdk https://github.com/Syquel/mise-android-sdk.git mise install java yq jq # Install first as they are required by other tools mise install -
Configure Android (if building for Android)
sdkmanager "platform-tools" "build-tools;33.0.3" "platforms;android-33" yes | flutter doctor --android-licenses
-
Install dependencies
flutter pub get
-
Generate database code
dart run build_runner build
flutter runFor specific platforms:
flutter run -d macos # macOS
flutter run -d windows # Windows
flutter run -d linux # Linux
flutter run -d chrome # Web (for development)- Launch PIYP and navigate to Settings
- Add WebDAV Server with your credentials:
- Server Name: Give it a memorable name
- Server URL: Your WebDAV endpoint (e.g.,
https://cloud.example.com/remote.php/dav/files/username/) - Username: Your WebDAV username
- Password: Your WebDAV password
- Folder Path: Optional subfolder path
- Test Connection and start syncing your photos!
- β Nextcloud
- β ownCloud
- β Box.com
- β pCloud
- β Any standard WebDAV server
lib/
βββ main.dart # App entry point
βββ router.dart # Navigation configuration
βββ database/ # Database schema and queries
βββ classes/ # Data models
βββ settings/ # Settings and configuration
βββ [other_features]/ # Feature-specific modules
Android APK:
flutter build apk --releaseiOS App:
flutter build ios --releaseDesktop Apps:
flutter build macos --release # macOS
flutter build windows --release # Windows
flutter build linux --release # LinuxCreate and launch an Android emulator:
sdkmanager "system-images;android-33;google_apis;x86_64"
avdmanager create avd --name Pixel_8_Pro_AVD --package "system-images;android-33;google_apis;x86_64" --device "pixel_8_pro"
flutter emulators --launch Pixel_8_Pro_AVDIf you encounter Gradle-related errors:
rm -rf ~/.gradle/ ~/.pub-cache
flutter clean
flutter pub getFor Flutter installation issues, refer to:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- WebDAV community for the protocol specification
- All contributors who make this project better