A full-screen, touch-friendly reminder application designed for daily task management with weather integration. Perfect for wall displays, tablets, or Raspberry Pi setups.
- Daily Reminders: Create and manage daily tasks with custom times
- Recurring Tasks: Set weekly recurring reminders (specific days)
- Smart Completion: Mark tasks as done with visual feedback
- Viewer Mode: Clean, full-screen display for wall mounting
- Real-time Weather: Current London weather with Open-Meteo API (no API key required)
- 5-Day Forecast: Click weather display to see expandable 5-day forecast
- Accurate Data: Uses official meteorological data from national weather services
- Famous Quotes: 119+ inspirational quotes from verified famous authors
- Daily Rotation: New quote each day from Einstein, Churchill, Maya Angelou, Gandhi, and more
- Smart Display: Quotes sized perfectly for screen readability
- Touch Optimized: Large buttons and touch-friendly interface
- Responsive Design: Works on desktop, tablet, and mobile
- Dark Theme: Easy on the eyes for continuous display
- No Scrollbars: Designed for fullscreen without scrolling
- Node.js (v14 or higher)
- Modern web browser
- Internet connection (for weather data)
-
Clone the repository
git clone https://github.com/monkeydust/reminder-app.git cd reminder-app
-
Start the server
node server.js
-
Access the app
- Local:
http://localhost:3002
- Network:
http://YOUR_IP:3002
- Local:
- Click "+" button to add new reminder
- Set time, title, and frequency
- Choose specific days for weekly recurring tasks
- Click Save to create
- โ Mark Complete: Click checkmark when task is done
- โ๏ธ Edit: Click edit icon to modify existing reminders
- ๐๏ธ Delete: Remove unwanted reminders
- ๐๏ธ View Mode: Full-screen display for wall mounting
- Current Weather: Always visible in viewer mode
- 5-Day Forecast: Click weather card to expand forecast
- Auto-Hide: Forecast automatically hides after 10 seconds
- Manual Toggle: Click again to hide immediately
- Clean Interface: Minimal UI perfect for displays
- Test Mode: ๐งช button to test reminder progression
- Exit: โ button to return to editing mode
- Touch Friendly: Large buttons optimized for touch screens
- Port: Default 3002 (configurable in
server.js
) - Data Storage: JSON file-based storage (
reminders.json
) - CORS: Enabled for network access
- Location: London, UK (51.5074, -0.1278)
- API: Open-Meteo (free, no key required)
- Update Frequency: Every 15 minutes
- Timezone: Europe/London
- Resolution: Optimized for 1024x600 (Raspberry Pi displays)
- Scaling: 1.3x scale factor for Raspberry Pi
- Theme: Always dark mode
- Fullscreen: No scrollbars, designed for kiosk mode
# Update system
sudo apt update && sudo apt upgrade -y
# Install Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs git
# Clone and run
git clone https://github.com/monkeydust/reminder-app.git
cd reminder-app
node server.js
Create systemd service for automatic startup:
sudo nano /etc/systemd/system/reminder-app.service
[Unit]
Description=Reminder App
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/reminder-app
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Enable service:
sudo systemctl daemon-reload
sudo systemctl enable reminder-app.service
sudo systemctl start reminder-app.service
Auto-start Chromium in fullscreen:
mkdir -p ~/.config/lxsession/LXDE-pi
nano ~/.config/lxsession/LXDE-pi/autostart
Add:
@chromium-browser --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disable-features=TranslateUI --disk-cache-dir=/dev/null --password-store=basic http://localhost:3002
reminder-app/
โโโ index.html # Main application HTML
โโโ script-fixed.js # Core application logic
โโโ style.css # Styling and responsive design
โโโ server.js # Node.js web server
โโโ quotes.txt # Famous inspirational quotes (119)
โโโ reminders.json # Reminder data storage
โโโ README.md # This file
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Backend: Node.js HTTP server
- Storage: File-based JSON storage
- Weather: Open-Meteo REST API
- Responsive: CSS Grid/Flexbox with viewport units
- No Dependencies: Runs with just Node.js
- Network Ready: CORS enabled for multi-device access
- Offline Capable: Works without internet (except weather)
- Touch Optimized: Large touch targets and gestures
- Memory Efficient: Lightweight vanilla JavaScript
- โ Chrome/Chromium 80+
- โ Firefox 75+
- โ Safari 13+
- โ Edge 80+
GET /api/reminders
- Fetch all remindersPOST /api/reminders
- Create new reminderPUT /api/reminders/:id
- Update existing reminderDELETE /api/reminders/:id
- Delete reminder
- Open-Meteo API:
https://api.open-meteo.com/v1/forecast
- No API key required
- 5-day forecast with hourly data
- European weather service data
# Clone repository
git clone https://github.com/monkeydust/reminder-app.git
cd reminder-app
# Start development server
node server.js
# App will be available at http://localhost:3002
- Edit files directly
- Refresh browser to see changes
- No build process required
Edit quotes.txt
with format: Author|Quote|Year
Main Interface: Clean task management with weather display
Viewer Mode: Full-screen display perfect for wall mounting
5-Day Forecast: Expandable weather forecast with detailed information
Mobile Friendly: Responsive design works on all screen sizes
Port already in use
# Change port in server.js or kill existing process
sudo lsof -ti:3002 | xargs kill -9
Weather not loading
- Check internet connection
- Verify Open-Meteo API is accessible
- Check browser console for errors
Reminders not saving
- Verify write permissions in app directory
- Check server.js logs for errors
- Ensure sufficient disk space
Chromium won't start fullscreen
- Verify autostart file permissions
- Check X11 forwarding if using SSH
- Ensure sufficient memory allocation
Screen blanking issues
# Disable screen blanking
sudo nano /boot/config.txt
# Add: hdmi_blanking=1
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open Pull Request
This project is open source and available under the MIT License.
- Weather Data: Open-Meteo (open-source weather API)
- Inspirational Quotes: Collection from 15 famous historical figures
- Icons: Native emoji and Unicode symbols
- Raspberry Pi Foundation: For the amazing single-board computer platform
For issues, feature requests, or questions:
- ๐ Bug Reports: Use GitHub Issues
- ๐ก Feature Requests: Use GitHub Issues
- ๐ง General Support: Create GitHub Discussion
Made with โค๏ธ for productivity and daily inspiration
Perfect for home dashboards, office displays, and personal productivity setups