Miro App Examples

repository·main·Indexed 19 days ago

https://github.com/miroapp/app-examples

A collection of example applications built on the Miro Developer Platform 2.0. These examples demonstrate various integration patterns, including Web SDK usage, REST API interactions, and full-stack implementations. Featured apps include 3rd Party OAuth Login, AI Image Generator, Miro Asset Search, Blob Maker, and Breakout rooms.

Tokens
24.5K
Snippets
64
Records
121
Agent score
65%

What's inside miroapp-app-examples

  1. Overview of features in the Webcam Screenshot App

    main

    This application demonstrates the integration of the Miro Web SDK and the Miro REST API within a Next.js environment. It utilizes the following key capabilities:

    Miro Node.js Client Library (Server-side):

    • miro.isAuthorized: Check authorization status.
    • miro.getAuthUrl: Retrieve the OAuth authorization URL.
    • miro.exchangeCodeForAccessToken: Exchange an authorization code for an access token.
    • api.getBoard: Retrieve board information.
    • board.createImageItem: Upload and create an image item on a board.

    Miro Web SDK (Client-side):

    • icon:click event: Handling interactions with the app icon.
    • miro.board.getInfo(): Accessing board metadata.
    • miro.board.ui.openModal(): Opening a modal window.
    • miro.board.ui.openPanel(): Opening a side panel.
  2. Overview of GitHub App Cards Miro app

    main

    The GitHub App Cards Miro app is a full-stack example demonstrating a 2-way synchronization between GitHub issues (specifically deprecated 'Classic' GitHub projects) and Miro app cards.

    Important Limitations:

    • Only deprecated 'Classic' GitHub projects are supported. You cannot connect this to a standard modern GitHub repository unless it uses the Classic project format.
    • This is a demonstration of 2-way sync concepts using free services (Netlify, Supabase, Miro) and is not intended as a production-ready solution.
  3. Understand the Flask Python Starter folder structure

    main

    The project is organized as follows:

    • app.py: The core Python script that manages the Miro OAuth flow and executes Miro REST API calls.
    • templates/index.html: The landing page shown to users who have not yet authorized the Miro app.
    • templates/loggedin.html: The view shown to users after successful Miro authorization.
    • sample.env: A template for environment variables.
    • requirements.txt: List of Python dependencies.
  4. Digital Asset Manager: Core Features and SDK Usage

    main

    The Digital Asset Manager (DAM) example demonstrates how to integrate external asset libraries (like Bynder) directly into Miro boards using the Miro Web SDK.

    Key capabilities implemented include:

    • Panel Management: Using miro.board.ui.openPanel() to display the DAM interface.
    • Event Handling: Listening for drop events via miro.board.ui.on('drop').
    • Asset Insertion: Creating images on the board using miro.board.createImage.
    • UI Interactions: Implementing draggable elements within the app panel and providing search and filter functionality for asset discovery.
  5. Features implemented in Miro Asset Search

    main

    The Asset Search app demonstrates several Miro Web SDK capabilities:

    • Event Handling: Using miro.board.ui.on('drop') to handle assets dropped onto the board.
    • Board Manipulation: Using miro.board.createImage to add images to the board.
    • Viewport Control: Using miro.board.viewport.zoomTo to focus the user's view.
    • UI Management: Using miro.board.ui.openPanel() to manage the app panel.
    • Drag and Drop: Implementing draggable elements within the app panel.
  6. Miro HTML Preview App Overview

    main

    The Miro HTML Preview App demonstrates how to use the Miro REST API to generate HTML pages from Miro boards. This is useful for quickly creating multi-page website mockups.

    Key Workflow:

    • The app prompts for Miro account connection via OAuth.
    • Once signed in, it lists boards under your team.
    • You can view specific frames using the URL pattern: /{boardId}/{frameTitle}.
  7. Miro Template Builder App Features

    main

    The Template Builder app demonstrates how to use the Miro Web SDK to manipulate board content. Key capabilities include:

    • Creating Text: Using miro.board.createText() to add text items to the board.
    • Creating Shapes: Using miro.board.createShape() to add shapes to the board.
    • UI Interaction: Using miro.board.ui.openPanel() to open the app's interface within a Miro board panel.
  8. Explore Full-stack Miro app examples

    main

    These examples demonstrate complex integrations combining the Web SDK, REST APIs, and external services:

    • monetization-with-stripe: Use Stripe to add a paywall for app features.
    • html-preview: Generate HTML pages from Miro boards (each frame becomes a page).
    • github-appcards: Sync data between GitHub issues and Miro app cards.
    • plant-uml: Import Plant UML diagrams as editable board items.
    • nextjs: A Next.js app that uploads camera images to a Miro board using both Web SDK and REST API.
  9. Explore Miro REST API examples

    main

    The following examples demonstrate how to interact with Miro via REST APIs, focusing on OAuth 2.0 flows and specific resource management:

    • python-oauth: Implement OAuth 2.0 authorization code flow in Python.
    • node-oauth: Implement OAuth 2.0 and make API requests in Node.js.
    • node-passport-oauth: Implement OAuth 2.0 using Passport.js in Node.js.
    • nextjs-oauth: Implement OAuth 2.0 in a client-side Next.js application.
    • node-stickies-csv: Use Handlebars.js for server-side rendering to perform CRUD operations on sticky notes and tags via CSV import.
    • python-flask-starter: A Python/Flask boilerplate implementing the full OAuth 2.0 flow with refresh tokens.
    • python-external-oauth: Set up an OAuth 2.0 flow with GitHub to post details to a Miro board.
    • enterprise-team-management: Manage teams and organizations (requires Enterprise plan and Enterprise Team account).
  10. Miro Calendar App Features and SDK usage

    main

    The Calendar app demonstrates how to use the Miro Web SDK to manipulate board content dynamically. It specifically utilizes the following methods to build a calendar using shapes and text:

    • miro.board.createShape(): Used to create the geometric shapes that form the calendar grid.
    • miro.board.createText(): Used to place text (such as dates or labels) onto the board.

    For a deep dive into the implementation, refer to the calendar app tutorial.

  11. Explore Miro Web SDK examples

    main

    The following examples demonstrate how to use the Miro Web SDK to interact with the board and its items:

    • csv-to-mindmap: Import data from CSV and create a mind map.
    • drag-and-drop: Drag and drop images from your app onto the board.
    • asset-search: Filter and search assets by name and/or multiple tags.
    • digital-asset-manager: Build a digital asset manager using Bynder's API.
    • connect-firebase: Connect an SDK app to a Firebase backend.
    • stickynotes-to-shapes: Replace selected sticky notes with shapes via a plugin button.
    • template-builder: Create and position multiple widgets and custom library interfaces.
    • calendar: Add a calendar made with shapes and text for a specific month/year.
    • wordle: Create a Wordle-like game.
    • blob-maker: Create a drag-and-drop blobmaker.
    • youtube-room: Sync a YouTube player across users using Socket.IO.
    • custom-actions: Register custom actions in the item context menu.
    • breakout-rooms: Use collaborative features like real-time storage, events, and sessions.
  12. Folder structure of the Connect Firebase example

    main

    Understanding the project layout:

    • src/app.js: The main application logic. It handles Firebase configuration and pushes template details to the database.
    • src/index.js: Initializes the app and contains logic for opening the app panel.
    • app.html: The application UI, which is loaded into the Miro appContainer.
    • index.html: The entry point for the application; this URL is assigned to sdkUri in the app manifest.
    .
    ├── src
    │  └── assets
    │  └── App.js <-- The main app. Contains logic for configuring the Firebase instance and pushing template details to Firebase.
    │      index.js <-- Initializes app, and contains logic for opening the app panel.
    ├── app.html <-- The app UI itself. This is loaded on the board inside the 'appContainer'.
    └── index.html <-- The app entry point. This is the value you assign to 'sdkUri' in the app manifest file.