Wizard is an open source document management system. The project address is github.com/mylxsw/wiza… . I started to develop this project in 2017. At first, I just wanted to make a tool for Swagger document management in the company. However, in the past two years, I have been adding various functions to it intermittent. now I have finally decided to release version 1.0, which currently supports three types of document management

  • Markdown: It is also the main document type of Wizard, and the most common document type used by the R&D team in daily work. In Wizard, the function of the editor. md project has been expanded, adding document template, Json to form, picture paste upload and other functions

  • Swagger: Support OpenAPI 3.0 specification, embedded Swagger official editor, through custom development, make it into the Wizard project, support document template, full-screen editing, automatic document synchronization function

  • Table: This document type is similar to Excel spreadsheet. It uses the X Spreadsheet project, which is embedded in the Wizard. It is not perfect yet

Currently, it mainly contains the following functions

  • Swagger, Markdown, Table type document management
  • Document modification history management
  • Document modification difference comparison
  • User Rights Management
  • Project Group Management
  • LDAP unified identity authentication
  • Document search, tag search
  • Reading model
  • Document review
  • alerts
  • Document sharing
  • statistics

If you want a quick taste of what the Wizard can do, there are two ways

  • For online experience, visit wizard.aicod. cc. Currently, only some functions are provided. For function preview and usage instructions, see Wiki.

  • Use Docker to create a complete Wizard service

    To quickly create a Wizard service, go to the root of your project and execute docker-compose up at http://localhost:8080.

The origin of

In order to encourage people to write development documents, we chose the ShowDoc project as the document management tool at the beginning. The team size was very small at that time, and everyone used Markdown to write simple development documents directly. Later, with the expansion of the team, the separation of the front and back ends, and the division of labor of the team, it became difficult to use Markdown only. At this time, we first thought of using Swagger to create development documents which is popular in the open source world. But Swagger has to be maintained somewhere, right?

Swagger is also not enough for project documents. It is only suitable for API document management. There are many other documents, such as design documents, flow charts, architecture documents, technical solutions, database changes, etc., which need to be maintained together. So, IN my spare time, I decided to develop a document management tool that supported Markdown and Swagger, the Wizard project.

At first, I planned to use Go language for development, but after a few days, I found that using Golang to do Web project development efficiency is too low (rapid development efficiency, not performance, Golang API interface development is very good), and many common functions need to be realized by myself, so I gave up using Golang. Instead, use PHP’s Laravel framework for development. So although the project was created on July 27, 2017, it actually started on July 31, 2017.

At the beginning, the Wizard project was a simple idea. It was just used to put Markdown documents and Swagger documents together, and a simple management interface was enough. However, after being used in the team, it was found that as a document management tool in the enterprise, it was not enough to provide simple document management functions. Such as permission control, document modification history, document search, document classification and other functional requirements are constantly put forward, which also contributes to the Wizard project more and more perfect functions.

  • User permission management refers to Gitlab’s permission management mode. In terms of user identity, only administrators and ordinary users are distinguished. Users’ permissions are carefully managed by creating user groups.
  • Project grouping in the Wizard, documents are organized by the project as a unit, found at the beginning of this is OK, later more and more projects, project grouping function arises at the historic moment, in the form of directory to organize the project structure.
  • Document Modification history The Wizard records a snapshot of each document modification to avoid loss caused by incorrect document modification. You can use the document history to quickly recover the document. Key operations such as document modification, addition, and deletion are recorded in audit logs and displayed in the form of recent activities.
  • Document contrasts between In team work, often can appear a lot of people to modify the same document, in order to avoid conflict, revised document, other people in the old version of history, the system will prompt the user document content changes, the user can through the document comparison function to find out what happened to the content in the document modification.
  • Reading mode When using a projector to present a technical solution, in order to reduce unnecessary interference, use reading mode to show only the content of the document, providing a better presentation experience.
  • Document search You can quickly search for documents by document title. The full-text search function will be added later.
  • Many companies use LDAP to manage employee accounts in a unified manner. Employees use the same account to log in to various systems, such as Jira, Wiki, and Gitlab. The Wizard also supports LDAP, requiring only a few simple configurations. You can quickly access the company’s unified account system.
  • Document attachment, document sharing, statistics, Document sorting, template management, document comments…

About the code

The project is developed using the Laravel framework, and the current version has been upgraded to the latest 5.8 (originally 5.4, all the way through). In order to improve the development efficiency and keep the architecture simple, we avoid introducing too many external components in the development process and try our best to use various components provided by Laravel, such as Authentication, Authorization, Events and Mail. Notifications, etc. are ideal for learning the Laravel framework.

conclusion

If you’re looking for a free open source development document /API document management tool for your company, consider the Wizard project. You won’t be disappointed. If you are new to PHP or Laravel and are looking for a project to learn how to do Web development with Laravel, this project is not to be missed!

Finally, the most important part of this article, hurry to Star, incidentally give me a Star ah! If you can contribute points Issues or P R, it is better 😄!