A custom Android application inspired by PCPartPicker that enhances the PC building experience with advanced component management, custom pricing integration, and offline support.
PCPartPicker extends the typical PC building experience by allowing users to:
- Create and manage custom component lists with multiple build configurations
- View detailed component specifications with ratings and vendor availability
- Integrate custom pricing and bundles for manual connections to additional vendors
- Browse parts through a powerful search API or by category with pagination and region support
- 🔍 Advanced Search & Filter: Search components by name or browse by product type with intelligent filtering
- 📄 Smooth Pagination: Infinite scroll with efficient page-by-page loading for large datasets
- 📱 Custom Build Lists: Create, save, view, and manage multiple PC builds locally
- 💾 Robust Offline Support: Powered by Room Database for reliable local data persistence
- 🌍 Multi-Region Support: Dynamically loads pricing and availability using stored region preferences
- ⚡ Real-time Updates: Built with
LiveData
+ViewModel
architecture for responsive UI updates - 🛠 Smart Error Handling: In-app error reporting with automatic retry mechanisms
As described above, the app allows for searching through input or by category.
As described above, the app allows for the creation of custom lists, bundles, and easy management of components within them!
Shown below are early examples of swapping themes and switching to dark mode.
Category | Technology |
---|---|
Language | Kotlin |
Architecture | MVVM (Model-View-ViewModel) |
Networking | Retrofit2 + Gson |
Local Database | Room (Android Jetpack) |
UI State Management | LiveData, ViewModel |
Async Operations | Kotlin Coroutines |
Dependency Injection | Manual ViewModelFactory* |
Configuration | Custom API URL via BuildConfig |
app.src.main/
├── java.com.example.pcpartpicker/
│ ├── BundleEntity.kt and ComponentEntity.kt
│ ├── BundleComponentCrossRef.kt
│ ├── BundleWithComponents.kt
│ ├── BundleDao.kt and ComponentDao.kt
│ ├── MyApplication.kt
│ ├── PyPartPickerApi.kt
│ └── Other Kotlin Files
├── res/
│ ├── anim/
│ │ └── Animation .xml files
│ ├── drawable/
│ │ └── All Icon .xml files
│ └── layout/
│ │ ├── All Activity and Fragment Views
│ │ ├── Component, List, and Bundle Views
│ | └── Dialog Views
└── AndroidManifest.xml
- Android Studio Arctic Fox or later
- Android SDK API level 21+
- Kotlin 1.7+
- Follow the setup instructions at PCPP_API
- Start your local server (use Ngrok for remote debugging if needed)
- Note your API base URL for configuration
-
Clone the repository
git clone https://github.com/SlothCodeSloth/PCPP_AndroidApp.git cd PCPartPickerPlus
-
Configure API endpoint
Option A: Update
BuildConfig
(recommended)// In app/build.gradle buildConfigField "String", "API_BASE_URL", "\"http://your-api-url:port/\""
Option B: Direct configuration
// In MyApplication.kt private val BASE_URL = "http://your-api-url:port/"
-
Build and run
./gradlew assembleDebug # Or use Android Studio's Run button (Android Emulator or Physical Android Device Required)
- Browse Components: Navigate through different component categories or use the search function
- View Details: Tap any component to see detailed specifications, pricing, and vendor information
- Create Builds: Add components to custom lists and manage multiple build configurations
- Create Bundles: Added integration for bundles that may be offered externally
- Custom Data: Allows for custom Pricing and URL's for adaptability with other retailers (manual)
- Offline Access: Previously viewed components and saved builds work without internet connectivity
The app supports flexible API configuration through:
- Environment-specific build variants
- Runtime configuration updates
- Regional API endpoint switching
Room database automatically handles:
- Schema migrations
- Data persistence
- Query optimization
- Enhanced Theme Support (Separated Dark/Light Themes)
- Correct issues with Bundles
- Improve UI for easier motions
- Add an intro sequence that plays on first startup
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by PCPartPicker
- API: PyPartPicker
- Backend: PCPP_API
- Android Jetpack components
- Kotlin Coroutines community