Skip to content

Repository files navigation

Macrocon 📊

A native Android app that turns Nigeria's macroeconomic data (GDP, inflation, unemployment) into an accessible, animated mobile experience — with a currency converter, a searchable World Bank indicator database, and an AI assistant that explains the numbers.

Final-year project — Babcock University.

Platform Min SDK Language Auth


✨ Features

  • Authentication — email/password + Google Sign-In (Firebase), with remember-me and password reset.
  • Home dashboard — auto-scrolling carousel of indicator cards with live line charts and semantic colour coding.
  • Indicator detail pages — GDP / Inflation / Unemployment, each with metadata, methodology, and historical charts.
  • Search — real-time filtering of World Bank indicators for Nigeria.
  • Currency converter — 50+ currencies via a live exchange-rate API.
  • AI chatbot — an OpenAI-powered assistant that explains why an indicator rose or fell.

🛠 Tech Stack

Java · Firebase Auth/DB/Storage · Retrofit · OkHttp · MPAndroidChart · Glide · Lottie · Facebook Shimmer · ViewPager2 / Material · Chaquopy (Python)

📖 Full technical write-up, architecture, and engineering retrospective: see DOCUMENTATION.md.


🚀 Getting Started

git clone https://github.com/Mubby03/macrocon.git
cd macrocon
cp local.properties.template local.properties   # then fill in your keys (see below)
./gradlew assembleDebug

You also need to add your own app/google-services.json from a Firebase project (it is intentionally not committed).

The Chaquopy buildPython path in app/build.gradle is hard-coded to a macOS Python 3.11 launcher — update it for your machine, or remove the Chaquopy plugin if you don't need on-device Python.


🔑 API Keys & Secrets — What You Need To Do

This app talks to several external services, each needing its own key. No keys are stored in the source code. They're read at build time from local.properties, which is git-ignored and never committed.

How it works

  • local.properties (git-ignored) holds the real keys.
  • app/build.gradle reads them and injects them into BuildConfig fields / a string resource.
  • local.properties.template (committed) lists exactly which keys are required.

Setup

Copy the template and fill in your own values:

# local.properties
OPENAI_API_KEY=your_openai_key          # AI chatbot      -> https://platform.openai.com/api-keys
EXCHANGE_RATE_API_KEY=your_exchange_key # Currency converter -> https://www.exchangerate-api.com/
NEWS_API_KEY=your_news_key              # News headlines  -> https://newsapi.org/
GOOGLE_WEB_CLIENT_ID=your_web_client_id # Google Sign-In  -> from google-services.json (client_type 3)

⚠️ Important — rotate the old keys

Earlier versions of this project had these keys hard-coded in the source. Even though they've now been removed from the code, the old values were already exposed and must be treated as compromised. Before relying on this app:

Key Action Where
OpenAI API key Revoke + regenerate platform.openai.com → API keys
ExchangeRate-API key Regenerate exchangerate-api.com dashboard
News API key Regenerate newsapi.org account
Google / Firebase web key Review & restrict Firebase / Google Cloud console
GitHub PAT (was in app/github.properties) Revoke + delete the file github.com → Settings → Developer settings → Tokens

Rule of thumb: moving a key out of source code does not un-leak it. Any key that was ever committed must be rotated. For the highest security, the OpenAI and exchange-rate calls should ideally be proxied through a small backend so the keys never ship inside the app at all.


⚠️ Status & Known Limitations

This is a student project preserved for portfolio purposes. It works, but the DOCUMENTATION.md retrospective honestly catalogues its rough edges (deprecated AsyncTask, no MVVM layer, magic-index JSON parsing, frozen 2022 data, etc.) and how I'd address them today.


📄 License

Provided as-is for educational and portfolio purposes.

Author: Mubaraq Lawal · Babcock University

About

Macrocon — Nigerian macroeconomic insights Android app (GDP, inflation, unemployment, FX, AI assistant). Babcock University final-year project.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages