Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LifeAdmin

A household record-keeping app built as a Design Thinking coursework project. It tracks the recurring "life admin" that's easy to lose track of — loans, insurance, warranties, miscellaneous bills, and medical records — behind a per-user login, and includes a simple tax estimator.

Built with Streamlit + pandas, following the full Design Thinking process: empathize → define → ideate → prototype. The empathy research, problem statement, and ideation artifacts are in docs/design-process/; a static HTML mockup of the intended site is in website/.

The problem

From the empathize/define phase (full writeup):

In a household there are multiple payments that must be done regularly like electricity bill, loan payments, etc. Sometimes people might miss out a few payments and there might be severe consequences according to the bill they missed to pay. A similar thing could be said about the medical information of family members — it can be very easy to lose medical information of family members, especially the older ones, and in a few cases bad medical history could have serious consequences.

Two personas drove the design: the head of a household juggling bills and family medical history with "rudimentary methods to only store information," and a student/bachelor living alone for the first time, hitting the same problems with less support.

Proposed solution: keep a running record of what's owed to whom and when, provide medical record storage, and (eventually) trigger reminders as due dates approach. The ideation list breaks this down further — payment types (prepaid/postpaid, critical/non-critical, fixed/variable), what data to capture per record, and adjacent ideas like storing key documents (ID proofs, insurance policies).

What's implemented

Page What it does
Home Sign up / log in (hashed passwords via streamlit-authenticator)
Bills CRUD for Loans, Insurance, Warranty, and Miscellaneous bills — per-user CSV storage
Tax Quick tax-owed calculator (amount × rate)
Medical CRUD for Medical History, Bills, and Prescriptions

Each signup gets its own set of CSV files under app/pages/csv/*/<username>.csv, so records are isolated per user.

Try it

A demo account is seeded so you can log in immediately:

  • Username: demo
  • Password: Demo@1234

Setup

Requires Python 3.11+.

pip install pipenv
pipenv install
pipenv run streamlit run app/Home.py

Or with a plain virtualenv:

python3 -m venv .venv && source .venv/bin/activate
pip install streamlit pandas streamlit-authenticator watchdog
streamlit run app/Home.py

Open the URL Streamlit prints (defaults to http://localhost:8501).

Optional: reminder emails

app/email_reminder.py is a standalone utility page for sending a one-off reminder email. It needs SMTP credentials supplied via environment variables (never hardcode credentials):

export LIFEADMIN_SMTP_USER="you@example.com"
export LIFEADMIN_SMTP_PASSWORD="an-app-password"  # not your account password

Project structure

app/                   Streamlit app
  Home.py              Login / signup
  pages/
    1_Bills.py         Loans, Insurance, Warranty, Misc
    2_Tax.py           Tax calculator
    3_Medical.py        Medical History, Bills, Prescriptions
    csv/                Per-user data, one folder per record type
  generate_keys.py     Hashes user.csv passwords into hashed_pw.pkl
  email_reminder.py    Standalone reminder-email utility
website/               Static HTML mockup of the intended marketing site
docs/design-process/   Design Thinking artifacts (personas, problem statement, ideation)

Known limitations

This was a coursework prototype, not a production app — worth being upfront about:

  • Passwords are stored in a plaintext CSV before hashing on signup; fine for a local demo, not for real deployment (a real build would hash at the point of entry and never persist the plaintext).
  • Per-user data lives in flat CSV files rather than a database — simple to read, but no concurrency safety.
  • The reminder/notification system from the original problem statement (nudging users before a bill is due) was scoped out of the prototype.

Future work

  • Actual due-date reminders (the core idea from the problem statement) via the email utility or a scheduled job.
  • Move persistence from CSV to a real database.
  • Flesh out the marketing site in website/ and wire it to the app.

About

Household record-keeping app (bills, loans, insurance, warranty, medical, tax) built as a Design Thinking coursework project. Streamlit + pandas.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages