{"id":51068252,"url":"https://github.com/pinkpixel-dev/notara","last_synced_at":"2026-06-23T08:31:13.421Z","repository":{"id":347193264,"uuid":"1069456460","full_name":"pinkpixel-dev/notara","owner":"pinkpixel-dev","description":"A feature-rich note-taking application with to-do lists, calendar, vision board, markdown editor, and AI assistant","archived":false,"fork":false,"pushed_at":"2026-03-27T01:33:29.000Z","size":13124,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T12:58:18.522Z","etag":null,"topics":["ai","ai-assistant","dashboard","event-tracker","image-generation","markdown","markdown-editor","note-taking","notes-app","react","task-management","task-manager","tauri","text-generation","todo","todo-list","todolist","typescript","vision-board","vite"],"latest_commit_sha":null,"homepage":"https://notara.pinkpixel.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pinkpixel-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":".github/AGENTS.md","dco":null,"cla":null},"funding":{"github":"sizzlebop","patreon":"admin@pinkpixel.dev","open_collective":"pinkpixel","ko_fi":"sizzlebop","buy_me_a_coffee":"pinkpixel","thanks_dev":"gh/sizzlebop"}},"created_at":"2025-10-04T01:18:35.000Z","updated_at":"2026-03-27T01:33:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pinkpixel-dev/notara","commit_stats":null,"previous_names":["pinkpixel-dev/notara"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/pinkpixel-dev/notara","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinkpixel-dev%2Fnotara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinkpixel-dev%2Fnotara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinkpixel-dev%2Fnotara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinkpixel-dev%2Fnotara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinkpixel-dev","download_url":"https://codeload.github.com/pinkpixel-dev/notara/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinkpixel-dev%2Fnotara/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34682622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","dashboard","event-tracker","image-generation","markdown","markdown-editor","note-taking","notes-app","react","task-management","task-manager","tauri","text-generation","todo","todo-list","todolist","typescript","vision-board","vite"],"created_at":"2026-06-23T08:31:12.681Z","updated_at":"2026-06-23T08:31:13.415Z","avatar_url":"https://github.com/pinkpixel-dev.png","language":"TypeScript","funding_links":["https://github.com/sponsors/sizzlebop","https://patreon.com/admin@pinkpixel.dev","https://opencollective.com/pinkpixel","https://ko-fi.com/sizzlebop","https://buymeacoffee.com/pinkpixel","https://thanks.dev/gh/sizzlebop","https://www.buymeacoffee.com/pinkpixel"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/logo.png\" alt=\"Notara Logo\" width=\"300\" height=\"300\"\u003e\n\u003c/div\u003e\n\n# ✨ Notara\n\n\u003e **Dream it, Pixel it** - A feature-rich note-taking application and markdown editor with AI assistant\n\n[![Version](https://img.shields.io/badge/version-1.1.1-blue.svg)](https://github.com/pinkpixel-dev/notara)\n[![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)\n[![Made with Love](https://img.shields.io/badge/made%20with-❤️-red.svg)](https://pinkpixel.dev)\n\n![Notara Screenshot](screenshot.png)\n\n## 🌟 Features\n\n### 📝 **Smart Note-Taking**\n\n- **Markdown Editor**: Rich text editing with live preview\n- **Formatting Toolbar**: One-click headings, lists, quotes, code blocks, inline styles, colour accents, and highlights without leaving the keyboard\n- **Enhanced Preview**: GitHub-flavoured tables, syntax-highlighted code, clickable links, and embedded images right beside the editor\n- **One-Click Saves**: Save button and File menu write notes instantly, with `Ctrl/Cmd+S` for active note and `Ctrl/Cmd+Shift+S` for Save All\n- **Tag Organization**: Color-coded tags plus a Settings ▸ Tags hub for adding, renaming, recolouring, and deleting tags with usage counts\n- **Pinned Notes**: Star your most important notes for quick access right from the editor header or note list\n- **Search \u0026 Filter**: Find notes instantly with powerful search\n\n### ✅ **Todo Management**\n\n- **Hierarchical Tasks**: Create todos with sub-items\n- **Time Scheduling**: Assign times to tasks and lists\n- **Daily Organization**: Organize todos by date\n- **Progress Tracking**: Check off completed items\n\n### 🎨 **Visual Organization**\n\n- **Vision Boards**: Create visual mood boards with draggable, resizable image/text cards, inline text editing, and color grouping filters\n- **Calendar View**: Organize notes and todos temporally with Upcoming + Selected Date tabs and a quick Today jump\n- **Constellations**: Visualize connections between your content\n- **Glass Theme**: App-wide glass styling with adjustable transparency/frost intensity and modern Aurora mode\n- **Refined Navigation**: Starred notes live in the main nav with footer icon chips for settings, docs, and the markdown cheat sheet, plus a persistent header icon for quick tag management\n\n### 🤖 **AI Assistant**\n\n- **Writing Support**: AI-powered content generation and editing\n- **Generate Images**: AI-generated images on demand for your notes, documents, and boards\n- **Seamless Pollinations Proxy**: Requests route through `/api/pollinations/*` so the browser avoids CORS issues and uses your configured API key/model selections\n- **Note Summaries**: Automatic summarization of long notes\n- **Creative Prompts**: Generate ideas and writing inspiration\n- **Context Awareness**: AI understands your existing content\n- **Session Continuity**: Active chat stays intact while navigating during a session\n- **Save Workflows**: Save chats to archive + markdown notes, and save generated images into Vision Boards/local media\n\n### 💾 **Local File Storage**\n\n- **Automatic Desktop Storage**: Tauri builds now save into Notara's app-data workspace automatically, with no folder-picking required\n- **Automatic \u0026 Manual Backups**: Notes, tags, todos, and vision boards write through to disk as you work or whenever you press Save\n- **Readable Local Files**: Desktop data is stored as JSON and markdown files inside Notara's local workspace\n\n### 🔄 **Local-First Workspace**\n\n- **On-Disk Sync**: Desktop builds work against readable JSON files in Notara's local app-data workspace\n- **Cloud-Agnostic**: No external auth or Supabase project required—set `VITE_ENABLE_AUTH=true` only if you purposely want Supabase sign-in\n- **Browser Fallback**: Web builds still use browser storage when local files are unavailable\n- **Portable Data**: Copy the Notara workspace directory anywhere to migrate your vault\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Node.js** 18+\n- **npm** or **yarn**\n- **Git**\n- **Rust** toolchain for desktop builds\n- Linux desktop build deps for Tauri on Debian/Ubuntu:\n  ```bash\n  sudo apt-get update\n  sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf\n  ```\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/pinkpixel-dev/notara.git\n   cd notara\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   # or\n   yarn install\n   ```\n\n3. **Set up environment variables**\n\n   ```bash\n   cp .env.example .env\n   ```\n\n   Only the Pollinations token is optional if you want authenticated AI image requests:\n\n   ```env\n   VITE_POLLINATIONS_API_TOKEN=optional_pollinations_token\n   VITE_ENABLE_AUTH=false\n   ```\n\n   \u003e **Optional**: Add `VITE_POLLINATIONS_API_TOKEN` when you have a Pollinations key and want the AI assistant to include an `Authorization` header. Cloudflare Pages deployments should mirror this value via `wrangler secret put POLLINATIONS_API_TOKEN`. Set `VITE_ENABLE_AUTH=true` (and supply Supabase keys) only if you intend to use the legacy authentication flows.\n\n4. **Start development server**\n\n   ```bash\n   npm run dev\n   # or\n   yarn dev\n   ```\n\n5. **Open your browser**\n\n   Navigate to `http://localhost:3489`\n\n## 📦 Downloads\n\nDirect download links for `v1.1.1`:\n\n- [Linux `.deb`](https://pub-7910a730d724411db0d8fb3f65278e6a.r2.dev/Notara_1.1.1_amd64.deb)\n- [Linux `.rpm`](https://pub-7910a730d724411db0d8fb3f65278e6a.r2.dev/Notara-1.1.1-1.x86_64.rpm)\n- [Linux `AppImage`](https://pub-7910a730d724411db0d8fb3f65278e6a.r2.dev/Notara_1.1.1_amd64.AppImage)\n- [Windows installer](https://pub-7910a730d724411db0d8fb3f65278e6a.r2.dev/Notara_1.1.1_x64-setup.exe)\n\nAvailable installation options:\n\n- Tauri Linux packages: `.deb`, `.rpm`, and `AppImage`\n- Windows NSIS installer\n- Docker container for the web runtime\n- Cloudflare Pages deployment for hosted web installs\n\n## 🏗️ Build \u0026 Deploy\n\n### Development Build\n\n```bash\nnpm run build:dev\n```\n\n### Production Build\n\n```bash\nnpm run build\n```\n\n### Desktop Development\n\n```bash\nnpm run tauri:dev\n```\n\n### Linux Desktop Bundles\n\nBuild Linux installers locally:\n\n```bash\nnpm run tauri:build:linux\n```\n\nArtifacts are written to:\n\n- `src-tauri/target/release/bundle/deb/`\n- `src-tauri/target/release/bundle/rpm/`\n- `src-tauri/target/release/bundle/appimage/`\n\nDesktop data is written to Notara's Tauri app-data folder. On Linux this is typically:\n\n- `~/.local/share/dev.pinkpixel.notara/workspace/`\n\nIf `XDG_DATA_HOME` is set, Tauri will use that location instead of `~/.local/share`.\n\nIf you are building on a rolling-release Linux distro, AppImage packaging may fail because `linuxdeploy` can lag behind newer system linker formats. The included GitHub Actions workflow builds Linux bundles on `ubuntu-22.04`, which is the most reliable path for AppImage output.\n\nNotara now sets `NO_STRIP=YES` for the Linux Tauri packaging script to work around `linuxdeploy` strip failures on newer distros such as Arch.\n\n### Docker\n\nBuild a Docker image:\n\n```bash\ndocker build -t notara:latest .\n```\n\nRun the container:\n\n```bash\ndocker run --rm -p 3489:3489 \\\n  -e POLLINATIONS_API_TOKEN=your_optional_pollinations_token \\\n  notara:latest\n```\n\nThen open:\n\n- `http://localhost:3489`\n\nThe Docker image serves the built SPA and also provides `/api/pollinations/text` and `/api/pollinations/image`, so the web app keeps its AI functionality inside the container. If you do not pass `POLLINATIONS_API_TOKEN`, users can still provide their own Pollinations key in Settings.\n\n### Windows Installer via GitHub Actions\n\nThis repository now includes a GitHub Actions workflow at `.github/workflows/windows-installer.yml`.\n\n- Trigger it manually from the Actions tab, or\n- Push a tag like `v1.1.1`\n\nThe workflow builds an NSIS Windows installer and uploads it as both:\n\n- a GitHub Actions artifact\n- a draft GitHub release asset for tagged builds\n\n### Deploy to Cloudflare\n\n```bash\nnpm run deploy\n```\n\nEnsure the following secrets exist in your Cloudflare Pages project before deploying:\n\n- `POLLINATIONS_API_TOKEN` _(optional but recommended if you rely on authenticated Pollinations requests)_\n\n### Deploy docs website to Cloudflare Pages\n\nThe docs site in [`website/`](/home/sizzlebop/PINKPIXEL/PROJECTS/CURRENT/notara/website) now has its own Wrangler Pages config at [`website/wrangler.jsonc`](/home/sizzlebop/PINKPIXEL/PROJECTS/CURRENT/notara/website/wrangler.jsonc), so it can be built and deployed independently from the root app.\n\n```bash\ncd website\nnpx wrangler whoami\nnpm run deploy\n```\n\nUseful website-local commands:\n\n- `npm run cf:dev` builds the docs and serves the output through Cloudflare Pages locally\n- `npm run deploy` creates a Pages deployment for the `notara-docs` project\n- `npm run deploy:production` deploys the docs to the `main` production branch\n\n## 🛠️ Technology Stack\n\n### Frontend\n\n- **React** 19.1.1 - Modern React with hooks\n- **TypeScript** - Type safety and developer experience\n- **Vite** - Fast build tool and dev server\n- **React Router** 7.9.2 - Client-side routing\n- **TailwindCSS** - Utility-first CSS framework\n- **shadcn/ui** - High-quality React components\n- **Radix UI** - Accessible component primitives\n- **Prism React Renderer** - Fast, themeable syntax highlighting for markdown code blocks\n\n### Storage \u0026 Integrations\n\n- **Tauri AppData Storage** - Desktop persistence in Notara's local workspace directory\n- **Browser Storage API** - Local IndexedDB fallback for web builds\n- **Pollinations Proxy** - Chat and image generation helper\n\n### State Management\n\n- **React Context** - Built-in state management\n- **React Query** - Server state management and caching\n\n### Routing \u0026 Navigation\n\n- **React Router** - Client-side routing\n\n## 📱 UI/UX Features\n\n- **🌙 Glass Theme**: Beautiful frosted glass effects\n- **📱 Responsive Design**: Works perfectly on all devices\n- **⚡ Fast Performance**: Optimized for speed and efficiency\n- **🎯 Intuitive Interface**: Clean and focused user experience\n- **🔍 Smart Search**: Instant search across all content\n- **📐 Resizable Panels**: Customize your workspace layout\n- **⌨️ Keyboard Shortcuts**: Quickly save (`Ctrl/Cmd+S`) or save everything (`Ctrl/Cmd+Shift+S`) without leaving the editor\n\n## 🔧 Development\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development setup and guidelines.\n\n### Key Scripts\n\n```bash\nnpm run dev        # Start development server\nnpm run build      # Build for production\nnpm run lint       # Run ESLint\nnpm run preview    # Preview production build\nnpm run tauri:dev  # Run the Tauri desktop app in development\nnpm run tauri:build:linux # Build .deb, .rpm, and AppImage bundles\n```\n\n### Desktop Notes\n\n- The Tauri desktop shell is configured and uses `public/icon.png` for installer icons.\n- Desktop builds now persist data automatically in the Tauri app-data workspace at `~/.local/share/dev.pinkpixel.notara/workspace/` on Linux, or the equivalent `XDG_DATA_HOME` path.\n- Pollinations-backed AI text and image requests now use Tauri's native HTTP client in desktop builds, so the assistant is no longer blocked on the web proxy routes.\n- The to-do list dialogs use an in-app calendar picker in desktop builds to avoid native WebKit date-picker freezes.\n\n### Docker Notes\n\n- The Docker runtime serves the prebuilt frontend from `dist/`.\n- A small Node server in `docker/server.mjs` handles SPA routing and the Pollinations proxy endpoints.\n- Docker does not provide the Tauri desktop filesystem features; use the Tauri builds when you want local desktop app storage under `~/.local/share/dev.pinkpixel.notara/workspace/`.\n\n## 📋 Roadmap\n\n- [ ] **Offline Support**: PWA capabilities with offline editing\n- [ ] **Export Options**: PDF, HTML, and other format exports\n- [ ] **Collaboration**: Share notes and collaborate in real-time\n- [ ] **Plugin System**: Extensible plugin architecture\n- [ ] **Mobile App**: Native iOS and Android applications\n- [ ] **Cloud Sync**: Bring-your-own backend integrations post-local-first launch\n- [ ] **Advanced AI**: More AI features and integrations\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📝 License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## 🙋‍♂️ Support\n\n- **Website**: [pinkpixel.dev](https://pinkpixel.dev)\n- **Email**: [admin@pinkpixel.dev](mailto:admin@pinkpixel.dev)\n- **GitHub Issues**: [Report bugs or request features](https://github.com/pinkpixel-dev/notara/issues)\n- **Discord**: @sizzlebop\n\n## ✨ About Pink Pixel\n\n**Made with ❤️ by Pink Pixel**\n\nPink Pixel specializes in creating beautiful, modern applications that enhance productivity and creativity.\n\n- 🌐 **Website**: [pinkpixel.dev](https://pinkpixel.dev)\n- 💜 **GitHub**: [github.com/pinkpixel-dev](https://github.com/pinkpixel-dev)\n- ☕ **Support**: [Buy me a coffee](https://www.buymeacoffee.com/pinkpixel)\n\n---\n\n**Dream it, Pixel it** ✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinkpixel-dev%2Fnotara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinkpixel-dev%2Fnotara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinkpixel-dev%2Fnotara/lists"}