← Back to notes

Notes App Outline/Overview

Overview.md

Notes App Outline/Overview

Yes. A Node app for this is very doable.

Notable is a good fit because its notes are plain Markdown on disk, it supports multiple data directories, and attachments are stored as files alongside the note library rather than in a proprietary database. The published tutorial also shows the expected data-directory shape as a root folder containing notes/ and attachments/. (Notable)

Here’s the clean outline I’d use.

1. Decide what the app is responsible for

Keep Notable as the authoring tool on Windows. Let your Node app do four jobs:

That keeps your notes as files first, app second.

2. Pick the storage model

Use one shared data directory as the source of truth, for example:

/home/rondoyle/notes-data/
  notes/
  attachments/

Your Windows Notable setup would point to the same library through whatever sync method you use, and the server app would treat that folder as read-only most of the time. Notable expects notes under a notes subdirectory, with attachments in a sibling attachments folder. (Notable)

3. Start with the smallest useful app

Phase 1 should be:

You do not need MySQL for version 1.

4. Suggested folder structure

Something like:

notes-app/
  app.js
  package.json
  /routes
    notes.js
  /services
    note-loader.js
    search.js
  /views
    index.ejs
    note.ejs
  /public
    styles.css
  /data   -> optional symlink to /home/rondoyle/notes-data

Or better, keep data outside the app entirely:

/home/rondoyle/apps/notes-app
/home/rondoyle/notes-data

5. Core features to build in order

Phase 1

Phase 2

Phase 3

6. Security choices

Because this is personal notes, I’d start with:

Important design rule: never trust a requested filename directly. Resolve it against the notes root and block path traversal.

7. Rendering stack

A practical stack would be:

8. How to think about Notable compatibility

Do not try to “become Notable.” Just read its files cleanly.

That means your app should assume:

So write the app around a configurable environment variable like:

NOTES_DATA_DIR=/home/rondoyle/notes-data

9. Deployment flow on your server

You already have the subdomain, SSH, and SSL working. So later it becomes:

10. Best first milestone

I’d make the first version do only this:

Once that works, everything else is much easier.

11. Recommended build order for you

  1. Create the Node/Express skeleton
  2. Point it at a test folder with 5–10 Notable notes
  3. Get Markdown rendering working
  4. Add attachment serving
  5. Add note list + search
  6. Put it under PM2
  7. Re-add Apache proxy include

12. One practical caution

Because Notable supports multiple data directories, decide early whether your site will expose:

If this is just for you, I’d start with one. Notable itself supports multiple data directories, so your app can grow into that later if needed. (Notable)

If you want, the next step can be the actual starter Express app skeleton for this.