{"id":19293042,"url":"https://github.com/naralc/multiplayer-code-editor","last_synced_at":"2025-04-22T07:32:03.358Z","repository":{"id":65403523,"uuid":"582438269","full_name":"NaralC/Multiplayer-Code-Editor","owner":"NaralC","description":"Have you ever wondered how a collaborative programming site like Replit works? Tried building that.","archived":false,"fork":false,"pushed_at":"2023-02-19T17:05:22.000Z","size":160,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T20:41:47.478Z","etag":null,"topics":["express","online-code-editor","react","remote-code-execution","socket-io","tailwindcss","typescript","web-sockets"],"latest_commit_sha":null,"homepage":"","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/NaralC.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}},"created_at":"2022-12-26T20:49:03.000Z","updated_at":"2024-01-27T02:59:08.000Z","dependencies_parsed_at":"2024-11-09T22:33:57.688Z","dependency_job_id":"3bc54060-0aab-4ac6-ab9e-2d47d2fdf9b0","html_url":"https://github.com/NaralC/Multiplayer-Code-Editor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NaralC%2FMultiplayer-Code-Editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NaralC%2FMultiplayer-Code-Editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NaralC%2FMultiplayer-Code-Editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NaralC%2FMultiplayer-Code-Editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NaralC","download_url":"https://codeload.github.com/NaralC/Multiplayer-Code-Editor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250195042,"owners_count":21390230,"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","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":["express","online-code-editor","react","remote-code-execution","socket-io","tailwindcss","typescript","web-sockets"],"created_at":"2024-11-09T22:33:54.270Z","updated_at":"2025-04-22T07:32:02.877Z","avatar_url":"https://github.com/NaralC.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## You just cloned the project\n### To get the frontend running:\n1. cd client\n2. npm i\n3. npm run dev\n\n### To get the backend running:\n1. cd server\n2. npm i \n3. npm run serve\n\n## Know Bugs\n- ~~Everyone joins with an unused duplicated socket~~\n\u003e The problem was in CodeMirrorEditor and EditorPage, there was no boolean key to prevent the duplicate pages in the code editor.\n- ~~Code doesn't automatically sync for late joiners~~\n\u003e The problem was in CodeMirrorEditor, the onChangeCode sets to the default starting code - not the updated code.\n- ~~Names that are too long messes up sidebar CSS~~\n\u003e Solved with Tailwind's truncate property\n\n- Pressing more than 1 key simultaneously glitches out the code editor ⚠⚠⚠\n\n## Features To be Implemented\n- ~~Language dropdown picker + Make current language sync with web sockets~~\n- ~~Editor Theme dropdown picker + Make current theme sync with web sockets~~\n- ~~Make compiltation status sync with web sockets~~ \n- ~~*Compilation with Judge0* Late joiners don't receive output~~\n\u003e Threw a few ref hooks at it, as the setter of state hooks are asynchronous(?)\n\n- Make the app not look ugly ⚠⚠⚠\n\n## Nice-to-have Features\n- Implement cancellation with Axios if the compilation host quits\n- New joiners are not notified if code's being compiled at the time\n- If there's only 1 player left and you refresh the page, the code is reset back to default. Normally if there are multiple people - the newly written code persists. Maybe bring we could store the code locally if there's a single player?","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaralc%2Fmultiplayer-code-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaralc%2Fmultiplayer-code-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaralc%2Fmultiplayer-code-editor/lists"}