An accessible, elderly-friendly medication reminder application designed to help users manage their daily medication schedule with a clear visual pill organizer interface.
- Large, clear text with high contrast colors
- Vertical pill organizer layout for easy navigation
- Simple navigation with minimal cognitive load
- Touch-friendly buttons with generous sizing
- Visual pill organizer with 4 daily compartments (Morning, Afternoon, Evening, Night)
- Active medication alerts with visual arrows pointing to current compartment
- Real-time clock displaying current time and next medication
- Progress tracking showing daily completion status
- One-click medication logging with "I Took My Medicine" button
- Flexible scheduling for each medication time
- Enable/disable individual medication periods
- Time customization for morning, afternoon, evening, and night doses
- Persistent settings saved automatically
- Quick access emergency contact buttons
- Family contact button with customizable phone number
- Doctor contact button for medical emergencies
- 911 emergency button for immediate assistance
- React 18+ with TypeScript for type safety
- Wouter for lightweight client-side routing
- TanStack Query for efficient server state management
- Radix UI with shadcn/ui for accessible components
- Tailwind CSS for responsive styling
- Vite for fast development and building
- Express.js with TypeScript
- In-memory storage for development (easily upgradeable to PostgreSQL)
- Drizzle ORM for type-safe database operations
- RESTful API design
- ESBuild for production bundling
- Drizzle Kit for database migrations
- TypeScript for static type checking
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone <repository-url> cd medication-reminder-app
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5000to view the application
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utility functions and configurations
β β βββ pages/ # Application pages/routes
β β βββ main.tsx # Application entry point
β βββ index.html # HTML template
βββ server/ # Backend Express application
β βββ index.ts # Server entry point
β βββ routes.ts # API route definitions
β βββ storage.ts # Data storage interface
β βββ vite.ts # Vite integration
βββ shared/ # Shared types and schemas
β βββ schema.ts # Database schema and types
βββ package.json # Project dependencies and scripts
GET /api/medication-schedule- Retrieve current medication schedulePATCH /api/medication-schedule/:id- Update medication schedule settings
GET /api/medication-logs/:date- Get medication logs for specific date (YYYY-MM-DD)POST /api/medication-logs- Mark medication as taken
{
id: string;
name: string;
morningTime: string | null;
morningEnabled: boolean | null;
afternoonTime: string | null;
afternoonEnabled: boolean | null;
eveningTime: string | null;
eveningEnabled: boolean | null;
nightTime: string | null;
nightEnabled: boolean | null;
}{
id: string;
scheduleId: string;
compartment: "morning" | "afternoon" | "evening" | "night";
takenAt: string; // ISO date string
date: string; // YYYY-MM-DD format
}- High contrast colors for better visibility
- Large touch targets (minimum 44px) for easy interaction
- Clear visual hierarchy with distinct sections
- Minimal cognitive load with simple, intuitive navigation
- Immediate feedback for all user actions
- Visual progress indicators to show completion status
- Consistent layout across all pages
- Error prevention with clear validation messages
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run preview- Preview production build locally
For production deployment with PostgreSQL:
DATABASE_URL- PostgreSQL connection stringNODE_ENV- Set to "production" for production builds
- Home Screen: View current time and active medication compartment
- Taking Medication: Click the highlighted compartment and press "I Took My Medicine"
- Settings: Customize medication times and enable/disable periods
- Emergency: Use quick access buttons for family, doctor, or emergency calls
- Initial Setup: Configure medication times in Settings page
- Monitoring: Check daily progress on the home screen
- Updates: Adjust times and enabled periods as needed
- Emergency Contacts: Configure phone numbers for quick access buttons
- Push code to GitHub repository
- Import to Replit
- Click "Deploy" button in Replit interface
- Application will be available at
*.replit.appdomain
- Build the application:
npm run build - Deploy built files to your hosting provider
- Set environment variables if using PostgreSQL
- Start the server:
npm start
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Submit a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Radix UI for accessible component primitives
- shadcn/ui for beautiful component designs
- TanStack Query for excellent server state management
- Tailwind CSS for utility-first styling
For support, questions, or feature requests, please open an issue in the GitHub repository.
Made with β€οΈ for better medication management