Skip to content

ZhFahim/anchor

Repository files navigation

Anchor

Anchor

An offline first, self hostable note taking application

Version License: AGPL v3 Docker

Anchor focuses on speed, privacy, simplicity, and reliability across mobile and web. Notes are stored locally, editable offline, and synced across devices when online.

Features

  • Rich Text Editor - Create and edit notes with powerful formatting (bold, italic, underline, headings, lists, checkboxes)
  • Note Sharing - Share notes with other users (viewer or editor)
  • Tags System - Organize notes with custom tags and colors
  • Note Backgrounds - Customize notes with solid colors and patterns
  • Pin Notes - Pin important notes for quick access
  • Archive Notes - Archive notes for later reference
  • Search - Search notes locally by title or content
  • Trash - Soft delete notes with recovery period
  • Offline-First - All edits work offline with local storage
  • Automatic Sync - Sync changes across devices when online
  • Admin Panel - User management, registration control, and system statistics

Screenshots

Web App

Web Light Mode Web Dark Mode

Mobile App

Mobile Light Mode Mobile Dark Mode

Self Hosting With Docker

Option 1: Using Pre-built Image (Recommended)

  1. Create a docker-compose.yml file:

    services:
      anchor:
        image: ghcr.io/zhfahim/anchor:latest
        container_name: anchor
        restart: unless-stopped
        ports:
          - "3000:3000"
        volumes:
          - anchor_data:/data
    
    volumes:
      anchor_data:
  2. (Optional) Configure environment: Add environment variables to the environment section. Most users can skip this step - defaults work out of the box.

    Available options:

    Variable Default Description
    JWT_SECRET (auto-generated) Auth token secret (persisted in /data)
    PG_HOST (empty) External Postgres host (leave empty for embedded)
    PG_PORT 5432 Postgres port
    PG_USER anchor Postgres username
    PG_PASSWORD password Postgres password
    PG_DATABASE anchor Database name
    USER_SIGNUP (not set) Sign up mode: disabled, enabled, or review. If not set, admins can control it via the admin panel
  3. Start the container:

    docker compose up -d
  4. Access the app: Open http://localhost:3000

Option 2: Building from Source

If you want to build from source or customize the image:

  1. Clone the project:

    git clone https://github.com/zhfahim/anchor.git
    cd anchor
  2. Start the container:

    docker compose up -d

    The docker-compose.yml file will build the image from source automatically.

Mobile App

Download the Android mobile app.

  1. Visit the releases page: Go to GitHub Releases.

  2. Download the latest release: Multiple APK files are available:

    • Universal APK (anchor-{version}.apk) - Recommended for most users, works on all devices
    • Architecture-specific APKs - Smaller file sizes for specific CPU architectures

Roadmap

Future planned features:

  • OIDC authentication
  • Media attachments (images, PDFs, recordings)
  • Real-time collaboration
  • Reminders and notifications

Tech Stack

  • Backend: Nest.js, PostgreSQL, Prisma
  • Mobile: Flutter
  • Web: Next.js, TypeScript

Contributing

  1. Fork the repository
  2. Create a feature branch:
    git checkout -b feature/your-feature
  3. Make your changes
  4. Ensure builds pass:
    • Web: cd web && pnpm build
    • Server: cd server && pnpm build
  5. Commit changes:
    git commit -m "Describe your change"
  6. Push and create a Pull Request

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL v3) - see the LICENSE file for details.

About

Offline first, self hostable note taking application

Resources

License

Stars

Watchers

Forks

Packages