
Medicare
Open-source web app for organizing household medicines, with quantity and expiration tracking, family member associations and a change history.
- Year
- 2025
- Type
- Open Source
- Status
- In development
- Source code
- Open
Stack
- Ruby on Rails
- Ruby
- PostgreSQL
- Tailwind CSS
- Stimulus

About the project
Medicare is a web application in development for organizing household medicines. It brings together quantities, expiration dates, recorded symptom information and the family members who use each medicine.
Problem
Medicines stored in different drawers and boxes make it difficult to check stock and expiration dates. Households with several people also need to record which medicines are associated with each family member.
Solution
The application centralizes medicine records, including quantity, dosage form, expiration date and associated symptoms. It links medicines to family members and maintains a history of changes to the records.
My role
I developed this open-source project, including data modeling, validation rules, authentication, permissions, the interface and deployment configuration.
Key features
- Medicine records with unit, quantity, expiration date and dosage form
- Associations between medicines and recorded symptoms
- Photo and package leaflet attachments
- Identification of expired and soon-to-expire medicines
- Family member records linked to medicines
- Change history
- User and administrator roles
- Light and dark themes
Architecture and technical decisions
The application uses Ruby on Rails and PostgreSQL, with Tailwind CSS, Stimulus and Turbo for the interface. This keeps pages and business logic within the same application.
Devise handles authentication, and CanCanCan defines permissions by role. PaperTrail versions medicine records, centralizing the change history.
Business rules live in the models. Validation prevents new records for medicines that have already expired, and queries for expired or soon-to-expire items are reused across screens. Ransack and Kaminari handle search and pagination. Bullet was used during development to identify N+1 queries that cause repeated database access.
Interface notifications use Rails Toastify, another open-source gem I developed and published.
Outcome
In development, with source code available on GitHub.
Technologies
Ruby on Rails, Ruby, PostgreSQL, Tailwind CSS, Stimulus, Devise, CanCanCan and PaperTrail.