Skip to content

Latest commit

 

History

History
203 lines (143 loc) · 5.96 KB

File metadata and controls

203 lines (143 loc) · 5.96 KB

📖 Quotd - Daily Quote Discovery App

Kotlin Jetpack Compose Android

A beautiful, Instagram-inspired daily quote discovery app built with Kotlin & Jetpack Compose ❤️

A personal Android project using ZenQuotes API

FeaturesScreenshotsTech StackInstallationArchitecture


✨ Features

🎯 Core Functionality

  • 📜 Daily Quotes: Discover inspiring quotes from famous personalities
  • ⬆️⬇️ Vertical Swipe Navigation: Instagram-style vertical paging for seamless quote browsing
  • ❤️ Double-Tap to Like: Intuitive double-tap gesture with beautiful heart animation
  • ⭐ Favorites Collection: Save your favorite quotes for later viewing
  • 📤 Easy Sharing: Share quotes with friends via any messaging or social media app
  • 🗑️ Swipe to Delete: Remove favorites with a smooth swipe-to-dismiss gesture

🎨 Design Highlights

  • Latest Material 3 Expressive Design: Beautiful, cohesive UI following Material You and new Expressive guidelines
  • Instagram-Inspired Interface: Familiar and friendly user experience
  • Smooth Animations: Delightful micro-interactions and transitions
  • Dark Mode Support: Comfortable reading in any lighting condition
  • Custom Typography: Elegant Funnel Display and Museo Moderno font families

📱 Screenshots

Home Light Home Light Home Light Home Light

🛠️ Tech Stack

Core

  • Language: Kotlin
  • UI Framework: Jetpack Compose
  • Minimum SDK: 33 (Android 13)
  • Target SDK: 36

Architecture & Libraries

  • Architecture: MVI (Model-View-Intent)
  • Dependency Injection: Hilt/Dagger
  • Navigation: Navigation 3 Compose
  • Networking:
    • Retrofit for API calls
    • OkHttp for logging
    • Gson for JSON parsing
  • Local Database: Room
  • API: ZenQuotes API

Key Dependencies

Jetpack Compose (Material 3 Expressive, Navigation 3, UI)
• Hilt for Dependency Injection
• Retrofit & OkHttp for Networking
• Room for Local Database
• Kotlin Coroutines & FlowMaterial Icons Extended

📥 Installation

Prerequisites

  • Android Studio (Hedgehog | 2023.1.1 or later)
  • JDK 21
  • Android SDK 33+

Steps

  1. Clone the repository

    git clone https://github.com/Quantum3600/Quotd.git
    cd Quotd
  2. Open in Android Studio

    • Open Android Studio
    • Select "Open an Existing Project"
    • Navigate to the cloned directory
  3. Build the project

    ./gradlew build
  4. Run on emulator or device

    • Click the Run button or press Shift + F10
    • Select your target device

🏗️ Architecture

The app follows MVI (Model-View-Intent) architecture pattern with Clean Architecture principles:

📦 com.trishit.quotd
 ┣ 📂 data              # Data layer (API, Database, Models)
 ┣ 📂 ui                # UI layer (Screens, ViewModels)
 ┣ 📂 components        # Reusable Compose components
 ┣ 📂 di                # Dependency Injection modules
 ┗ 📂 theme             # Material 3 theming

Key Components

  • HomeScreen: Main quote discovery screen with vertical pager
  • FavouriteScreen: Collection of saved quotes
  • QuoteViewModel: State management and business logic
  • Room Database: Local persistence for favorites
  • Retrofit Service: Network calls to ZenQuotes API

🎯 Key Features Implementation

🔄 Vertical Paging

Uses VerticalPager from Jetpack Compose Foundation to create Instagram-like quote browsing:

val pagerState = rememberPagerState(initialPage = 1, pageCount = { 3 })

❤️ Double-Tap Animation

Custom gesture detection with animated heart popup:

  • Double-tap triggers favorite action
  • Beautiful spring-based animation
  • Smooth fade-in/fade-out effects

🗑️ Swipe to Delete

Material 3 SwipeToDismissBox for intuitive favorite removal:

  • Swipe left or right to reveal delete action
  • Heartbroken icon indicator
  • Smooth dismissal animation

🌐 API Reference

This app uses the ZenQuotes API to fetch inspirational quotes.

Endpoint: https://zenquotes.io/api/quotes

No API key required! 🎉


🤝 Contributing

Contributions are welcome! Feel free to:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under Apache License (version 2.0). Please check the Privacy Policy for data handling information.


👤 Author

Trishit Majumdar (@Quantum3600)

  • 📧 Feel free to reach out for collaborations!

🙏 Acknowledgments

  • ZenQuotes API for providing the quote data
  • Jetpack Compose community for excellent resources
  • All the inspiring personalities whose quotes make this app meaningful

Made with ❤️ using Kotlin & Jetpack Compose

⭐ Star this repo if you find it helpful!