Technology selection for mdwiki development

Time:2020-2-4

Mdwiki is a markdown wiki system, which can be used as a knowledge base management system for individuals or small teams. Project address: given in the last article of this series (it will take time to organize and test)

Why do I develop mdwikis?

At present, my knowledge base management system adopts DokuWiki, which is a very powerful wiki system developed in PHP. Unfortunately, markdown grammar writing is not supported.
In addition, I have started to learn Python and reptile. So I decided to write a markdown wiki system in Python. In the early stage, integration crawler is not considered, and in the later stage, integration crawler is considered (so there is no need to copy and paste some good articles).

Technology selection

Python3 or 2.7?

As a rookie, python 3 is bound. Why? Just to support UTF-8 natively. (joking), because Python 3 represents Python’s future, and more and more libraries have been migrated to Python 3, there is no reason not to choose it.

IDE selection:

Pycharm + sublime Text3, which is unnecessary to explain.

Web framework selection:

Flask (why? This is the only one, and we all agreed. )

Server selection:

Nginx + gunicorn should be a more popular solution, and it will not be explained too much.

Database selection:
SQLite+Redis

Deployment mode:
Supervisor manages nginx + gunicorn
Fabric remote Publishing

Browser compatibility:
Don’t think about the evil IE

Back end library selection:
Flask Web Framework
Jinja2 flag officially specifies template engine
Sqlalchemy ORM framework
Celery task scheduling
Whoosh + Jieba: Information Retrieval
OSS 2: Alibaba cloud OSS cloud storage SDK
Redis: redis’s Python connection client
Markdown: backend markdown parsing

The flask plug-in is as follows:
Flask Babel international plug-in
Flask script command line plug-in
Flask Sqlalchemy ORM plug-in integration
Flask migrate data migration plug in
Flask WTF form plug-in
Flask login plug-in
Flask principal permission management
Flask security plug-in
Flash mail plug-in
Flash cache plug-in
Flash testing test plug-in
Flask moment localization time date

Front end library selection:

Gulp front-end resource management and packaging, you can refer to my article: small projects organized by gulp

Animate.css special effects
Bootstrap knows everything
jQuery
JQuery plug-in: validate, fancybox, jQuery UI
Simplemde markdown editor
Webuploader Baidu open source file upload component
Toaster a beautiful notification component
Tag.js tag input component
Highlight.js code highlight

The next topic is to be decided