A powerful, real-time collaborative Markdown editor inspired by Google Docs and Overleaf. Built with React, Phoenix, and Haskell, this project brings team-based editing to the next level with custom .mds
format support, Unsplash image embeds, and live synchronization.
2024-12-14.21-19-44.mp4
-
Real-Time Collaboration:
-
Edit Markdown documents with your team simultaneously. See edits in real-time near instantly!
-
Custom
.mds
Format:
Extend Markdown with powerful features:-
!![Your Title]
: Add beautiful document titles. - WIP:
-
!gif[search term]
: Embed GIFs on the fly. -
!image[unsplash term]
: Seamlessly add images from Unsplash.
-
-
-
Live Preview:
-
Instantly preview Markdown-rendered content as you type.
-
Unsplash Integration:
-
Quickly embed stunning, royalty-free images.
-
History Tracking:
-
Built-in undo/redo functionality.
Component | Technology |
---|---|
Frontend | React, CodeMirror, react-markdown, phoenix |
Backend | Elixir + Phoenix Framework |
Parser | Haskell + Pandoc |
Database, ORM | PostgreSQL, Ecto |
APIs | Unsplash API |
- Share your document with team members. All changes are synchronized in real-time.
- Add titles:
!title[My Document Title]
- Embed a GIF:
!gif[coding cat]
- Add an Unsplash image:
!image[forest]
markdown-docs/
├── msd-frontend/ # React frontend
├── mds-backend/ # Elixir Phoenix backend
├── mds-parser/ # Haskell-based .mds parser
└── mds-docs/ # Project documentation
graph TD
subgraph MDS-Converter
A[mds-converter]
end
subgraph MDS-Backend
B[mds-backend]
end
subgraph Database
D[(PostgreSQL)]
end
subgraph MDS-Frontend
C[mds-frontend]
end
%% Supervisor relationship between MDS-Converter and MDS-Backend
A <-->|Supervisor| B
%% Ecto relationship between MDS-Backend and PostgreSQL
B <-->|Ecto| D
%% WebSocket relationship between MDS-Backend and MDS-Frontend
B<-. Preview Channel .->C
B<-. File Channel .->C
We're welcome to contributions! But only in the form of requested features in the form of 'issues' 👼
Feel free to request any feature you won't in the mds-backend
, mds-frontend
or mds-parser
repos
- Basic Markdown editor with live preview.
- Real-time collaboration with WebSocket support.
- Custom
.mds
parser in Haskell. - File storage on backend
- Rest API for downloading / loading files
- Haskell Parser integration & separate sockets for preview & context
- Unsplash API integration.
- Export to PDF.
- Mobile-friendly UI.
This project is licensed under the Apache License 2.0.
- Boris Dvorkin: Lead Developer, DevOps Engineer, Fullstack Engineer (Elixir and React)
- Alexander Razinkin: Fullstack Engineer (Elixir and React)
- Roman Kobelev: Fullstack Engineer (Elixir and React)
- Artem Balin: Software Engineer (Haskell)
For questions or feedback, feel free to open an issue.