Skip to content

A todo list web app that syncs across multiple devices and works offline.

Notifications You must be signed in to change notification settings

thjread/Reminders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reminders

A to-do list web app focusing on robust offline and multi-device operation, and taking advantage of modern web technologies.

Hosted at https://reminders.thjread.com on Google Cloud Platform Free Tier (see https://github.com/thjread/thjread for full NGINX and Docker Compose configuration), using CloudFlare to cache static content.

Features

  • Progressive web application -- uses service workers to work offline, and can use as a standalone application on mobile (click 'Add to Home Screen')
  • Push notifications
  • Responsive design on desktop and mobile
  • Enter deadlines in human-readable form e.g. "tomorrow", "3pm Tuesday" "in 10 minutes" with Sugar
  • Pin to-dos to the top of the list to mark them as needing attention
  • Touch gestures on mobile -- swipe right to mark as done, long press to pin
  • Keyboard shortcuts
  • Undo last action
  • Maths rendering with KaTeX
  • Fluid CSS animations
  • Uses modern web security technologies such as a restrictive Content Security Policy

Technologies

Frontend:

  • Written in TypeScript and packaged using webpack
  • State management with Redux
  • Uses the lightweight Mithril Single Page Application framework
  • Offline user actions stored in localStorage

Backend:

  • Application server written in Rust using the actix-web framework
  • PostgreSQL integration with the diesel ORM
  • Stateless authentication using JSON Web Tokens
  • Push notifications with the Web Push API
  • Automated database backups to an Amazon S3 bucket

Running

Requires:

  • npm
  • Rust
  • A local PostgreSQL database
  • Diesel CLI (cargo install diesel_cli --no-default-features --features "postgres")

Frontend:

cd Frontend/reminders
npm install && npm start # start an npm server on localhost:8000

Backend:

cd Backend/reminders-server
sh keygen.sh # create a JSON Web Token secret key, and a VAPID keypair for web push notifications
diesel setup # create a database named db, and set up the schema.
cargo run    # start the backend server on localhost:3000

Screenshots

Screenshot on desktop

Screenshot on mobile Screenshot on mobile

About

A todo list web app that syncs across multiple devices and works offline.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published