{"id":19113680,"url":"https://github.com/sashenjayathilaka/miro-clone","last_synced_at":"2025-09-10T17:31:59.223Z","repository":{"id":261222061,"uuid":"752821815","full_name":"SashenJayathilaka/Miro-Clone","owner":"SashenJayathilaka","description":"🛠️ Build a Custom Whiteboard 🧰 Tools for Text, Shapes, Sticky Notes \u0026 Pencil 🪄 Layer Management 🎨 Color Palette Options ↩️ Undo \u0026 Redo Actions ⌨️ Keyboard Shortcuts 🤝 Collaborate in Real Time 💾 Live Database Integration 🔐 Authentication, Organizations \u0026 Invites ⭐️ Favorite Items for Quick Access 🌐 Powered by Next.js 14","archived":false,"fork":false,"pushed_at":"2024-12-07T04:01:12.000Z","size":687,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-03T05:31:52.997Z","etag":null,"topics":["class-variance-authority","clerk-react","convex","date-fns","liveblocks","lucide-react","nanoid","nextjs","nodejs","perfect-freehand","query-string","radix-ui","react-contenteditable","react-dom","react-loader-spinner","sonner","tailwindcss","typescript","usehooks-ts","zustand"],"latest_commit_sha":null,"homepage":"https://miro-clone-jade.vercel.app","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/SashenJayathilaka.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":"2024-02-04T22:12:33.000Z","updated_at":"2024-12-07T04:01:14.000Z","dependencies_parsed_at":"2025-01-03T05:29:20.947Z","dependency_job_id":"b3b85b46-fa5d-4367-8702-b289139c963d","html_url":"https://github.com/SashenJayathilaka/Miro-Clone","commit_stats":null,"previous_names":["sashenjayathilaka/miro-clone"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FMiro-Clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FMiro-Clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FMiro-Clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FMiro-Clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SashenJayathilaka","download_url":"https://codeload.github.com/SashenJayathilaka/Miro-Clone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232548596,"owners_count":18540145,"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":["class-variance-authority","clerk-react","convex","date-fns","liveblocks","lucide-react","nanoid","nextjs","nodejs","perfect-freehand","query-string","radix-ui","react-contenteditable","react-dom","react-loader-spinner","sonner","tailwindcss","typescript","usehooks-ts","zustand"],"created_at":"2024-11-09T04:36:56.099Z","updated_at":"2025-01-05T04:41:47.924Z","avatar_url":"https://github.com/SashenJayathilaka.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003cimg src=\"https://github.com/user-attachments/assets/0e06a37a-1588-4210-ac8a-aa38204a81e6\" alt=\"logo\" width=\"250\" height=\"auto\" /\u003e\n  \n# Miro Clone With Nextjs \n  \n  \u003cp\u003e\n🛠️ Build a Custom Whiteboard 🧰 Tools for Text, Shapes, Sticky Notes \u0026 Pencil 🪄 Layer Management 🎨 Color Palette Options ↩️ Undo \u0026 Redo Actions ⌨️ Keyboard Shortcuts 🤝 Collaborate in Real Time 💾 Live Database Integration 🔐 Authentication, Organizations \u0026 Invites ⭐️ Favorite Items for Quick Access 🌐 Powered by Next.js 14\n  \u003c/p\u003e\n  \n\u003c!-- Badges --\u003e\n\u003ca href=\"[https://airbnb-sclone.vercel.app](https://miro-clone-jade.vercel.app/)\" target=\"_blank\"\u003e![](https://img.shields.io/website-up-down-green-red/http/monip.org.svg)\u003c/a\u003e\n![](https://img.shields.io/badge/Maintained-Yes-indigo)\n![](https://img.shields.io/github/forks/SashenJayathilaka/Miro-Clone.svg)\n![](https://img.shields.io/github/stars/SashenJayathilaka/Miro-Clone.svg)\n![](https://img.shields.io/github/issues/SashenJayathilaka/Miro-Clone)\n![](https://img.shields.io/github/last-commit/SashenJayathilaka/Miro-Clone)\n\n\u003ch4\u003e\n    \u003ca href=\"https://miro-clone-jade.vercel.app\"\u003eView Demo\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/Miro-Clone/blob/master/README.md\"\u003eDocumentation\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/Miro-Clone/issues\"\u003eReport Bug\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/Miro-Clone/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- Table of Contents --\u003e\n\n## :notebook_with_decorative_cover: Table of Contents\n\n- [About the Project](#star2-about-the-project)\n  - [Screenshots](#camera-screenshots)\n  - [Tech Stack](#space_invader-tech-stack)\n  - [Environment Variables](#key-environment-variables)\n- [Getting Started](#toolbox-getting-started)\n  - [Prerequisites](#bangbang-prerequisites)\n  - [Installation](#gear-installation)\n  - [Run Locally](#running-run-locally)\n  - [Deployment](#triangular_flag_on_post-deployment)\n- [Contact](#handshake-contact)\n\n\u003c!-- About the Project --\u003e\n\n## :star2: About the Project\n\n\u003c!-- Screenshots --\u003e\n\n### :camera: Screenshots\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://miro-clone-jade.vercel.app\"\u003e\u003cimg  src='https://github.com/user-attachments/assets/cf8878b3-2178-494c-9c07-959f1639a4d2' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://miro-clone-jade.vercel.app\"\u003e\u003cimg  src='https://github.com/user-attachments/assets/8fdb667e-89ce-4f07-9aae-54ee4248b14b' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## \u003ca href=\"https://miro-clone-jade.vercel.app\" target=\"_blank\"\u003eLIVE DEMO 💥\u003c/a\u003e\n\n![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)\n![forthebadge](https://forthebadge.com/images/badges/for-you.svg)\n![forthebadge](https://forthebadge.com/images/badges/powered-by-coffee.svg)\n\n### :space_invader: Tech Stack\n\n\u003cdetails\u003e\n  \u003csummary\u003eClient\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://#/\"\u003eTypescript\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://nextjs.org/\"\u003eNext.js\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://reactjs.org/\"\u003eReact.js\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://tailwindcss.com/\"\u003eTailwindCSS\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.prisma.io\"\u003ePrisma\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDatabase\u003c/summary\u003e\n  \u003cul\u003e\n  \u003cli\u003e\u003ca href=\"https://firebase.google.com\"\u003eMongodb\u003c/a\u003e\u003c/li\u003e\n  \u003cli\u003e\u003ca href=\"https://cloudinary.com/\"\u003eCloudinary\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cbr /\u003e\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original.svg\" alt=\"\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/183096870-fdf58e59-d78c-44f4-bd1c-f9033c16d907.png\" alt=\"Google\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                        \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/179383376-874f547c-4e6f-4826-850e-706b009e7e2b.png\" alt=\"\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                              \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/de9b3fe9-d525-4241-b90a-8b597e6af5cb\" alt=\"\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                        \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/180462270-ea4a249c-627c-4479-9431-5c3fd25454c4.png\" alt=\"\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                                \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/0e06a37a-1588-4210-ac8a-aa38204a81e6\" alt=\"\" width=\"30\"height=\"30\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n                                      \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/2498198d-6272-4aef-9812-39c9df37acd7\" alt=\"\" width=\"30\"height=\"30\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n      \u003ctd\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/d24e0437-5919-4fc0-b0b5-4b15b8e7768e\" alt=\"\" width=\"30\"height=\"30\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## :toolbox: Getting Started\n\n### :bangbang: Prerequisites\n\n- Install Node JS in your computer \u003ca href='https://nodejs.org/en/'\u003eHERE\u003c/a\u003e\n- Sign up for a clerk account \u003ca href='https://clerk.com/'\u003eHERE\u003c/a\u003e\n- Sign up for a convex \u003ca href='https://www.convex.dev/'\u003eHERE\u003c/a\u003e\n- Sign up for a liveblocks \u003ca href='https://liveblocks.io/'\u003eHERE\u003c/a\u003e\n\n\u003c!-- Env Variables --\u003e\n\n### :key: Environment Variables\n\nTo run this project, you will need to add the following environment variables to your .env file\n\n`CONVEX_DEPLOYMENT`\n\n`NEXT_PUBLIC_CONVEX_URL`\n\n`NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY`\n\n`CLERK_SECRET_KEY`\n\n`LIVEBLOCKS_SECRET_KEY`\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n### :gear: Installation\n\n![](https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB)\n![](https://img.shields.io/badge/next.js-20232A?style=for-the-badge\u0026logo=next.js\u0026logoColor=61DAFB)\n\nInstall my-project with npm\n\n```\nnpx create-next-app@latest my-project --typescript --eslint\n```\n\n```\ncd my-project\n```\n\nInstall dependencies\n\n### :test_tube: Install Tailwind CSS with Next.js\n\n#### Install Tailwind CSS\n\n![](https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white)\n\nInstall tailwindcss and its peer dependencies via npm, and then run the init command to generate both `tailwind.config.js` and `postcss.config.js`.\n\n```\nnpm install -D tailwindcss postcss autoprefixer\n```\n\n```\nnpx tailwindcss init -p\n```\n\n#### Configure your template paths\n\nAdd the paths to all of your template files in your `tailwind.config.js` file.\n\u003cbr\u003e\n\n```js\n/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    \"./app/**/*.{js,ts,jsx,tsx}\",\n    \"./pages/**/*.{js,ts,jsx,tsx}\",\n    \"./components/**/*.{js,ts,jsx,tsx}\",\n\n    // Or if using `src` directory:\n    \"./src/**/*.{js,ts,jsx,tsx}\",\n  ],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n};\n```\n\n#### Add the Tailwind directives to your CSS\n\nAdd the `@tailwind` directives for each of Tailwind’s layers to your `./styles/globals.css` file.\n\n```css\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n```\n\nInstall dependencies\n\n\u003ca href=\"https://github.com/SashenJayathilaka/Airbnb-Build/blob/master/package.json\" target=\"_blank\"\u003e🔶 Dependency Info\u003c/a\u003e\n\n\u003c!-- Run Locally --\u003e\n\n### :running: Run Locally\n\n![](https://img.shields.io/badge/GIT-E44C30?style=for-the-badge\u0026logo=git\u0026logoColor=white)\n\nClone the project\n\n```bash\n  https://github.com/SashenJayathilaka/Miro-Clone.git\n```\n\nchange directory\n\n```bash\n  cd Miro-Clone\n```\n\nInstall dependencies\n\n```bash\n  npm install\n```\n\nStart the server\n\n```bash\n  npm run dev\n```\n\n\u003chr /\u003e\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n\u003chr /\u003e\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.\n\n[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.\n\nThe `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.\n\n### Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n\u003c!-- Deployment --\u003e\n\n### :triangular_flag_on_post: Deployment\n\nTo deploy this project run\n\n##### Deploy on Vercel\n\n![](https://img.shields.io/badge/Vercel-000000?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n\n## :handshake: Contact\n\nSashen - [@twitter_handle](https://twitter.com/SashenHasinduJ) - sashenjayathilaka95@gmail.com\n\nProject Link: [https://github.com/SashenJayathilaka/Airbnb-Build.git](https://github.com/SashenJayathilaka/Airbnb-Build.git)\n\n\u003cbr /\u003e\n\n\u003c!--\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://airbnb-sclone.vercel.app\"\u003e\u003cimg  src='https://user-images.githubusercontent.com/99184393/229773559-72e7f64a-361d-4285-976a-00a8919dd783.png' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n--\u003e\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003eDon't forget to leave a star ⭐️\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashenjayathilaka%2Fmiro-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsashenjayathilaka%2Fmiro-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashenjayathilaka%2Fmiro-clone/lists"}