Code Monkey home page Code Monkey logo

codimd's Introduction

CodiMD

build status version Gitter Matrix POEditor

CodiMD lets you collaborate in real-time with markdown. Built on HackMD source code, CodiMD lets you host and control your team's content with speed and ease.

screenshot

Table of Contents

HackMD

HackMD helps developers write better documents and build active communities with open collaboration. HackMD is built with one promise - You own and control all your content:

CodiMD - The Open Source HackMD

CodiMD is the free software version of HackMD, developed and opened source by the HackMD team with reduced features (without book mode), you can use CodiMD for your community and own all your data. (See the origin of the name CodiMD.)

CodiMD is perfect for open communities, while HackMD emphasizes on permission and access controls for commercial use cases.

HackMD team is committed to keep CodiMD open source. All contributions are welcome!

Documentation

You would find all documentation here: CodiMD Documentation

Deployment

If you want to spin up an instance and start using immediately, see Docker deployment. If you want to contribute to the project, start with manual deployment.

Configuration

CodiMD is highly customizable, learn about all configuration options of networking, security, performance, resources, privilege, privacy, image storage, and authentication in CodiMD Configuration.

Upgrading and Migration

Upgrade CodiMD from previous version? See this guide
Migrating from Etherpad? Follow this guide

Developer

Join our contributor community! Start from deploying CodiMD manually, connecting to your own database, learn about the project structure, to build your changes with the help of webpack.

Contribution and Discussion

All contributions are welcome! Even asking a question helps.

Project Contribution Types Contribution Venue
CodiMD 👫 Community chat Gitter
🐛 Issues, bugs, and feature requests Issue tracker
📚 Improve documentation Documentations
📝 Translation POEditor
☕ Donation Buy us coffee
HackMD ❓ Issues related to HackMD Issue tracker
✏️ Translation hackmd-locales

Browser Support

CodiMD is a service that runs on Node.js, while users use the service through browsers. We support your users using the following browsers:

  • Chrome Chrome >= 47, Chrome for Android >= 47
  • Safari Safari >= 9, iOS Safari >= 8.4
  • Firefox Firefox >= 44
  • Edge Edge >= 12
  • Opera Opera >= 34, Opera Mini not supported
  • Android Browser >= 4.4

To stay up to date with your installation it's recommended to subscribe the release feed.

License

License under AGPL.

codimd's People

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  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

codimd's Issues

Show profile image if available

Currently we support facebook, twitter, github and dropbox signin.
If user have a profile image then show it, and if not, find avatar via profile email, else show the color.

Annotation

Let user to annotate some parts of the text or paragraph to comment and discuss.
Like google doc dose.
Need to do more research on this.

Need tests

For now, it's hard to test anything.
But it should be done.

Support operational transformation

When two user input in same time, it might cause race condition if the operation request reach the server at a moment.
Or user might undo & redo to other peoples' changes.
To solve these situation, there is a technique called Operational Transformation.
And below are some open source library we can use:

https://github.com/Operational-Transformation/ot.js
https://github.com/share/ShareJS

ot.js seems a better solution, because it also use codemirror as it's editor.
ShareJS will spend more effort, because it use it's own custom db.

Set document max length

This morning an error occur and cause server down.
It's a 586218 long document and server too long time to parsing it.
Now we need to set a limit and remind user if reach the top.

Database schema

For a local install the database schema is required. Is this provided somewhere here?

Support local signin

There might be some users not using any services we used to do a third-party auth.
So we need a local signin solution, currently we're using passport as the auth middleware.
Then using passport-local to support this will be the best.

Either choose PostgreSQL or MongoDB

First of all, thank you for open source this software!

I only have one issue with it: It uses two full-tiered databases. As far as I can see there is only one table in the PostgreSQL database. That looks like is a huge overhead. Could you please reduce the number of database systems to 1?
I plan to use hackmd for ad-hoc documentation running in a vagrant box. It would be great to reduce the footprint of hackmd in this box. :)

DATABASE_URL这个是什么格式

➜ hackmd git:(master) ✗ bash run.sh
error: Forever cannot find process with id: hackmd

DATABASE_URL='change this'
MONGOLAB_URI='change this' \

这两个是什么格式?

Inline popover or shortcut

As people ask for, to have a popover toolbar(bold, italic...) on the selection text or shortcut keys for markdown will be more friendly to beginners.

Multiple Configs and Daemon Tools

The first thing I need to know when I set up an instance of HackMD, ist where the config is located. But it looks like there are many redundancies here.

The DATABASE_URL and MONGOLAB_URI are located in the config.js, processes.son and run.sh.

Why? And why we need those daemon tools at all? All my node projects I've done so far contains a single config.js file which is included everywhere I need to and do not contain daemon tools at all.

They sometimes may have advantages, but this should not be a part of the project. If some user decide to use it, he can set it up himself, but the server should be able to be started with a simple node(js) app.js command.

空行

我需要空行的語法

Setup Problems

I tried to set up a development instance yesterday, and I can't get it running. The redirect form /new to /:id works, then the page loads and stucks with the loading indicator. I think it could be a socket.io problem, but I haven't debugged it further (no client JS errors are shown).

Are your familiar with this issue or have an advice?

Allow *free url* mode like etherpad

I really like hackmd, I have a dedicated local instance for my personal notes and use it everyday for my projects.

In this context I'd like to be able to choose my URLs instead of having them generated trough uuid.
This would allow a better organisation of notes and easy linking between them.

So basically, entering a non existing url eg: /projects/foobar will automatically create a note at this url.

This coupled to a kind of global userspace option, hackmd could even be used as a wiki or an internal reference web space.

I understand this feature is incompatible with the default usage of hackmd which has a per-user context separated design, this is why I propose to allow this new behavior as an opt-in configuration option.

If you agree with the principle I'll work on that and propose a pull request some day.

Owner & Contributors

Find a place to show the owner.
And record the contributors who ever change the note.

Flow chart is not shown correctly

Some flowcharts are not shown correctly.

For example:

```flow
s=>start: Start
e=>end: End
c=>condition: condition
o=>operation: operation

s->o
o->c
c(yes)->o
c(no)->e
```

Open APIs

Maybe can open some APIs to let third-party application to use

Use dependency managers

Use npm/bower + webpack and greenkeeper to help to manage the resources.
Reduce the repo size and redundant codes.

Group or Workspace

Need a group page or a workspace for a small team.
Should use subdomain to provided better experience.

Refactor client codes

Client side codes now are really a mess.
Should divided scripts into parts according to its usage.
And minify them then include.

Authorship highlight

Currently we support extra tags in blockquote and todo list.
But it should be done in other ways like encode.
like below:

    <!--meta(paragraph_by: ..., line_segment_by: [{foo: , bar: }])   -->

Better table support

Table always a big issue in markdown.
Not only hard to maintain or collaborate and also ugly.
May think a unique way to solve.
Not a critical issue.

Wrong file paths in pretty.ejs

In /public/views/pretty.ejs almost all script paths are combined with the 'url' var to absolute paths

For example:

<link rel="stylesheet" href='<%- url %>/css/site.css'>

This makes some problems behind a proxy.

Is there any reason, why absolute paths are needed here? The only one I could imagine would be to enable the possibility to embed the page on another webpage or in some download.

And where ist this url taken form? It's not the domain or getserverurl(), which is defined in the config.

Use pandoc

Actually pandoc is pretty good.
It support so many export format and conversions (even export to pdf).
And it can support asciidoc as a cool guy suggested.
http://pandoc.org/

預覽頁面出現再製片段

default
敝人使用的是 Firefox Nightly 44.0a1
這份文件只有我一個人在編輯,可是在大量增刪內容時卻出現片段重複內容

原始碼沒有問題,可是預覽貌似沒有同步齊全

先求短期應變方法,老實說我不知道這算不算是一種bug

Markdown line breaks

Hi,

When writing some markdown using hackmd there's only one thing that bothers me, it's the carriage return ==
behavior which is not supposed to happen.

Original markdown "spec" states:

When you do want to insert a <br /> break tag using Markdown, you end
a line with two or more spaces, then type return.

Yes, this takes a tad more effort to create a <br />, but a simplistic
“every line break is a <br />” rule wouldn’t work for Markdown.
Markdown’s email-style blockquoting and multi-paragraph list items work
best — and look better — when you format them with hard breaks.

I understand that this is a debatable behavior, maybe an option to select the behaviour could work.

Feature Suggestions

  1. 支援AsciiDoc,除了使用偏好,許多md的擴充語法在ad已標準化,
  2. 所見即所得表格編輯,Hackpad的優點,點選複數表格欄位編輯,
  3. 往IPython/Beaker靠攏,除了貼上程式碼,也能執行顯示輸出結果,參考http://beakernotebook.com

AsciiDoc: http://www.methods.co.nz/asciidoc/
AsciiDoctor: http://asciidoctor.org/
Table: http://www.tablesgenerator.com/
Beaker: http://beakernotebook.com


  1. Support AsciiDoc, besides preferences, lots of extension in md already standardized in ad.
  2. WYSIWYG table editing, it's a pros in Hackpad - editing in multiple cells.
  3. Go with IPython/Beaker, not only copy/paste code but also show the output, refer: http://beakernotebook.com

Suggest edit

If user don't have the permission but want to involve in.
They can use annotation to suggest, like a comment.
Then can be accepted later by owners.

Browse restriction and noindex robot

Privacy and security are really important.
Some users might want to restrict even browsing.
And also prevent search engine index those notes.
Let's do it.

Standalone app

Can make a chrome extension looks like https://dragdis.com/
Would be great to quick access notes and organize them.

Chrome apps can help to do an offline editing and saving images in local.
Even more convenient to access notes without loading remote resources.

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.