128.io Bookmark Manager

Concept

Bookmark manager, taking inspiration from del.icio.us

Features

UI Routes

Route Description
GET / Redirects to /ui/bookmarks
GET /ui Redirects to /ui/bookmarks
GET /ui/bookmarks List bookmarks
POST /ui/bookmarks/create Create bookmark
GET /ui/bookmarks/:id/delete Delete bookmark confirmation
POST /ui/bookmarks/:id/delete Delete bookmark

Database Schema

Global Tables

  -- Written for SQLite, would need to be adjusted for other databases
  CREATE TABLE urls (
    id integer NOT NULL,
    url string NOT NULL,
    title string NULL, -- Crawled title
    created_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
    PRIMARY KEY(id AUTOINCREMENT),
    UNIQUE(url)
  );
  

User Tables

  -- Written for SQLite, would need to be adjusted for other databases
  CREATE TABLE bookmarks (
     id integer NOT NULL,
     url_id integer NOT NULL,
     title string NULL, -- user-entered title
     created_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
     PRIMARY KEY(id AUTOINCREMENT),
     FOREIGN KEY(url_id) REFERENCES urls(id)
  );

  CREATE TABLE lists (
     id integer NOT NULL,
     title string NULL,
     created_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
     PRIMARY KEY(id AUTOINCREMENT)
  );

  CREATE TABLE lists_bookmarks (
     list_id integer NOT NULL,
     bookmark_id integer NOT NULL,
     created_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
     FOREIGN KEY(list_id) REFERENCES lists(id),
     FOREIGN KEY(bookmark_id) REFERENCES bookmarks(id),
     PRIMARY KEY(list_id, bookmark_id)
  );
  

Future Ideas