CMU - A Distributed App

CMU - A Distributed App

This project aims to design and deploy a distributed system—starting from API integration and cloud database interaction to building a fully functional Android app, RESTful web service, and operational dashboard using real-world cloud deployment practices.

Client

Carnegie Mellon University

Year

2024

Category

App Dev + REST APIs + Cloud Analytics

ProjecT Link

Visit Site

VIsion & Problem Statement

VIsion & Problem Statement

Vision:
To build an integrated mobile-to-cloud distributed application that enables users to search dictionary data from a third-party API, with real-time monitoring and usage analytics powered by MongoDB and a custom dashboard.

Problem Statement:
This project addresses the challenge of building a complete system from scratch — fetching third-party API data, handling mobile-server communication, and surfacing operational analytics on a cloud-hosted dashboard.

Vision:
To build an integrated mobile-to-cloud distributed application that enables users to search dictionary data from a third-party API, with real-time monitoring and usage analytics powered by MongoDB and a custom dashboard.

Problem Statement:
This project addresses the challenge of building a complete system from scratch — fetching third-party API data, handling mobile-server communication, and surfacing operational analytics on a cloud-hosted dashboard.

VIsion & Problem Statement

Vision:
To build an integrated mobile-to-cloud distributed application that enables users to search dictionary data from a third-party API, with real-time monitoring and usage analytics powered by MongoDB and a custom dashboard.

Problem Statement:
This project addresses the challenge of building a complete system from scratch — fetching third-party API data, handling mobile-server communication, and surfacing operational analytics on a cloud-hosted dashboard.

Product Goal

Product Goal

Deliver a fully functional distributed application combining a mobile app, RESTful web service, and operations dashboard with end-to-end functionality, monitoring, and insights.

Deliver a fully functional distributed application combining a mobile app, RESTful web service, and operations dashboard with end-to-end functionality, monitoring, and insights.

Product Goal

Deliver a fully functional distributed application combining a mobile app, RESTful web service, and operations dashboard with end-to-end functionality, monitoring, and insights.

User Stories

User Stories

Title

As a/an

I want to

So that

Perform Word Lookup

Mobile User

Search definitions, synonyms, and antonyms

I can learn and expand my vocabulary

Fetch Word Data from API

Web Service Developer

Retrieve and parse word data from DictionaryAPI.dev

Serve meaningful word details to users

Log Mobile Requests

Web Service Developer

Store user request information in MongoDB

Track and analyze application usage patterns

Visualize Usage Data

Dashboard User

View operational analytics on searches and app usage

Monitor application health and improve decision-making

Handle Failures Gracefully

Mobile Developer

Receive clear errors if the API or server fails

Maintain user trust through reliability

Title

As a/an

I want to

So that

Perform Word Lookup

Mobile User

Search definitions, synonyms, and antonyms

I can learn and expand my vocabulary

Fetch Word Data from API

Web Service Developer

Retrieve and parse word data from DictionaryAPI.dev

Serve meaningful word details to users

Log Mobile Requests

Web Service Developer

Store user request information in MongoDB

Track and analyze application usage patterns

Visualize Usage Data

Dashboard User

View operational analytics on searches and app usage

Monitor application health and improve decision-making

Handle Failures Gracefully

Mobile Developer

Receive clear errors if the API or server fails

Maintain user trust through reliability

User Stories

Title

As a/an

I want to

So that

Perform Word Lookup

Mobile User

Search definitions, synonyms, and antonyms

I can learn and expand my vocabulary

Fetch Word Data from API

Web Service Developer

Retrieve and parse word data from DictionaryAPI.dev

Serve meaningful word details to users

Log Mobile Requests

Web Service Developer

Store user request information in MongoDB

Track and analyze application usage patterns

Visualize Usage Data

Dashboard User

View operational analytics on searches and app usage

Monitor application health and improve decision-making

Handle Failures Gracefully

Mobile Developer

Receive clear errors if the API or server fails

Maintain user trust through reliability

Core Features

Core Features

Feature

Description

Priority

Android Dictionary App

Allows users to input words and search for definitions, synonyms, or antonyms

P1

RESTful Web Service (DictionaryServlet)

Fetches data from DictionaryAPI and serves structured JSON responses

P1

MongoDB Logging

Logs query terms, device type, OS, browser, IP address, and timestamps

P1

Background HTTP Requests

Uses background threading in an Android app for non-blocking web service calls


P1

Dashboard Analytics (DashboardServlet + JSP)

Displays the most recent search, the most used OS, and detailed logs

P2

Error Handling & Recovery

Handles invalid input, network failures, and API unavailability

P2

Feature

Description

Priority

Android Dictionary App

Allows users to input words and search for definitions, synonyms, or antonyms

P1

RESTful Web Service (DictionaryServlet)

Fetches data from DictionaryAPI and serves structured JSON responses

P1

MongoDB Logging

Logs query terms, device type, OS, browser, IP address, and timestamps

P1

Background HTTP Requests

Uses background threading in an Android app for non-blocking web service calls


P1

Dashboard Analytics (DashboardServlet + JSP)

Displays the most recent search, the most used OS, and detailed logs

P2

Error Handling & Recovery

Handles invalid input, network failures, and API unavailability

P2

Core Features

Feature

Description

Priority

Android Dictionary App

Allows users to input words and search for definitions, synonyms, or antonyms

P1

RESTful Web Service (DictionaryServlet)

Fetches data from DictionaryAPI and serves structured JSON responses

P1

MongoDB Logging

Logs query terms, device type, OS, browser, IP address, and timestamps

P1

Background HTTP Requests

Uses background threading in an Android app for non-blocking web service calls


P1

Dashboard Analytics (DashboardServlet + JSP)

Displays the most recent search, the most used OS, and detailed logs

P2

Error Handling & Recovery

Handles invalid input, network failures, and API unavailability

P2

Success Metrics

Success Metrics

Metric

Description

API Connectivity Success Rate

% successful connections to DictionaryAPI.dev

MongoDB Write/Read Latency

Average time for CRUD operations during user sessions

Top Search Terms

Most queried words through the Android app

Device Type Breakdown

Device OS and model distribution across users

Average Server Response Time

Time from HTTP request to HTTP response

Metric

Description

API Connectivity Success Rate

% successful connections to DictionaryAPI.dev

MongoDB Write/Read Latency

Average time for CRUD operations during user sessions

Top Search Terms

Most queried words through the Android app

Device Type Breakdown

Device OS and model distribution across users

Average Server Response Time

Time from HTTP request to HTTP response

Success Metrics

Metric

Description

API Connectivity Success Rate

% successful connections to DictionaryAPI.dev

MongoDB Write/Read Latency

Average time for CRUD operations during user sessions

Top Search Terms

Most queried words through the Android app

Device Type Breakdown

Device OS and model distribution across users

Average Server Response Time

Time from HTTP request to HTTP response

Technical Stack

Technical Stack

Models: DictionaryAPI.dev (external dictionary data)

Frameworks: Android SDK (Java), Servlet API (Java), MongoDB Java Driver

Data Sources: DictionaryAPI.dev (3rd party API), MongoDB Atlas (cloud-hosted)

Outputs: Word search results (JSON), MongoDB logs, operational analytics dashboard

Models: DictionaryAPI.dev (external dictionary data)

Frameworks: Android SDK (Java), Servlet API (Java), MongoDB Java Driver

Data Sources: DictionaryAPI.dev (3rd party API), MongoDB Atlas (cloud-hosted)

Outputs: Word search results (JSON), MongoDB logs, operational analytics dashboard

Technical Stack

Models: DictionaryAPI.dev (external dictionary data)

Frameworks: Android SDK (Java), Servlet API (Java), MongoDB Java Driver

Data Sources: DictionaryAPI.dev (3rd party API), MongoDB Atlas (cloud-hosted)

Outputs: Word search results (JSON), MongoDB logs, operational analytics dashboard

Key Results

  • Built a functional Android app with multiple Views (TextView, EditText, ImageView)

  • Successfully implemented background HTTP calls with structured JSON parsing

  • Developed a cloud-deployed Servlet-based RESTful web service integrated with MongoDB Atlas

  • Created a dynamic operations dashboard displaying top queries, user demographics, and logs

  • Handled API failures, server downtime, and network issues with robust fallback messaging

Constraints, Risks, and Mitigations

Constraint / Risk

Impact

Mitigation Strategy

API Availability and Downtime

Breaks app functionality temporarily

Implement retry and fallback messaging

MongoDB Atlas Connection Limits

Logging failures

Set efficient connection pooling, handle write retries

GitHub Codespaces Deployment Errors

Service unavailability

Pre-deploy in a dev environment, use public visibility

Web Service Latency

Slower mobile app responses

Optimize payloads, server-side filtering

Business Impact

  • Demonstrates expertise in building scalable mobile-to-cloud distributed systems

  • Equips future developers with real-world skills across mobile development, cloud deployment, and NoSQL databases

  • Enables near real-time operational insights from app usage data

  • Serves as a foundational architecture model for scalable mobile-backed SaaS products

Future Roadmap

Short-Term

  • Expand analytics to track query frequency over time

  • Integrate natural language error correction for misspelled queries

Mid-Term

  • Add predictive auto-suggestions for word searches

  • Expand the app with multilingual dictionary API support

Long-Term

  • Build AI-driven learning modules based on user vocabulary queries

  • Launch a premium model offering personalized word lists and learning pathways

Key Results

  • Built a functional Android app with multiple Views (TextView, EditText, ImageView)

  • Successfully implemented background HTTP calls with structured JSON parsing

  • Developed a cloud-deployed Servlet-based RESTful web service integrated with MongoDB Atlas

  • Created a dynamic operations dashboard displaying top queries, user demographics, and logs

  • Handled API failures, server downtime, and network issues with robust fallback messaging

Constraints, Risks, and Mitigations

Constraint / Risk

Impact

Mitigation Strategy

API Availability and Downtime

Breaks app functionality temporarily

Implement retry and fallback messaging

MongoDB Atlas Connection Limits

Logging failures

Set efficient connection pooling, handle write retries

GitHub Codespaces Deployment Errors

Service unavailability

Pre-deploy in a dev environment, use public visibility

Web Service Latency

Slower mobile app responses

Optimize payloads, server-side filtering

Business Impact

  • Demonstrates expertise in building scalable mobile-to-cloud distributed systems

  • Equips future developers with real-world skills across mobile development, cloud deployment, and NoSQL databases

  • Enables near real-time operational insights from app usage data

  • Serves as a foundational architecture model for scalable mobile-backed SaaS products

Future Roadmap

Short-Term

  • Expand analytics to track query frequency over time

  • Integrate natural language error correction for misspelled queries

Mid-Term

  • Add predictive auto-suggestions for word searches

  • Expand the app with multilingual dictionary API support

Long-Term

  • Build AI-driven learning modules based on user vocabulary queries

  • Launch a premium model offering personalized word lists and learning pathways

Key Results

  • Built a functional Android app with multiple Views (TextView, EditText, ImageView)

  • Successfully implemented background HTTP calls with structured JSON parsing

  • Developed a cloud-deployed Servlet-based RESTful web service integrated with MongoDB Atlas

  • Created a dynamic operations dashboard displaying top queries, user demographics, and logs

  • Handled API failures, server downtime, and network issues with robust fallback messaging

Constraints, Risks, and Mitigations

Constraint / Risk

Impact

Mitigation Strategy

API Availability and Downtime

Breaks app functionality temporarily

Implement retry and fallback messaging

MongoDB Atlas Connection Limits

Logging failures

Set efficient connection pooling, handle write retries

GitHub Codespaces Deployment Errors

Service unavailability

Pre-deploy in a dev environment, use public visibility

Web Service Latency

Slower mobile app responses

Optimize payloads, server-side filtering

Business Impact

  • Demonstrates expertise in building scalable mobile-to-cloud distributed systems

  • Equips future developers with real-world skills across mobile development, cloud deployment, and NoSQL databases

  • Enables near real-time operational insights from app usage data

  • Serves as a foundational architecture model for scalable mobile-backed SaaS products

Future Roadmap

Short-Term

  • Expand analytics to track query frequency over time

  • Integrate natural language error correction for misspelled queries

Mid-Term

  • Add predictive auto-suggestions for word searches

  • Expand the app with multilingual dictionary API support

Long-Term

  • Build AI-driven learning modules based on user vocabulary queries

  • Launch a premium model offering personalized word lists and learning pathways