# Turborepo starter This Turborepo starter is maintained by the Turborepo core team. ## Using this example Run the following command: ```sh npx create-turbo@latest ``` ## What's inside? This Turborepo includes the following packages/apps: ### Apps and Packages - `docs`: a [Next.js](https://nextjs.org/) app - `web`: another [Next.js](https://nextjs.org/) app - `@repo/ui`: a stub React component library shared by both `web` and `docs` applications - `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) - `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). ### Utilities This Turborepo has some additional tools already setup for you: - [TypeScript](https://www.typescriptlang.org/) for static type checking - [ESLint](https://eslint.org/) for code linting - [Prettier](https://prettier.io) for code formatting ### Build To build all apps and packages, run the following command: ``` cd my-turborepo pnpm build ``` ### Develop To develop all apps and packages, run the following command: ``` cd my-turborepo pnpm dev ``` ### Remote Caching > [!TIP] > Vercel Remote Cache is free for all plans. Get started today at [vercel.com](https://vercel.com/signup?/signup?utm_source=remote-cache-sdk&utm_campaign=free_remote_cache). Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines. By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup?utm_source=turborepo-examples), then enter the following commands: ``` cd my-turborepo npx turbo login ``` This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview). Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo: ``` npx turbo link ``` ## Useful Links Learn more about the power of Turborepo: - [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks) - [Caching](https://turbo.build/repo/docs/core-concepts/caching) - [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) - [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering) - [Configuration Options](https://turbo.build/repo/docs/reference/configuration) - [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference) # Collaborative-Excalidraw # Collaborative-Excalidraw # CollabyDraw
CollabyDraw
CollabyDraw is a real-time collaborative drawing application inspired by Excalidraw and a project built by Harkirat Singh Sir in his Cohort 3. While working on the project, I made some modifications and introduced features that make CollabyDraw slightly different from what project built during Cohort and possibly from other students' implementations.
🚀 Features
🎨 Standalone Mode (No Authentication Required)
- Users can start drawing without signing up or logging in.
- Offers the same features as collaboration mode, except live room functionality.
- Data is stored in local storage, ensuring privacy and no dependency on a database.
🎨 Live Collaboration Mode
- Users can join rooms and collaborate in real-time.
- Participants are visibly displayed in an interactive UI, similar to Excalidraw.
- Built-in WebSocket-based syncing for smooth collaboration.
🎨 Next.js Server Actions (No Separate HTTP Services)
- The cohort project used a separate HTTP service for:
- Room creation & management
- User authentication & management
- CollabyDraw eliminates separate HTTP services by using Next.js server actions, making the architecture cleaner and more efficient.
🎨 Privacy-Focused Architecture
- Standalone mode does not require a database; it relies on local storage.
- Planning to fully eliminate database usage in the future, similar to Excalidraw.
🎨 Interactive and Responsive UI
- Built with a focus on high performance and smooth UX.
- WebSocket connections are hookified for better state management.
- The UI is highly interactive and visually appealing, improving the user experience over the cohort project.
🛠️ Tech Stack
- Frontend: Next.js 15
- Real-time Sync: WebSockets
- State Management: React hooks
- Storage: Local Storage (Standalone Mode), Database (for authentication in Collaboration Mode)
🆚 Differences from Cohort Project
| Feature | Cohort Project by Harkirath | CollabyDraw |
|---|---|---|
| Authentication Required | Yes | No (Standalone Mode) |
| Local Storage Support | No | Yes |
| Database Dependency | Yes | No (Standalone Mode) |
| Separate HTTP Services | Yes | No (Uses Next.js Server Actions) |
| Live Collaboration UI | Basic | Interactive UI with participant list |
| Performance Optimizations | Basic | Hookified WebSocket connection & responsive UI |
🎯 Future Plans
- Fully eliminate database dependency to enhance privacy.
- Enhance UI further with better collaboration tools.
- Improve performance with optimizations in WebSocket handling.
🌍 Open Source & Contributions
I want CollabyDraw to be open source so that other students and developers can explore and learn from it.
If you'd like to contribute—whether it's improving the UI, optimizing performance, or adding new features—feel free to open an issue or submit a pull request!
📜 License
This project is open-source and available under the MIT License.
0 commit comments