Skip to content

JokeApp is a full-stack project developed as part of CMU Heinz 95702 coursework. It aims to offer users a moment of light-hearted fun during their busy workdays — reflecting Carnegie Mellon's spirit: "My heart ❤️ is in the work."

Notifications You must be signed in to change notification settings

LoadingBFX/JokeApp

Repository files navigation

🤣 JokeApp: Android Joke Fetcher

Android MongoDB Docker Made with Love

Author: Fanxing Bu
Course: Carnegie Mellon University, Heinz College, 95702 Project 4


📖 Overview

JokeApp is a full-stack project developed as part of CMU Heinz 95702 coursework. It aims to offer users a moment of light-hearted fun during their busy workdays — reflecting Carnegie Mellon's spirit: "My heart ❤️ is in the work."

The application demonstrates practical system integration: combining mobile frontend development, backend service architecture, database logging, and real-time analytics — all fully deployed and operational.

Jokes are sourced from the JokeAPI v2.


🛠️ Tech Stack

  • Mobile App: Android (Java), Material Design 3
  • Backend Service: Java Servlet (Apache Tomcat 10), Docker, GitHub Codespaces
  • Database: MongoDB Atlas (Cloud-hosted)
  • Dashboard: JSP, Chart.js, Bootstrap 5
  • Libraries: Gson (for JSON parsing)

🏛️ System Architecture

[Android App] → [Custom Servlet (Tomcat)] → [JokeAPI]
                                    ↓
                               [MongoDB Atlas]
                                    ↓
                          [JSP Dashboard Analytics]
  • Android App: Collects user preferences and fetches jokes.
  • Custom Servlet: Interfaces with JokeAPI, handles responses, logs requests.
  • MongoDB Atlas: Stores all interaction data for analytics.
  • JSP Dashboard: Visualizes usage statistics and operational logs.

✨ Key Features

📱 Android App

  • Category Selection: Multiple joke categories (e.g., Programming, Spooky).
  • Language Selection: Choose joke language (English, Spanish, etc.).
  • Keyword Filtering: Search jokes by optional keywords.
  • Modern UI: Material3 styled cards and inputs.
  • Robust Error Handling: Friendly fallback screens for network/API issues.

🖥️ Web Service

  • Dynamic Query Construction: Builds requests to JokeAPI based on user input.
  • Validation and Defaults: Applies safe defaults when needed.
  • Comprehensive Logging: Captures complete transaction data.
  • Structured Responses: Normalizes JokeAPI outputs for Android parsing.

📊 Analytics Dashboard

  • Today's Total Requests
  • Language Distribution Pie Chart
  • Daily Request Trends
  • Popular Joke Categories
  • Top Search Keywords
  • Top 5 Frequent Joke IDs
  • Paginated Log View

Responsive design using JSP, Bootstrap 5, and Chart.js.


🚀 Deployment

  • Android Testing: Medium Phone Emulator (API 36)
  • Backend Hosting: GitHub Codespaces, Apache Tomcat 10 (Dockerized)
  • Database: MongoDB Atlas, multi-sharded cluster

Endpoints:

Docker Base Image:

FROM tomcat:10.1.15-jdk17-temurin

🎯 Project Purpose

The idea behind JokeApp is simple yet meaningful:

Give people a quick laugh amidst hard work — a "light moment" inspired by the CMU spirit.

Through this project, I explored real-world challenges in mobile/web integration, cloud data management, error resilience, and operational analytics.


📸 Screenshots


📬 Contact

Fanxing Bu - LinkedIn | Email


Thanks for visiting! Hope this little app brings a smile to your day! 😄

About

JokeApp is a full-stack project developed as part of CMU Heinz 95702 coursework. It aims to offer users a moment of light-hearted fun during their busy workdays — reflecting Carnegie Mellon's spirit: "My heart ❤️ is in the work."

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published