Skip to content

NextAgentBC/NextNote

Repository files navigation

NextNote

License: PolyForm NC 1.0 macOS 14+ Swift 6.0 Release Stars

Local-first macOS app for Markdown notes, EPUB reading, and media playback. Three separate on-disk roots (Notes / Media / Ebooks), multi-provider AI (on-device MLX + remote OpenAI-compatible + Gemini), optional YouTube downloads via yt-dlp. No account, no telemetry. macOS 14+.

Quick start

brew install xcodegen            # one-time
# optional (enables YouTube downloads):
brew install yt-dlp ffmpeg

git clone https://github.com/NextAgentBC/NextNote.git
cd NextNote
make build                       # xcodegen + xcodebuild + ad-hoc sign
make run                         # launch nextNote.app

First launch: pick (or accept defaults for) three folders — Notes, Media, Ebooks — under ~/Documents/nextNote/. Everything else is configured from Settings and Library menu.

Features

  • Notes. Plain .md files on disk, folder tree in the sidebar, Markdown editor with split preview, search, tabs, focus mode, per-note chat, dashboard, daily digest.
  • Ebooks. .epub reader inline: TOC, page turn (click edge / arrows / space), highlights, fonts, themes. Auto-scanned from the Ebooks root.
  • Media. Music and video auto-scanned from the Media root. Click a track → AmbientPlayer starts; click a video → inline MediaPlayerView.
  • AI. Polish / summarize / translate / grammar / continue writing. Swap providers in Settings — MLX on-device, remote OpenAI-compatible (Ollama, vLLM, LM Studio, any HTTP endpoint), or Google Gemini (free tier with automatic key rotation).
  • YouTube. Paste URL → yt-dlp downloads to the Media folder (mp3 / mp4). Needs yt-dlp installed; ffmpeg unlocks mp3 + ≥1080p video.

Build targets

make gen      # regenerate nextNote.xcodeproj via xcodegen
make build    # Debug build + ad-hoc code sign (survives iCloud xattrs)
make run      # build + launch
make clean    # nuke generated project + build output

Build artifacts live in build.nosync/ — the .nosync suffix keeps iCloud Documents from syncing a multi-GB bundle.

Project shape

nextNote/
├── Makefile                 build targets
├── project.yml              xcodegen config
├── TUTORIAL.md              full reference for contributors
├── nextNote/
│   ├── nextNoteApp.swift    @main; scene + env object wiring
│   ├── Models/              data types + SwiftData @Models
│   ├── Services/            business logic
│   │   ├── AI/              LLMProvider + MLX / remote / Gemini impls
│   │   ├── Audio/           AmbientPlayer + legacy MediaLibrary
│   │   ├── Chat/            per-note chat sessions
│   │   ├── Dashboard/       pinned notes + AI rollup view service
│   │   ├── Digest/          daily digest rollups
│   │   ├── Download/        yt-dlp locator + downloader + search
│   │   ├── EPUB/            parser + importer + book-library scanner
│   │   ├── Media/           MediaCatalog (music + video scan for sidebar)
│   │   ├── Security/        Keychain
│   │   └── Vault/           LibraryRoots + VaultStore + NoteIO
│   ├── Views/               SwiftUI — grouped by feature
│   ├── Utilities/           menu commands
│   └── Resources/           Info.plist, Assets.xcassets
└── build.nosync/            generated

Dependencies

All pulled via SwiftPM (see project.yml):

Apple platform frameworks only beyond those.

Status

v0.1. Features listed above are working. Test target not added yet — high-value candidates are in TUTORIAL.md.

License

PolyForm Noncommercial License 1.0.0 — source-available, free for personal / research / nonprofit / educational use. Commercial use is not granted. For a commercial license, contact NextAgentBC via GitHub. See also NOTICE.

Note: PolyForm Noncommercial is a source-available license, not an OSI-approved open-source license — the OSI definition prohibits field-of-use restrictions, and "noncommercial only" is one. The source is public, forkable, and modifiable for any noncommercial purpose.

About

Local-first macOS app for Markdown notes, EPUB reading, and media — multi-provider AI (MLX / Ollama / Gemini), per-note chat, YouTube download via yt-dlp. SwiftUI + SwiftData.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors