summaryrefslogtreecommitdiff
path: root/docs/dev
diff options
context:
space:
mode:
Diffstat (limited to 'docs/dev')
-rw-r--r--docs/dev/getting-started.md57
-rw-r--r--docs/dev/ot.md14
-rw-r--r--docs/dev/webpack.md9
3 files changed, 79 insertions, 1 deletions
diff --git a/docs/dev/getting-started.md b/docs/dev/getting-started.md
new file mode 100644
index 00000000..07524971
--- /dev/null
+++ b/docs/dev/getting-started.md
@@ -0,0 +1,57 @@
+Developer Notes
+===
+
+## Preparing for running the code
+
+**Notice:** *There's [specialised instructions for docker](../setup/docker.md) or [heroku](../setup/heroku.md), if you prefer running code this way!*
+
+1. Clone the repository with `git clone https://github.com/codimd/server.git codimd-server`
+ (cloning is the preferred way, but you can also download and unzip a release)
+2. Enter the directory and run `bin/setup`, which will install npm dependencies
+ and create configs. The setup script is written in Bash, you would need bash
+ as a prerequisite.
+3. Setup the [config file](../configuration-config-file.md) or set up
+ [environment variables](../configuration-env-vars.md).
+
+
+## Running the Code
+
+Now that everything is in place, we can start CodiMD:
+
+4. `npm run build` will build the frontend bundle. It uses webpack to do that.
+5. Run the server with `node app.js`
+
+
+## Running the Code with Auto-Reload
+
+The commands above are fine for production, but you're a developer and surely
+you want to change things. You would need to restart both commands whenever you
+change something. Luckily, you can run these commands that will automatically
+rebuild the frontend or restart the server if necessary.
+
+The commands will stay active in your terminal, so you will need multiple tabs
+to run both at the same time.
+
+4. Use `npm run dev` if you want webpack to continuously rebuild the frontend
+ code.
+5. To auto-reload the server, the easiest method is to install [nodemon](https://www.npmjs.com/package/nodemon)
+ and run `nodemon --watch app.js --watch lib --watch locales app.js`.
+
+
+## Structure
+
+The repository contains two parts: a server (backend) and a client (frontend).
+most of the server code is in `/lib` and most of the client code is in `public`.
+
+```text
+codimd-server/
+├── docs/ --- documentation
+├── lib/ --- server code
+├── test/ --- test suite
+└── public/ --- client code
+ ├── css/ --- css styles
+ ├── docs/ --- default documents
+ ├── js/ --- js scripts
+ ├── vendor/ --- vendor includes
+ └── views/ --- view templates
+```
diff --git a/docs/dev/ot.md b/docs/dev/ot.md
new file mode 100644
index 00000000..924be693
--- /dev/null
+++ b/docs/dev/ot.md
@@ -0,0 +1,14 @@
+Operational Transformation
+===
+
+From 0.3.2, we started supporting operational transformation.
+It makes concurrent editing safe and will not break up other users' operations.
+Additionally, now can show other clients' selections.
+
+See more at [https://operational-transformation.github.io/](https://operational-transformation.github.io/)
+
+And even more in this 2010 article series:
+
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_21.html
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_22.html
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html
diff --git a/docs/dev/webpack.md b/docs/dev/webpack.md
index 7b391f3a..b05fd1d3 100644
--- a/docs/dev/webpack.md
+++ b/docs/dev/webpack.md
@@ -1,4 +1,11 @@
-# Webpack Docs
+Webpack
+===
+
+Webpack is a JavaScript build system for frontend code. You can find out all
+about it on [the webpack website](https://webpack.js.org/).
+
+Here's how we're using it:
+
## `webpack.common.js`
This file contains all common definition for chunks and plugins, that are needed by the whole app.