Built for the Web Dev Cody Hackaton, CodeTogether is a fully featured, cross browser, totally not buggy 😅, collaborative coding platform (or app?) that can be used to easily share your project when you need help with something or if you brave enough, use it when you want to collaborate with other developers on an entire project.
- Create Project Linked to Github Repo
- Invite Members
- Drag and Drop files into Workspace
- Code Editor with Multi language support
- Realtime Code editing
- Supports Branching and Single file commits
Its easy, just:
- Yoink the repo 😅
- Run
npm install
to install dependencies - Run
npx convex dev
to setup your convex project and sync your schema and functions - Create a clerk project and setup a Convex JWT template named "convex" because we need it for auth (check auth.config.js)
- Make sure to only use the github OAuth provider and include the
public_repo
scope in your clerk project - Go to convex dashboard and setup your CLERK_CONVEX_ISSUER_URL copied from the JWT template
- Edit
/src/pages/Root.tsx
to use your clerk publishable key on the ClerkProvider (using .env.local for this wasn't possible because it kept being replaced by convex dev or so i think) - Create a
.env.local
with CONVEX_DEPLOYMENT and VITE_CONVEX_URL variables (npx convex dev should have created this for you) npm run dev
- Remove Members
- Leave Project
- Presense (See who's online)
- Implement Branching and Single file commits
- Allow creating new files
- Code Presense (See who's editing what)
- Add Authorization checks in the backend (Only Project owner should be able to invite or remove members)
- Implement multi file commits
- Show indicator when a file has changed in the repo and needs to be "synched"
- Implement Fixing merge conflics
- Better error handling for when offline (clerk, convex, github unreashable). Right now the app just crashes or doesn't do the thing
- Codesandbox esque web environment (HELP!)
- VS Code Extension for better code presense (HELP!)
- Lines, Shapes, and Text drawing capabilities (Maybe not needed?)
- File selector freezes on large repos
- Editor position synching not the best
- Many more waiting to be discovered...