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!
- 🔄 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.
-
REST API: Uses Random Useless Facts API
GET /api/v2/facts/random– Returns a random factGET /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 logicViewModel: Manages app data and logicView: Fragments display data and handle UI
- Android Studio (Electric Eel or newer)
- Android SDK 33+
- One physical or virtual Android device (API 30+ recommended)
- Internet connection for API requests
- Clone the Repository
git clone https://github.com/kkarissa/CS377-FinalProject.git cd CS377-FinalProject - Open the Project in Android Studio
- Launch Android Studio
- Click
File > Open - Select the
CS377-FinalProjectfolder
- Build and Run
- Let Gradle sync and finish building
- Connect a device or use an emulator
- Click Run
▶️ to install and launch the app
- Using the App
- Use the hamburger menu to navigate
- Browse facts, check today's fact, and save to favorites
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
| 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 |
- Karissa Smallwood – UI/UX Design, App Navigation
- Peter Hilbert – API Integration, Database Management
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.
Reach us on GitHub:


