Skip to content

tianma-if/edgeever

Repository files navigation

EdgeEver

简体中文 | English

EdgeEver: A serverless, 100% free, open-source, and AI-native self-hosted Evernote alternative on Cloudflare.

EdgeEver is an open-source, self-hosted, Cloudflare-native notes workspace. It keeps the classic Evernote-style three-pane experience while providing a clear data model, REST API, OpenAPI schema, Remote MCP endpoint, and native AI Agent integration.

💡 Serverless & 100% Free Forever EdgeEver uses a pure Serverless architecture. No server purchase or VPS rental is required, and there is no need to configure Docker or SSL certificates. By running within Cloudflare's free quotas, personal use is 100% free with zero maintenance.

Why EdgeEver

Many long-time Evernote users only need a reliable, open, responsive personal knowledge base. But modern commercial notes apps are often heavier than necessary, harder to migrate away from, and increasingly shaped by subscription and add-on features.

EdgeEver fills that gap: familiar notes interaction, open data, API access, MCP support, and self-hosted deployment that is practical for individuals.

Online Demo

The public demo resets daily and restores sample notes. Do not store private content there.

Deployment

Deploy with an AI Agent

Copy this prompt into your AI coding assistant, such as Claude Code, Codex, Antigravity, Cursor, or Trae:

Please fork the EdgeEver repository first: https://github.com/tianma-if/edgeever

After the fork is ready, use the forked repository to install and deploy EdgeEver to Cloudflare, and configure automatic upstream sync for the fork so future product updates can be pulled in.

Agents should follow AI Agent Cloudflare Deployment.

Common pitfall: Cloudflare R2, D1, and Workers may still require a Visa card during activation or usage, even when you stay within the free quotas.

Manual Deployment

  1. Fork the official repository:

    https://github.com/tianma-if/edgeever
    
  2. Clone your fork:

    git clone <your fork repository URL>
    cd edgeever
  3. Deploy with the helper commands:

    cp .env.local.example .env.local
    bun install
    EDGE_EVER_PASSWORD='<your password>' bun run deploy:setup
    bun run deploy:doctor
    bun run deploy

If you prefer creating Cloudflare resources manually:

cp .env.local.example .env.local
bun install
bunx wrangler d1 create edgeever
bunx wrangler r2 bucket create edgeever-resources
bun run auth:hash -- <your password>
bun run deploy

Put the returned D1 database_id and password hash into your local .env.local.

Updating

If you deployed from a fork:

  1. Open your EdgeEver fork on GitHub.

  2. Click Sync fork to pull the latest official code.

  3. Redeploy locally:

    git pull
    bun install
    bun run deploy:doctor
    bun run deploy

Syncing the fork only updates your GitHub repository. You still need to redeploy for the Cloudflare instance to change.

Features

  • Serverless, 100% free, and zero maintenance: Built on Cloudflare's Serverless architecture, running entirely within free tiers. Store up to 150k notes and 50k images without any hosting fees.
  • Open data: notes are stored in Cloudflare D1, based on standard SQLite, and can be read through REST API, MCP, and CLI.
  • AI Agent friendly: built-in MCP support lets tools such as Codex, Claude Code, and Antigravity read and organize notes with authorization.
  • Uncapped multi-device sync: self-hosted API means no restrictive commercial limits on the number of active login devices, supporting seamless synchronization across PC, tablet, and mobile (via PWA or browser).
  • Three-pane layout: notebook tree, note list, and main editor.
  • Unlimited nested notebooks.
  • Rich text editing.
  • Note version history for reviewing previous content changes.
  • Local browser-side image compression before upload, often reducing screenshots and large photos by about 50%-90%.
  • Batch note merging.
  • Batch note moving, notebook drag sorting, and hierarchy editing.
  • Offline drafts and local sync queue for existing notes.
  • Single-user login with PBKDF2-SHA256 password hashing.

PWA Installation

EdgeEver can be installed as a PWA on desktop or mobile home screens. On desktop, open the site in Chrome or Edge and use the install icon in the address bar. On Android, open it in Chrome, use the three-dot menu, and choose Add to Home screen or Install. Avoid installing from embedded browsers such as WeChat.

Tech Stack

  • Bun workspace monorepo with Web, API, official site, and shared type package.
  • Official site: Astro static site in apps/site, deployable to Cloudflare Pages.
  • Frontend: Vite, React, React Router, TanStack Query, Tailwind CSS, shadcn/ui, and Radix UI.
  • Editor: TipTap / ProseMirror with Markdown support; PWA uses vite-plugin-pwa, Workbox, and Dexie.
  • Backend: Cloudflare Workers, Hono, Zod, D1, and R2, with REST API, OpenAPI, and Remote MCP.

Quick Start

Install dependencies:

bun install

Apply local D1 migrations:

bun run db:migrate:local

Start local development:

bun run dev

Checks:

bun run typecheck
bun run build

Project Structure

apps/web          Vite + React frontend, PWA, offline drafts, and sync queue
apps/api          Cloudflare Worker + Hono API, OpenAPI, MCP endpoint
apps/site         Astro official website, deployable independently
packages/shared   Shared types, Zod schemas, TipTap / Markdown conversion
scripts           Wrangler wrapper, password hash, CLI, MCP stdio bridge, Evernote ENEX import
migrations        D1 database migrations
docs              OpenAPI schema, migration guides, and deployment docs
wrangler.toml     Cloudflare Workers, Assets, D1, R2 configuration

Content Formats

EdgeEver stores note content in three forms:

content_json      TipTap/ProseMirror document, the editor source of truth
content_markdown  API, Agent, import, and export format
content_text      Search, summary, and indexing text

API

OpenAPI schema:

https://your-domain/api/openapi.json

Repository file: docs/openapi.json.

MCP

Create an API token in Profile -> MCP settings, then copy either the token or full MCP configuration into your AI Agent so it can install the MCP server and read or organize notes with permission.

Image Compression

Image compression happens in the Web client before upload and is controlled by the Compress note images setting. When enabled, PNG, JPEG, WebP, and AVIF files are converted to WebP when beneficial, with the longest edge limited to 2560px. If compression does not reduce size, the original file is kept.

EdgeEver avoids Worker-side image processing to reduce compute and image-processing quota usage. REST API and MCP upload paths store the file content provided by the client without additional server-side compression.

Migration

If you want to migrate notes from other platforms to EdgeEver, please refer to the following simple migration guides:

Community and Feedback

  • Bugs, feature requests, and deployment issues: GitHub Issues
  • WeChat: m1245207870 (please mention EdgeEver)

About

Serverless, 100% free, and open-source Evernote alternative on Cloudflare with native MCP | 无需服务器、0费用、原生支持 AI Agent 的开源自托管『印象笔记』

Topics

Resources

License

Stars

78 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors