Skip to content

goatplatform/todo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Self-Hosted Minimalistic Todo List

✨ Try it yourself at todo.goatdb.dev! ✅

A simple, minimalistic, self-hosted todo list application powered by GoatDB. This application demonstrates how to build a Single Page Application (SPA) with user authentication and data persistence using GoatDB's server framework.

Features

  • User authentication and registration
  • Create, update, and delete todo items
  • Easy self-hosting on your own infrastructure
  • Clients continue functioning even when the server is offline
  • Realtime collaboration engine synchronizes changes across clients

Roadmap

  • Update to Material UI
  • Easier way to configure server
  • Deadline reminder notifications
  • Multiple todo lists per user
  • Share todo lists with others

Screenshots

Screenshot 2025-02-24 at 14 30 55

Quick Start

  1. Clone this repository
  2. Configure email settings in server/server.ts (supports SMTP or AWS SES via NodeMailer)
  3. Run deno task debug to start the development server
  4. Visit http://localhost:8001 to access your todo list

Email Configuration

Edit server/server.ts to configure email settings.

Example SMTP configuration (see https://nodemailer.com/smtp/):

// In main() function
const server = new Server({
  // ... other server config ...
  emailConfig: {
    host: "smtp.gmail.com",
    port: 587,
    secure: true,
    auth: {
      user: "user@gmail.com",
      pass: "app-specific-password",
    },
    from: "system@my.domain.com",
  },
});

Example Amazon SES configuration (see https://nodemailer.com/ses/):

// Insert this import at the top of the file
import { SendRawEmailCommand, SES } from "npm:@aws-sdk/client-ses";

// In main() function
const server = new Server({
  // ... other server config ...
  emailConfig: {
    SES: {
      ses: new SES({ region: "us-east-1" }),
      aws: { SendRawEmailCommand },
    },
    from: "system@my.domain.com",
  },
});

Deployment

deno task build

This demo is currently deployed on a single t4g.nano EC2 instance that is shared with other projects. Thanks to GoatDB's distributed architecture, clients act as active replicas of the data. If the server fails, clients retain full functionality and can restore server state when it comes back online. This provides resilience against server outages without requiring complex infrastructure.

A systemd service file is provided at server/todo.service which you can use as a starting point for running the server as a system service on your own Linux server.

Backup and Restore

Backing up your todo list data is straightforward. Simply zip the server's data directory (specified when starting the server, defaults to todo-data in the current directory)

About

Self-Hosted Minimalistic Todo List

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published