Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📱 FactDrop – Endless Useless Knowledge at Your Fingertips

FactDrop is a fun Android app that delivers random, silly facts to brighten your day. Whether you’re browsing through an endless feed of facts or checking the “fact of the day,” FactDrop keeps you entertained. You can also save your favorite facts to revisit them later!


🚀 Features

  • 🔄 Browse Random Facts: Swipe through randomly generated facts.
  • 📆 Daily Fact: See a new featured fact every day.
  • Save Favorites: Bookmark your favorite facts to view later.
  • 🧭 Clean Navigation: Hamburger menu for simple navigation.
  • 📲 Modern Design: Responsive UI using ConstraintLayout and LinearLayout.
  • 📦 Offline Access: Favorites stored locally using Room database.

🛠️ How It Works

  • REST API: Uses Random Useless Facts API

    • GET /api/v2/facts/random – Returns a random fact
    • GET /api/v2/facts/today – Returns a fixed "daily" fact
  • Room Database: Saves favorites with ID and text fields.

  • Architecture: Built with MVVM (Model-View-ViewModel)

    • Model: API and database logic
    • ViewModel: Manages app data and logic
    • View: Fragments display data and handle UI

📸 Screenshots

  • Browse Facts Screen

    browse_fact

  • Today’s Fact Screen

    daily_fact

  • Favorites Screen

    favorites_fact


📦 Requirements

  • Android Studio (Electric Eel or newer)
  • Android SDK 33+
  • One physical or virtual Android device (API 30+ recommended)
  • Internet connection for API requests

⚙️ Installation & Setup

  1. Clone the Repository
    git clone https://github.com/kkarissa/CS377-FinalProject.git
    cd CS377-FinalProject
  2. Open the Project in Android Studio
    • Launch Android Studio
    • Click File > Open
    • Select the CS377-FinalProject folder
  3. Build and Run
    • Let Gradle sync and finish building
    • Connect a device or use an emulator
    • Click Run ▶️ to install and launch the app
  4. Using the App
    • Use the hamburger menu to navigate
    • Browse facts, check today's fact, and save to favorites

📁 Project Structure

CS377-FinalProject/
├── app/src/main
│   ├── java/com/example/finalproject/ # Kotlin source code
│   │   ├── data/                      # Data-related packages
|   |   |   ├── database/              # Room database classes
|   |   |   ├── model/                 # Main Fact data class
|   |   |   ├── network/               # Retrofit classes
|   |   |   └── repository/            # FactRepository class
│   │   └── ui/                        # Main fragment classes
|   |       ├── adapter/               # Adapter class for favorites RecyclerView
|   |       └── viewmodel/             # FactViewModel class
│   └── res/                           # Layouts, navigation, strings, etc.
└── build.gradle                       # Project configuration

🧩 Key Libraries Used


🧪 Troubleshooting

Issue Solution
Project fails to build Run File > Invalidate Caches / Restart
API response is null Check your internet connection
Favorites not saved Ensure Room DB permissions and setup are correct
App crashes on launch Confirm all Gradle dependencies are synced

👥 Authors

  • Karissa Smallwood – UI/UX Design, App Navigation
  • Peter Hilbert – API Integration, Database Management

🤝 Contributing

This project was built for academic purposes and is not actively maintained for contributions.
However, feel free to fork the repository or open an issue with feedback or questions.


📫 Contact

Reach us on GitHub:

About

Our project for CS377!

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages