An offline first, self hostable note taking application
Anchor focuses on speed, privacy, simplicity, and reliability across mobile and web. Notes are stored locally, editable offline, and synced across devices when online.
- 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
-
Create a
docker-compose.ymlfile:services: anchor: image: ghcr.io/zhfahim/anchor:latest container_name: anchor restart: unless-stopped ports: - "3000:3000" volumes: - anchor_data:/data volumes: anchor_data:
-
(Optional) Configure environment: Add environment variables to the
environmentsection. 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_PORT5432Postgres port PG_USERanchorPostgres username PG_PASSWORDpasswordPostgres password PG_DATABASEanchorDatabase name USER_SIGNUP(not set) Sign up mode: disabled,enabled, orreview. If not set, admins can control it via the admin panel -
Start the container:
docker compose up -d
-
Access the app: Open http://localhost:3000
If you want to build from source or customize the image:
-
Clone the project:
git clone https://github.com/zhfahim/anchor.git cd anchor -
Start the container:
docker compose up -d
The
docker-compose.ymlfile will build the image from source automatically.
Download the Android mobile app.
-
Visit the releases page: Go to GitHub Releases.
-
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
- Universal APK (
Future planned features:
- OIDC authentication
- Media attachments (images, PDFs, recordings)
- Real-time collaboration
- Reminders and notifications
- Backend: Nest.js, PostgreSQL, Prisma
- Mobile: Flutter
- Web: Next.js, TypeScript
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature
- Make your changes
- Ensure builds pass:
- Web:
cd web && pnpm build - Server:
cd server && pnpm build
- Web:
- Commit changes:
git commit -m "Describe your change" - Push and create a Pull Request
This project is licensed under the GNU Affero General Public License v3.0 (AGPL v3) - see the LICENSE file for details.



