{"id":24604199,"url":"https://github.com/sergeysova/craft","last_synced_at":"2025-10-27T06:13:45.896Z","repository":{"id":194323719,"uuid":"689629259","full_name":"sergeysova/craft","owner":"sergeysova","description":"Notion-style WYSIWYG editor with AI extensions support","archived":false,"fork":false,"pushed_at":"2024-08-26T14:30:16.000Z","size":91317,"stargazers_count":37,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-09T02:00:02.478Z","etag":null,"topics":["tiptap","typescript"],"latest_commit_sha":null,"homepage":"https://craft.sova.dev","language":"TypeScript","has_issues":false,"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/sergeysova.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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},"funding":{"custom":["https://polar.sh/sergeysova"]}},"created_at":"2023-09-10T12:25:17.000Z","updated_at":"2025-08-26T21:22:33.000Z","dependencies_parsed_at":"2023-09-12T22:35:40.339Z","dependency_job_id":"48ec3221-4927-4660-98b4-36b967a6b71c","html_url":"https://github.com/sergeysova/craft","commit_stats":null,"previous_names":["sergeysova/craft"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/sergeysova/craft","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergeysova%2Fcraft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergeysova%2Fcraft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergeysova%2Fcraft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergeysova%2Fcraft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sergeysova","download_url":"https://codeload.github.com/sergeysova/craft/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergeysova%2Fcraft/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281224179,"owners_count":26464287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"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":["tiptap","typescript"],"created_at":"2025-01-24T15:17:35.061Z","updated_at":"2025-10-27T06:13:45.851Z","avatar_url":"https://github.com/sergeysova.png","language":"TypeScript","funding_links":["https://polar.sh/sergeysova"],"categories":[],"sub_categories":[],"readme":"\u003c!-- \u003ca href=\"https://novel.sh\"\u003e\n  \u003cimg alt=\"Novel is a Notion-style WYSIWYG editor with AI-powered autocompletions.\" src=\"https://novel.sh/opengraph-image.png\"\u003e\n  \u003ch1 align=\"center\"\u003eNovel\u003c/h1\u003e\n\u003c/a\u003e --\u003e\n\n\u003cp align=\"center\"\u003e\n  An open-source Notion-style WYSIWYG editor with AI extensions support.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#introduction\"\u003e\u003cstrong\u003eIntroduction\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#installation\"\u003e\u003cstrong\u003eInstallation\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#setting-up-locally\"\u003e\u003cstrong\u003eSetting Up Locally\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#tech-stack\"\u003e\u003cstrong\u003eTech Stack\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#contributing\"\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#fork\"\u003e\u003cstrong\u003eFork\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#roadmap\"\u003e\u003cstrong\u003eRoadmap\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#license\"\u003e\u003cstrong\u003eLicense\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n## Introduction\n\n[Craft Editor](https://craft.sova.dev/) is a Notion-style WYSIWYG editor with AI extensions support.\n\n\u003cbr /\u003e\n\n## Installation\n\nTo use Craft Editor in a project, you can run the following command to install the `@sergeysova/craft` [NPM package](https://www.npmjs.com/package/@sergeysova/craft):\n\n```\nnpm add @sergeysova/craft\n```\n\nThen, you can use it in your code like this:\n\n```jsx\nimport { useState } from \"react\";\nimport { CraftEditor, JSONContent } from \"@sergeysova/craft\";\n\nexport default function App() {\n  const [content, setContent] = useState\u003cJSONContent\u003e({})\n\n  return \u003cCraftEditor content={content} onUpdate={(editor) =\u003e setContent(editor.getJSON())} /\u003e;\n}\n```\n\n## Setting Up Locally\n\nTo set up CraftEditor locally, you'll need to clone the repository.\n\nIf you've deployed this to Vercel, you can also use [`vc env pull`](https://vercel.com/docs/cli/env#exporting-development-environment-variables) to pull the environment variables from your Vercel project.\n\nTo run the app locally, you can run the following commands:\n\n```\npnpm i\npnpm build\npnpm dev\n```\n\n## Tech Stack\n\nCraftEditor is built on the following stack:\n\n- [Tiptap](https://tiptap.dev/) – extendable text editor\n- [Prosemirror](https://prosemirror.net/) – text editing framework under Tiptap\n- [TailwindCSS](https://tailwindcss.com/) – styles\n- [Cal Sans](https://github.com/calcom/font) – font\n- [Next.js](https://nextjs.org/) – framework for web app example\n- [Vercel](https://vercel.com) – deployments\n\n## Contributing\n\nHere's how you can contribute:\n\n- [Open an issue](https://github.com/sergeysova/craft/issues) if you believe you've encountered a bug.\n- Make a [pull request](https://github.com/sergeysova/craft/pull) to add new features/make quality-of-life improvements/fix bugs.\n\n\u003ca href=\"https://github.com/sergeysova/craft/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=sergeysova/craft\" /\u003e\n\u003c/a\u003e\n\n## Repo Activity\n\n![Craft Editor repo activity – generated by Axiom](https://repobeats.axiom.co/api/embed/c9165c2011497e5f71de0cc04345bdb4dc479b3d.svg)\n\n## Fork\n\nThis project is an enhanced version of [Novel](https://github.com/steven-tey/novel), originally created by Steven Tey. I am forked it to introduce additional customization options, all without the constraints of maintaining backward compatibility of Novel.\n\nI am created `@sergeysova/craft` with the aim of offering a more modular and customizable editor experience. My changes include updating dependencies, streamlining the default editor content, and disabling certain features like the Image block and AI support. These features are not gone for good; rather, I am planning to reintroduce them as optional extensions, giving you the freedom to tailor the editor to your needs.\n\n## Roadmap\n\n- **Documentation**: To provide detailed guides and tutorials for extending functionalities, integrating with state managers, and utilizing AI capabilities.\n- **Craft Editor Control**: To seamlessly integrate with any state manager.\n- **Modular AI Features**: Move AI capabilities to an extension for optional use.\n- **Image Uploading as an Extension**: To give you the choice to include it or not.\n- **Command Popup Customization**: Allowing the installation of various block types.\n- **Independence from Vercel**: Making CraftEditor fully self-reliant for uploading, AI, analytics, and more.\n- **Notion-like Menu**: For each line, features for transforming, settings, deletion, etc., will be available.\n- **i18n Support**: To enable internationalization and localization for a more accessible and global user experience.\n\nBy making these changes, we aim to provide a more flexible and user-friendly editor that can be easily integrated into your existing tech stack.\n\n## License\n\nLicensed under the [Apache-2.0 license](https://github.com/sergeysova/craft/blob/main/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergeysova%2Fcraft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsergeysova%2Fcraft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergeysova%2Fcraft/lists"}