share notes
Find a file
2026-02-21 00:56:42 +01:00
app fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
lib remove username, only password 2026-02-21 00:56:42 +01:00
public init commit 2026-02-20 23:37:27 +01:00
scripts now working basic auth 2026-02-21 00:22:00 +01:00
.dockerignore fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
.gitignore init commit 2026-02-20 23:37:27 +01:00
Dockerfile fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
eslint.config.mjs init commit 2026-02-20 23:37:27 +01:00
fly.toml fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
next.config.ts fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
package.json fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
pnpm-lock.yaml fly, and better markdown parsing 2026-02-21 00:45:18 +01:00
pnpm-workspace.yaml init commit 2026-02-20 23:37:27 +01:00
postcss.config.mjs init commit 2026-02-20 23:37:27 +01:00
proxy.ts remove username, only password 2026-02-21 00:56:42 +01:00
README.md remove username, only password 2026-02-21 00:56:42 +01:00
tsconfig.json init commit 2026-02-20 23:37:27 +01:00

Shared Notes

A simple, lightweight note-sharing application built with Next.js.

How it works

The application serves markdown files from the /notes directory. Each note is housed in its own subdirectory, with the subdirectory's name serving as the unique identifier (ID) for the note's URL.

File Structure

To add a new note, create a directory inside /notes with a unique ID and place a note.md file within it:

/notes
  └── [unique-id]
      └── note.md

The note will be accessible at: https://your-app-url/share/[unique-id]

Frontmatter & Behavior

Notes support YAML frontmatter for metadata.

Example note.md:

---
title: My Private Note
date: 2026-02-21
tags: [thing1, topic2]
password: mysecretpassword
---

# Hello World

This is a private note.
  • Title: Displayed as the main heading.
  • Date: Displayed as a formatted timestamp.
  • Tags: Displayed as hashtag badges.
  • Password: If present, the note will require basic authentication. The username should be left blank, and the password must match this entry. If no password is provided, the note is public.

Future TODOs

  • Fly Volumes Support: Move the /notes directory to a Fly.io persistent volume to allow dynamic updates without rebuilding the entire application.
  • Sync Script: Add a script to package.json (e.g., npm run sync-notes) that uses the Fly CLI (fly sftp shell or similar) to sync local notes directly to the running volume for faster iteration.

Note on Dynamic Updates: Since Next.js currently uses generateStaticParams to pre-render notes at build time, simply uploading a new file to a volume might not make it immediately available without a revalidation strategy or switching to dynamic rendering for the /share/[id] route.