{"id":49299638,"url":"https://github.com/mrlemoos/nota.app","last_synced_at":"2026-04-26T06:01:11.865Z","repository":{"id":349437876,"uuid":"1192366592","full_name":"mrlemoos/nota.app","owner":"mrlemoos","description":"Think clearly. Write slowly.","archived":false,"fork":false,"pushed_at":"2026-04-22T07:09:10.000Z","size":9746,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T08:17:54.869Z","etag":null,"topics":["markdown","note","notes","notes-app","nx","react","react-router","vite"],"latest_commit_sha":null,"homepage":"https://nota.mrlemoos.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrlemoos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"polar":null,"lfx_crowdfunding":null,"buy_me_a_coffee":"leolemos","thanks_dev":null,"custom":null}},"created_at":"2026-03-26T06:26:23.000Z","updated_at":"2026-04-22T07:09:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mrlemoos/nota.app","commit_stats":null,"previous_names":["mrlemoos/nota.app"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/mrlemoos/nota.app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlemoos%2Fnota.app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlemoos%2Fnota.app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlemoos%2Fnota.app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlemoos%2Fnota.app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrlemoos","download_url":"https://codeload.github.com/mrlemoos/nota.app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlemoos%2Fnota.app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32287398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"online","status_checked_at":"2026-04-26T02:00:05.962Z","response_time":129,"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":["markdown","note","notes","notes-app","nx","react","react-router","vite"],"created_at":"2026-04-26T06:01:09.114Z","updated_at":"2026-04-26T06:01:11.859Z","avatar_url":"https://github.com/mrlemoos.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/leolemos"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eNota\u003c/h1\u003e\n\u003c/div\u003e\n\n![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/mrlemoos/nota.app?utm_source=oss\u0026utm_medium=github\u0026utm_campaign=mrlemoos%2Fnota.app\u0026labelColor=171717\u0026color=FF570A\u0026link=https%3A%2F%2Fcoderabbit.ai\u0026label=CodeRabbit+Reviews)\n\n## Philosophy\n\nYou know the feeling: you open something to think, and the software starts performing (offering, suggesting, nudging) until the room for your own pace shrinks. Useful automation has its place elsewhere; in a notes app, that itch to always *do something next* can mistake motion for thinking.\n\n[Nota](https://nota.mrlemoos.dev) treats your attention as something to **protect**, not to harvest. It gives you a steady place to write and arrange ideas, and it steps back when you pause so your mind can do the unglamorous part: wandering, revising, waiting for the right phrase without the product trying to entertain the lull.\n\nWe leave silence alone on purpose. Boredom at the cursor is the sound of a thought catching up.\n\n## What it is\n\n![A macOS screenshot of the welcome screen of Nota with a button to start.](assets/welcome-screen.png \"Welcome screen\")\n\nNota is a personal notes app built as an [Nx](https://nx.dev) monorepo. \n\nThe main client ([apps/nota.app](apps/nota.app)) is a **Vite** single-page app with **React 19**; in-app navigation uses the location **hash** (see `app/lib/app-navigation.ts`). \n\nNotes use **Supabase** (Postgres, Storage, and row-level security) with **Clerk** for sign-in (third-party JWTs). The editor is **TipTap** (ProseMirror). \n\nSubscriptions use **Clerk Billing** (checkout in the SPA; server-side entitlement checks on Vercel `api/*` or optional **[nota-server](apps/nota-server)**). \n\nAn **Electron** desktop shell wraps the same build—see [apps/nota-electron/README.md](apps/nota-electron/README.md). The public marketing site lives in [apps/nota-marketing](apps/nota-marketing) (Astro).\n\n## Requirements\n\n- **Node.js** 22 or newer (see root `package.json` `engines`)\n- **pnpm** 10.x (see root **`packageManager`** in [`package.json`](package.json); [`pnpm-workspace.yaml`](pnpm-workspace.yaml) lists workspace packages)\n\n## Install\n\nFrom the repository root:\n\n```sh\ncorepack enable pnpm\npnpm install\n```\n\n## Environment\n\nCopy [apps/nota.app/.env.example](apps/nota.app/.env.example) to `apps/nota.app/.env` and set at least:\n\n- `VITE_SUPABASE_URL` — your Supabase project URL\n- `VITE_SUPABASE_ANON_KEY` — your Supabase anon (public) key\n\nFor Clerk sign-in and subscription flows, follow the same file for `VITE_CLERK_PUBLISHABLE_KEY`, optional `VITE_NOTA_SERVER_API_URL`, and **server-only** secrets (`CLERK_SECRET_KEY`, etc.—never commit real values). Schema, RLS policies, and migrations are applied in Supabase from the SQL in this repo—environment variables alone do not create the database.\n\n## Database\n\nSQL migrations live under [supabase/migrations/](supabase/migrations/) at the repository root. If you use the [Supabase CLI](https://supabase.com/docs/guides/cli), link your project and apply migrations with your usual workflow (for example `supabase db push` against a linked project, or local `supabase start` for development).\n\n## Run the web app\n\n```sh\npnpm exec nx dev @nota.app/nota.app\n```\n\n(`pnpm exec nx dev nota.app` resolves to the same project.)\n\nThe Vite dev server listens on **[http://localhost:4200](http://localhost:4200)**.\n\n## Marketing site (local)\n\n```sh\npnpm exec nx run @nota.app/nota-marketing:dev\n```\n\n## Optional API server\n\nFor Nota Pro entitlement and related routes outside Vercel serverless, run [nota-server](apps/nota-server) and point the SPA at it with `VITE_NOTA_SERVER_API_URL`. See [apps/nota-server/README.md](apps/nota-server/README.md).\n\n## Build and test\n\n```sh\npnpm exec nx build @nota.app/nota.app\npnpm exec nx test @nota.app/nota.app\n```\n\nTests use **Vitest** via the Nx Vitest plugin.\n\n## Electron\n\nThe desktop app expects the web dev server at `http://localhost:4200`. From the repository root you can run:\n\n- `pnpm run electron:dev` — Electron only (start the web app in another terminal with `pnpm exec nx dev @nota.app/nota.app`, or run `pnpm exec nx run-many -t dev` to start Vite and Electron together)\n\nMore detail: [apps/nota-electron/README.md](apps/nota-electron/README.md).\n\n## Repository layout\n\n\n| Path                   | Purpose                                              |\n| ---------------------- | ---------------------------------------------------- |\n| `apps/nota.app/`       | Main Vite SPA (notes, auth, TipTap)                  |\n| `apps/nota-electron/`  | Electron shell                                       |\n| `apps/nota-server/`    | Optional Node API (entitlement, shared server logic) |\n| `apps/nota-marketing/` | Astro marketing site                                 |\n| `supabase/`            | Supabase config and SQL migrations                   |\n| `assets/`              | Shared assets (e.g. screenshots for docs)            |\n\n\n## Licence\n\nApache License 2.0 — see [LICENSE](LICENSE) and [package.json](package.json).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrlemoos%2Fnota.app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrlemoos%2Fnota.app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrlemoos%2Fnota.app/lists"}