GithubHelp home page GithubHelp logo

markboard-io / markboard Goto Github PK

View Code? Open in Web Editor NEW
124.0 5.0 14.0 18.86 MB

Wysiwyg markdown whiteboard for note-taking and building team knowledge base.

Home Page: https://markboard.io

License: MIT License

CSS 0.13% HTML 0.05% TypeScript 86.64% JavaScript 8.00% SCSS 5.17% Dockerfile 0.01%
whiteboard chatgpt collaboration collabration digital-whiteboard markdown markdown-editor markdown-whiteboard miro miro-alternative

markboard's People

Contributors

ccbond avatar culturalprofessor avatar shiqimei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

markboard's Issues

Help panel z-index is not correct

Describe the bug
A clear and concise description of what the bug is.

image

Help panel's z-index should be greater than onboarding arrow.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

markboard MVP version roadmap

High-level Roadmap

  • Core Board Features
  • Accounts/Users/Permission
  • Documents: Lexical Markdown
  • Video Conferencing: Jisti Meeting
  • Team Chat: TODO

Features will be included in MVP

  • Core Board Features
    • Digital Whiteboard: Excalidraw Integration & Customization
      • Images not display correctly
      • Fonts not loaded correctly
      • Integrate Excalidraw Sync Service
      • StickyNote Support (- based shape implementation background color, fixed aspect ratio, shadow, double click to edit) & Icon Design (triangle corner over square)
      • Move Library icon into menubar island with seperator
      • Dark Mode should be applied to sidebar and other elements (Theming should be working across the entire project)
      • CSS Modules Not Support (varibles.module.scss may cause somthing broken)
      • Make i18n shared among the entire project
      • Fix i18n not working issue
      • ToggleTheme functions not working correctly <div>{actionManager.renderAction('toggleTheme')}</div>
      • Remove unused files from excalidraw folder
      • Support Dots Background / (Grid Background, Pure Color Background)
      • File Uploads
      • PWA: Make workbox working
      • Replace Loading Scenes into BoardX logos P3: Low Priority
    • Sidebar Navigation
    • Migrate BoardX-v1 files and render them
  • Accounts/Users
    • Login Page UI
    • Sign Up Page / Logout Button
    • Password Login
    • Reset Password (Configure Email Service)
    • Move Menu Island to Help Icon
    • Logout & Sidebar User Info Bar
    • OAuth Login
    • Protected Route
    • Role-based Permission Authentication & Authorization
    • Admin Page & Admin Role (First-registered User is admin, and he can assign roles to others)
      • Configure Orignazition name
    • Users whiteboards/documents persistence
  • Documents
    • Integrating lexical markdown into project
    • Use GridFS as default option. (AWS File Uploading is not in MVP)
    • "Noto" codeblock color scheme
  • Generative AI Migration (ziwei)
  • CI & CD
    • build open.boardx.us for previewing
    • build docs.boardx.us for documentation (vercel)
  • Data Monitoring
    • Google Tag Manager/Google Analytics Integration
    • clarity.ms Integration
  • Search Anything
    • Search Users (start direct messages)
    • Search content in the whiteboard/documents

Why using Excalidraw instead of Fabricjs?

  • Out-of-box features we've struggled before, we don't need to build them from scratch.
    • grouping
    • arrow
    • sync features
    • back to the content (fit to screen)
    • theming (dark mode)
  • Super-fast loading experience (under 1 second to complete the rendering)

Features will not be included in MVP

  • Mobile UI Support
  • Multi-Teams Support (It doesn't make sense to support it in our community version, so one instance one team)

Double-click can't edit text on cursor's point (need another click to edit)

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Support favorites

Background

Currently, BoardRecord has a property favorite labeings whether a board is favorited by a user, but this it not robust when we need to support multiple users later (a board is favorited by multiple users). We'd better use a new collection board_favorites to store such relationships.

Actions

  1. remove favorite key from BoardRecord, and all related stuff;
  2. add a new collection board_favorites, add a new file BoardFavoritesCollection in the models folder
  3. define inteface BoardFavoriteRecord
    interface {
      userId: string
      boardId: string
    }
  • when user starred a board, we add a new record to { userId, boardId } to board_favorites collection
  • when user unstarred a board, we remove this record
  • getFavoriteBoardsByUserId, is query { userId }
  1. Services & Subscriptions

4.1. add following public methods for clients to call

public starBoard(boardId: string): Promise<void> // we get userId with Meteor.userId() on server
public cancelStarBoard(boardId: string): Promise<void>
public getMineFavoriteBoards(): Promise<IBoard[]> // get favorite board ids in `board_favorites` and query boards in `boards`

4.2 add BoardFavoritesSubscriber to subscribe changes to board_favorites

4.3 add global atom states to update state in favorites sidebar and top right bar

sources

  1. filled star icon svg :
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" preserveAspectRatio="xMidYMid meet" class="" style="vertical-align: middle;"><g fill="currentColor"><path d="M8 0.350006C8.30049 0.350006 8.57286 0.526798 8.6952 0.801258L10.6192 5.11752L15.3187 5.61353C15.6176 5.64507 15.8699 5.84948 15.9627 6.13526C16.0556 6.42104 15.9716 6.73471 15.7484 6.93588L12.2379 10.0995L13.2184 14.7223C13.2808 15.0163 13.1643 15.3194 12.9212 15.496C12.6781 15.6726 12.3539 15.6897 12.0936 15.5396L8 13.1785L3.90643 15.5396C3.64614 15.6897 3.32187 15.6726 3.07877 15.496C2.83567 15.3194 2.71923 15.0163 2.78158 14.7223L3.76209 10.0995L0.251619 6.93588C0.0283977 6.73471 -0.0555759 6.42104 0.0372811 6.13526C0.130138 5.84948 0.382443 5.64507 0.681275 5.61353L5.38083 5.11752L7.3048 0.801258C7.42714 0.526798 7.69951 0.350006 8 0.350006Z"></path></g></svg>
  1. filled star icon color: #f0c000 (yellow)

  2. preview

    image

Support search

As a personal knowledge-base, it's really frastrating if we can't use "search" feature.

image

I will be very cool if we could have such "search spotlight" in the near future.

Make board data sync work

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Support uploading files to cloudflare

  1. get presigned upload url from server
  2. upload files to cloudflare (event: 'start' | 'progress' | 'success' | 'error')
  3. save uploaded url to database

Providers/Adapters

  1. default GridFS
  2. Cloudflare

external interface

  • uploadFile(file: File, callback(event))
  • uploadFileWithPreview internally call uploadFile but with extra preview (compressed) image uploaded

Add demo link to users don't need to signup/login to see how it works.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Write something placeholder

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Use "Inter" font and better line-height configuration (to make it more like a text editor)

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Integrate ChatGPT API into markboard

Background

Since ChatGPT API has been released these days. We need to integrate ChatGPT into our product as soon as possible to chase the audience.

Details

  1. .env.example, .env. CHATGPT_API_KEY, CHATGPT_API_SECRET; process.env.HTTPS_PROXY
  2. Investigate whether ChatGPT session. create a session for each board.
  3. ChatGPTService
    chat(boardId: string, input: string): Promise<string>
  4. main.tsx Services.get('board')
    global.d.ts window
    window.Services = Services

Add `version` to `BoardRecord` to avoid old version replace new version

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

I can't type anything when sharing screen to others

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Link detection (when a link pasted, it should be recognized as a link)

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

We can't upload `svg` files now

react_devtools_backend.js:2655 
r {isClientSafe: true, error: 500, reason: '[FilesCollection] [insert] Insert method accepts F… property, and its size must be larger than zero.', details: undefined, message: '[FilesCollection] [insert] Insert method accepts F…rty, and its size must be larger than zero. [500]', …}
details
: 
undefined
error
: 
500
errorType
: 
"Meteor.Error"
isClientSafe
: 
true
message
: 
"[FilesCollection] [insert] Insert method accepts File, not a FileList. You need to provide a real File. File must have `.name` property, and its size must be larger than zero. [500]"
reason
: 
"[FilesCollection] [insert] Insert method accepts File, not a FileList. You need to provide a real File. File must have `.name` property, and its size must be larger than zero."
stack
: 
"Error: [FilesCollection] [insert] Insert method accepts File, not a FileList. You need to provide a real File. File must have `.name` property, and its size must be larger than zero. [500]\n    at new b (https://markboard.io/2197b2c2f8831006548925bc97adc62ba43cc103.js?meteor_js_resource=true:307:20409)\n    at p.insert (https://markboard.io/2197b2c2f8831006548925bc97adc62ba43cc103.js?meteor_js_resource=true:307:5278)\n    at eval (/imports/services/client/files.ts:1:122)\n    at new Promise (<anonymous>)\n    at l (/imports/services/client/files.ts:1:91)\n    at eval (/imports/excalidraw/components/ExcalidrawCore.tsx:1:47231)\n    at new Promise (<anonymous>)\n    at Vs.initializeImage (/imports/excalidraw/components/ExcalidrawCore.tsx:1:47126)\n    at async Vs.insertImageElement (/imports/excalidraw/components/ExcalidrawCore.tsx:1:47822)"
[[Prototype]]
: 
Error

Images sync not working properly

Describe the bug
A clear and concise description of what the bug is.

  • position not synced
  • sizes need to be confirmed

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

We can't control textElement's width manually

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Add support for UserList

Technical details:

  1. display a UserList in the right to replace the current buttton (refers to our UI design);
  2. to display all online users on this board (refer to js.design)
  3. we don't need to support watch in the MVP version
  4. ExcalidrawSyncService, Collab.tsx
    • room - boardId
    • getUserListByBoardId (not from MongoDB, from SyncService memory)
  5. no permission control in the MVP version

Behaviour:

  • A, B on the board http://localhost:3000/board/yidoD7FxvDNwNsRjh, UserList should be A, B.
  • A, B, C -> A, B +1

Make text elements word wrap

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Support multiple boards management (Stage 1)

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

  • create new board
  • list all boards
  • remove boards

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Board not updated when receive updates from remote server

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

[NEW] Should navigate to /board/:id after login

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Scss Modules Support

We need to introduce support for SCSS modules as soon as possible to avoid polluting our stylesheets.

[NEW] Add skeleton layout as loading fallback

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

[FIX] Page stucks when loading in production mode

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.