Skip to content
/ marlin Public

Marlin: The GitHub-native, local-first note-taking app. ⚡️ Zero-latency typing, 100% data ownership. Your repository is your database.

License

Notifications You must be signed in to change notification settings

yukange/marlin

Repository files navigation

Marlin Logo

The Local-First, Git-backed note-taking app for developers.

WebsiteArchitecture

License Next.js Local First GitHub


Marlin App Screenshot

✨ Introduction

Marlin is a stream-based note-taking tool designed for those who value speed and data ownership.

Unlike traditional cloud-based apps (Notion, Evernote), Marlin does not store your notes in a proprietary database. Instead, it treats your GitHub private repository as the backend.

It leverages IndexedDB for instant, offline-capable interactions, and syncs to GitHub in the background.

👉 Try it now at marlinnotes.com

🚀 Features

  • ⚡ Zero Latency: Built on a Local-First architecture. Writing, searching, and navigating happens instantly in the browser.
  • 🔒 No Vendor Lock-in: Your notes are stored as standard Markdown files in your GitHub repo.
  • 📝 Chat-like Flow: A frictionless "Stream" interface. Just write, tag, and send.
  • 💎 Apple HIG Polish: A meticulously crafted UI with dark mode, fluid animations, and blur effects.
  • 🔌 Offline Ready: Read and write without an internet connection. Sync happens when you're back online.

🛠 Tech Stack

Marlin is built on the modern edge stack:

🏗 Architecture

How Marlin handles your data securely:

graph LR
    User[User / Browser] -- Writes --> IDB[(IndexedDB)]
    IDB -- Sync Engine --> Proxy[Edge Proxy]
    Proxy -- Encrypted Token --> GH[GitHub API]
    GH -- Markdown --> Repo[(User's Repo)]
Loading
  1. Local Write: Data is written to IndexedDB immediately.
  2. Background Sync: The Sync Engine polls for changes or pushes updates.
  3. Edge Proxy: To protect client secrets and handle CORS, requests go through a stateless Edge Worker.
  4. GitHub Storage: Final data rests in your private repository in a clean structure:
my-marlin-notes/
├── notes/
│   ├── 1734249600000.md  <-- Timestamp ID
│   └── 1734249605000.md
└── README.md

📄 License

Marlin is distributed under the Business Source License (BSL) 1.1.

  • Free for Personal Use: You can copy, modify, and run Marlin for your own personal notes.
  • Source Available: The code is open for auditing and learning.
  • Commercial Restriction: You may not use this code to offer a commercial SaaS product that competes with Marlin (i.e., a hosted note-taking service).

The license will automatically convert to MIT License (Open Source) on 2029-12-14.

🛡 Security & Privacy

  • Token Safety: Marlin never stores your GitHub Access Token in a backend database. It is stored in an encrypted HTTP-only session cookie.
  • Data Access: We cannot read your notes. Only your browser and GitHub have access to the raw data.

Built by @yukange. Crafted for Developers.

About

Marlin: The GitHub-native, local-first note-taking app. ⚡️ Zero-latency typing, 100% data ownership. Your repository is your database.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published