Skip to content

Latest commit

 

History

History
333 lines (253 loc) · 13.3 KB

README.md

File metadata and controls

333 lines (253 loc) · 13.3 KB

Miro Clone - Real-time collaboration, versatile canvas, rich media, secure.

Miro Clone - Real-time collaboration, versatile canvas, rich media, secure.

Ask Me Anything! GitHub license Maintenance GitHub branches Github commits GitHub issues GitHub pull requests Vercel status

📔 Table of Contents

‼️ Folder Structure

Here is the folder structure of this app.

miro-clone/
  |- app/
    |-- (dashboard)/
        |--- _components/
            |---- board-card/
            |---- sidebar/
            |---- board-list.tsx
            |---- empty-boards.tsx
            |---- empty-favourites.tsx
            |---- empty-org.tsx
            |---- empty-search.tsx
            |---- invite-button.tsx
            |---- navbar.tsx
            |---- new-board-button.tsx
            |---- org-sidebar.tsx
            |---- search-input.tsx
        |--- layout.tsx
        |--- page.tsx
    |-- api/liveblocks-auth/
        |--- route.ts
    |-- board/[boardId]/
        |--- _components/
            |---- canvas.tsx
            |---- color-picker.tsx
            |---- cursor.tsx
            |---- cursors-presence.tsx
            |---- ellipse.tsx
            |---- info.tsx
            |---- layer-preview.tsx
            |---- loading.tsx
            |---- note.tsx
            |---- participants.tsx
            |---- path.tsx
            |---- rectangle.tsx
            |---- selection-box.tsx
            |---- selection-tools.tsx
            |---- text.tsx
            |---- tool-button.tsx
            |---- toolbar.tsx
            |---- user-avatar.tsx
        |--- page.tsx
    |-- apple-icon.png
    |-- favicon.ico
    |-- globals.css
    |-- icon1.png
    |-- icon2.png
    |-- layout.tsx
  |- components/
    |-- auth/
    |-- modals/
    |-- ui/
    |-- actions.tsx
    |-- confirm-modal.tsx
    |-- hint.tsx
    |-- room.tsx
  |- config/
    |-- index.ts
  |- convex/
    |-- _generated/
    |-- auth.config.js
    |-- board.ts
    |-- boards.ts
    |-- schema.ts
    |-- tsconfig.json
  |- hooks/
    |-- use-api-mutation.tsx
    |-- use-disable-scroll-bounce.tsx
    |-- use-selection-bounds.tsx
  |- lib/
    |-- utils.ts
  |- providers/
    |-- convex-client-provider.tsx
    |-- modal-provider.tsx
  |- public/
    |-- placeholders/
    |-- elements.svg
    |-- empty-boards.svg
    |-- empty-favourites.svg
    |-- empty-search.svg
    |-- logo.svg
  |- store/
    |-- use-rename-modal.ts
  |- types/
    |-- canvas.ts
  |- .env.local
  |- .env.local.example
  |- .eslintrc.json
  |- .gitignore
  |- components.json
  |- environment.d.ts
  |- liveblocks.config.ts
  |- middleware.ts
  |- next.config.mjs
  |- package-lock.json
  |- package.json
  |- postcss.config.js
  |- tailwind.config.ts
  |- tsconfig.json

🧰 Getting Started

  1. Make sure Git and NodeJS is installed.
  2. Clone this repository to your local computer.
  3. Create .env.local file in root directory.
  4. Contents of .env.local:
# .env.local

# disable next.js telemetry
NEXT_TELEMETRY_DISABLED=1

# deployment for convex
CONVEX_DEPLOYMENT=dev:convex-app-name # team: <your-team-name>, project: <your-project-name>

# convex deployment url
NEXT_PUBLIC_CONVEX_URL=https://convex-app-name.convex.cloud

# clerk auth keys
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLERK_SECRET_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# liveblocks api keys
NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY=pk_dev_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
NEXT_PUBLIC_LIVEBLOCKS_SECRET_KEY=sk_dev_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

5. Convex Deployment Configuration:

a. Visit the Convex Website:

b. Access Deployment Settings:

  • Navigate to the deployment settings section in your Convex account.

c. Retrieve Deployment Configuration:

  • Find the deployment details, including team and project names.
  • Update the CONVEX_DEPLOYMENT variable in the .env.local file with the obtained information.

6. Clerk Authentication Keys:

a. Visit the Clerk Website:

b. Access API Keys:

  • Find the section in your Clerk account related to API keys or authentication settings.

c. Generate Keys:

  • Generate a pair of keys (Publishable Key and Secret Key).

d. Update .env.local:

  • Replace the NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY variables in the .env.local file with the keys obtained from Clerk.

7. Liveblocks API Keys:

a. Visit the Liveblocks Website:

b. Access API Keys:

  • Navigate to your Liveblocks account settings or API keys section.

c. Generate Keys:

  • Generate a pair of keys (Public Key and Secret Key) for development.

d. Update .env.local:

  • Replace the NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY and NEXT_PUBLIC_LIVEBLOCKS_SECRET_KEY variables in the .env.local file with the Liveblocks API keys obtained.

8. Save and Secure:

  • Save the changes to the .env.local file.
  1. Install Project Dependencies using npm install --legacy-peer-deps or yarn install --legacy-peer-deps.
  2. Now app is fully configured 👍 and you can start using this app using either one of npm run dev or yarn dev.

NOTE: Please make sure to keep your API keys and configuration values secure and do not expose them publicly.

📷 Screenshots

Modern UI/UX

Create New Boards

Rename Boards

⚙️ Tech Stack

React JS Next JS Typescript Tailwind CSS Vercel MySQL

🔧 Stats

Stats for Miro Clone

🙌 Contribute

You might encounter some bugs while using this app. You are more than welcome to contribute. Just submit changes via pull request and I will review them before merging. Make sure you follow community guidelines.

💎 Acknowledgements

Useful resources and dependencies that are used in Miro Clone.

☕ Buy Me a Coffee

🚀 Follow Me

Follow Me Tweet about this project Subscribe to my YouTube Channel

📚 Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

📃 Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out Next.js deployment documentation for more details.

⭐ Give A Star

You can also give this repository a star to show more people and they can use this repository.

🌟 Star History

Star History Chart

(back to top)