Thriftr is a marketplace app for seamless product buying and selling with a responsive and smooth user experience.
- User Authentication: Secure and responsive user verification and session tracking.
- Product Listing: Users can browse and post products for sale.
- Real-Time Search & Filtering: Fast search with responsive filtering for a fluid browsing experience.
- Wishlist & Cart Management: Includes wishlist with gesture support and real-time cart updates.
- Optimized Image Handling: Efficient image caching and loading for better performance.
- Smooth Animations: Enhanced UI transitions for a polished user experience.
- Secure Data Handling: Backend with debounced network calls and robust security measures.
- Coroutines & Flow β Asynchronous programming for a responsive UI.
- Jetpack Compose β Modern UI toolkit for Android.
- Appwrite β Backend for authentication, database, and storage.
- Dagger Hilt β Dependency Injection.
- Coil β Image loading and caching.
- Accompanist β Accompanist components.
- Color Picker β Color picker library (by Skydoves).
- Konfetti Effect β Confetti effect (by Daniel Martinus).
| Register | Home | Sort |
|---|---|---|
![]() |
![]() |
![]() |
| Drawer | Wishlist | Checkout |
|---|---|---|
![]() |
![]() |
![]() |
| Start | Add Product | Login |
|---|---|---|
![]() |
![]() |
![]() |
| Home | Product Details | Wishlist |
|---|---|---|
![]() |
![]() |
![]() |
| Cart | Profile | Edit Profile |
|---|---|---|
![]() |
![]() |
![]() |
| Order Confirmation | Orders | Settings |
|---|---|---|
![]() |
![]() |
![]() |
thriftr_demo.mp4
git clone https://github.com/blizzardOfAce/thriftr.git
cd ThriftrNote
For security and customization purposes, this project does not include Appwrite-related IDs.
Youβll need to set up your own Appwrite project and manually copy the required IDs
(Project ID, Database ID, Collection IDs, and Bucket IDs) into yourlocal.propertiesfile.
- Go to Appwrite Console or your self-hosted instance.
- Create a new project (e.g., "Thriftr").
- Get your Project ID from the dashboard.
- Go to Databases β Create Database (e.g., "thriftr-db").
- Copy the Database ID.
In your database, create the following collections with appropriate permissions (enable CRUD operations for All Users for testing purposes):
Collection Name: user_collection
Attributes:
- FirstName (String)
- LastName (String)
- Email (Email)
- ImagePath (String)
- SavedAddresses (String[])
- Id (String)
Collection Name: product_collection
Attributes:
- id (String)
- name (String)
- category (String)
- price (Double)
- freeShipping (Boolean, default: false)
- stock (Integer, default: 0)
- discount (Double)
- description (String)
- details (String)
- colors (String[])
- sizes (String[])
- images (String[])
Collection Name: cart_collection
Attributes:
- userId (String)
- products (String[])
Collection Name: wishlist_collection
Attributes:
- userId (String)
- productId (String)
Collection Name: order_collection
Attributes:
- orders (String[])
Create two storage buckets:
- Product Images Bucket (e.g.,
"product_images_bucket") - Profile Images Bucket (e.g.,
"profile_image_bucket")
Enable file read and write access for authenticated users.
Copy both Bucket IDs.
Create a local.properties file in the root directory if it doesn't exist and add all the respective ids:
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
APPWRITE_PROJECT_ID=your_project_id
APPWRITE_DATABASE_ID=your_database_id
APPWRITE_USER_COLLECTION_ID=your_user_collection_id
APPWRITE_PRODUCT_COLLECTION_ID=your_product_collection_id
APPWRITE_CART_COLLECTION_ID=your_cart_collection_id
APPWRITE_WISHLIST_COLLECTION_ID=your_wishlist_collection_id
APPWRITE_ORDER_COLLECTION_ID=your_order_collection_id
APPWRITE_PRODUCT_IMAGE_BUCKET_ID=your_product_image_bucket_id
APPWRITE_PROFILE_IMAGE_BUCKET_ID=your_profile_image_bucket_id./gradlew assembleDebugOpen the project in Android Studio, connect a device, and run the app! π
- Improving animations and transitions
- Enhanced product management with a dashboard
Contributions are welcome! Here's how you can contribute:
- 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

















