{"id":27648275,"url":"https://github.com/gokulcodes/ideal-editor-web","last_synced_at":"2026-04-26T22:31:30.221Z","repository":{"id":288860967,"uuid":"969381706","full_name":"gokulcodes/ideal-editor-web","owner":"gokulcodes","description":"A minimal, fast, and distraction-free text editor built for the web. Perfect for taking quick notes, writing drafts, or capturing ideas on the go — all with seamless cloud storage.","archived":false,"fork":false,"pushed_at":"2025-07-04T12:55:24.000Z","size":11482,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T13:59:19.618Z","etag":null,"topics":["linkedlist","n-array","reactjs","text-editor","typescript","web"],"latest_commit_sha":null,"homepage":"https://ideal.gokulcodes.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gokulcodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-04-20T02:42:58.000Z","updated_at":"2025-07-04T12:55:27.000Z","dependencies_parsed_at":"2025-07-04T13:57:31.425Z","dependency_job_id":"be71ac63-63e4-4c7f-81f4-5f4741b918e5","html_url":"https://github.com/gokulcodes/ideal-editor-web","commit_stats":null,"previous_names":["gokulcodes/ideal-web","gokulcodes/ideal-editor-web"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gokulcodes/ideal-editor-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulcodes%2Fideal-editor-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulcodes%2Fideal-editor-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulcodes%2Fideal-editor-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulcodes%2Fideal-editor-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gokulcodes","download_url":"https://codeload.github.com/gokulcodes/ideal-editor-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulcodes%2Fideal-editor-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32315711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T21:09:39.134Z","status":"ssl_error","status_checked_at":"2026-04-26T21:09:21.240Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["linkedlist","n-array","reactjs","text-editor","typescript","web"],"created_at":"2025-04-24T02:37:59.022Z","updated_at":"2026-04-26T22:31:30.216Z","avatar_url":"https://github.com/gokulcodes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Ideal poster](https://github.com/gokulcodes/ideal-web/blob/main/public/poster.png?raw=true)\n\n# ideal\n\nA minimal, fast, and distraction-free text editor built for the web. Perfect for taking quick notes, writing drafts, or capturing ideas on the go — all with seamless cloud storage.\n\n## Requirements\n\n- Files \u0026 Folders\n- Image support\n- Cloud / Local storage\n- Focus Mode - You \u0026 Your Ideal Editor\n- Typerace feature\n- Next set of word suggession using AI\n- All Text, Headings, List, Code, Table formating options\n- Hierarchy preview\n- Code editor mode\n- Notes taking mode\n- Search\n- Virtualized line rendering\n\n## Algorithm\n\n- Letter \u0026 Line storing technique - N-Array Tree using LinkedList pointers\n\n```\nclass Editor{\n    head: Line\n    linePtr: Line\n}\n\nclass Line{\n    letterHead: Letter\n    letterPtr: Letter\n    nextLine: Pointer\n    prevLine: Pointer\n}\n\nclass Letter{\n    text: \u003cAll keyboard supported letter\u003e\n    nextLetter: Pointer\n    prevLetter: Pointer\n}\n```\n\n### Basic text editing functionalities with keyboard:\n\nDelete:\n\n- Delete a character at the end\n- Delete a character at the middle\n- Delete a character at beginning of the line\n- Delete at the beginning of the line\n    - deletes the current and then move the content from current line to it's previous line\n    - Moves the cursor the previous line and before the current line's first word\n\nInsert Character\n\n- Insert a character at beginning of the line\n- Insert a character at the end of the line\n- Insert a character at the middle of the line\n- Insert multiple spaces between text\n- Insert tabs between / start / end of the line\n\nInsert Line\n\n- Insert a new line by doing enter key\n- create a new line by doing cmd + c if the clipboard content has line breaks\n- Insert a new line by keeping the cursor in the middle of the line\n    - Move the content of the current line next to the cursor to the new line created next to it\n- Multiple empty lines\n\nCursor movements:\n\n- Left arrow moves the cursor to one position left in the current line\n- Right arrow moves the cursor to one position right in the current line\n- Move the cursor to beginning of the paragraph. Do left key now. Move the cursor to previous line's end letter\n- Move the cursor to end of the line, do right key. move the cursor to next line's beginning\n- After deleting a text / deleting a line cursor movement should be normal. It should'nt jump or stay at the same place on any movement key presses\n\nSelect group of letters \u0026 lines\n\n- Press Shift + Left arrow\n    - Select letter from current cursor point to leftmost cursor movement\n    - If we reach the beginning of the line, keep moving the selection space to previous line and so on\n- Press Shift + Right arrow - Select letter from current cursor point to leftmost cursor movement\n    - Select letter from current cursor point to rightmost cursor movement\n    - If we reach the end of the line, keep moving the selection space to next line and so on\n\nNote: Write all this function to be modular enough to be used in mouse movements\n\nSpecial keyboard actions\n\n- Cmd + C\n    - if any selection is made, Copy the selection\n    - if no selection, copy the current line content to clipboard\n- Cmd + A\n    - Select the entire text from top to bottom\n- Cmd + V\n    - Insert whatever in the clipboard next to the current cursor point\n- Cmd + X\n    - Copy the active line content to clipboard. It deletes the current line and join previous line \u0026 next line\n- Cmd + A \u003e Delete\n    - Delete the entire selected text\n- Cmd + A \u003e Cmd + V\n    - Delete the entire selected text and insert the content from clipboard from deleted position\n- Home / Cmd + Left\n    - Move to last word break or character position\n- End / Cmd + Right\n    - Move to next word break or character position\n- Cmd + Up / Home\n    - Move to beginning of the whole line\n- Cmd + Right / Home\n    - Move to end of the whole line\n- Tabs\n    - Insert a tab space from the cursor point\n- Single Line Range Selection using Keyboard\n- [Copy]Single Line Range Selection using Keyboard\n- [Copy]Multiline selection using Keyboard\n- [Paste/Replace]Single Line Range Selection using Keyboard\n- [Delete]Single Line Range Selection using Keyboard\n- [Cmd + A] Select all lines from start to end\n- [Shift + Alt + Left] Select all letters to left of the cursor until a space is seen\n- [Shift + Alt + Right] Select all letters to Right of the cursor until a space is seen\n- [Alt + Left] Move the cursor to previous whitespace\n- [Alt + Right] Move the cursor to next whitespace\n- [Alt + Up] Swap current line to previous line\n- [Alt + Down] Swap current line to next line\n- [Cmd + Up] Move the cursor to first line of the entire editor\n- [Cmd + Down] Move the cursor to last line of the entire editor\n- [Cmd + Left] Move the cursor to beginning of the line\n- [Cmd + Right] Move the cursor to end of the line\n- [Cmd + Up] Move the cursor to first line of the entire editor\n- [Cmd + Down] Move the cursor to last line of the entire editor\n- [Home] Move the cursor to beginning of the current line\n- [End] Move the cursor to end of the current line\n\n- Only allow AlphaNumeric, Special Characters \u0026 Emojis inside editor view\n\ncan we do auto line breaks in render level?\nnot possible because of line's dependencies for mouse and cursor movement\nonly create new pre tag if user made line break is seen\notherwise render everthing in a new\n\nhard line break is mandatory here - can we handle this correctly?\nwhenever a line's content is overflowed - unlink overflowed character from the line - insert it to the beginning of the next line - if the next line is overflowed because of the character's inserted - unlink the overflowed characters of the next line - do this until the no-more line's are overflowing\n\nproblems in auto line break logic - handle onresize the editor container - unless user created a new line, always collapse the overflowed letters\nback to it's original line if the space is available for them - one weird error when we cross 5th line - perfect rendering part, i see in some lines one character is overflowing the container for few seconds\nand settling to nextline's head\n\n        YOU NEED TO BE FAST !!!\n        Applying and giving your 100% \u003e\u003e\u003e\u003e\u003e Preparing for interviews\n        If you want to become unbelievable, do things that you don't believe you are capable of\n\nDelete - modal popup\nfrequent document save\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgokulcodes%2Fideal-editor-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgokulcodes%2Fideal-editor-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgokulcodes%2Fideal-editor-web/lists"}