Wizard 开源文档管理系统1.0发布啦

Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard。这个项目是 在2017年就开始开发的,起初只是想作一款可以在公司内部把Swagger文档管理起来的工具,但在这近两年的时间里,一直断断续续的为其添加各类功能,如今终于下决心发布1.0版本了,目前支持三种类型的文档管理laravel

  • Markdown:也是Wizard最主要的文档类型,研发团队平常工做中交流所采用的最经常使用文档类型,在 Wizard 中,对 Editor.md 项目进行了功能扩展,增长了文档模板,Json 转表格,图片粘贴上传等功能

    -w590

  • Swagger:支持 OpenAPI 3.0 规范,嵌入了 Swagger 官方的编辑器,经过定制开发,使其融入到 Wizard 项目当中,支持文档模板,全屏编辑,文档自动同步功能

    -w594

  • Table:这种文档类型是相似于 Excel 电子表格,采用了 x-spreadsheet 项目,将该项目嵌入到了 Wizard 中,目前还不是很完善

    -w592

目前主要包含如下功能git

  • Swagger,Markdown,Table 类型的文档管理
  • 文档修改历史管理
  • 文档修改差别对比
  • 用户权限管理
  • 项目分组管理
  • LDAP 统一身份认证
  • 文档搜索,标签搜索
  • 阅读模式
  • 文档评论
  • 消息通知
  • 文档分享
  • 统计功能

若是想快速体验一下Wizard的功能,有两种方式github

  • 在线体验请访问 http://wizard.aicode.cc/ ,目前只提供部分功能的体验,功能预览和使用说明请参考 Wiki
  • 使用Docker来建立一个完整的Wizard服务

    进入项目的根目录,执行 docker-compose up,就能够快速建立一个Wizard服务了,访问地址 http://localhost:8080 。docker

起源

为了鼓励你们写开发文档,最开始咱们选择了 ShowDoc 项目来做为文档管理工具,当时团队规模也很是的小,你们都是直接用 Markdown 写一些简单的开发文档。后来随着团队的壮大,先后端分离,团队分工的细化,仅仅采用 Markdown 开始变得捉襟见肘,这时候,咱们首先想到了使用开源界比较流行的 Swagger 来建立开发文档。可是 Swagger 文档多了,总得有个地方维护起来吧?数据库

项目中的文档仅仅用Swagger也是不够的,它只适应于API文档的管理,还有不少其它文档,好比设计文档,流程图,架构文档,技术方案,数据库变动等各类文档须要一块儿维护起来。所以,我决定利用业余时间开发一款 支持 Markdown 和 Swagger 的文档管理工具,也就是 Wizard 项目了。后端

起初打算用 Go 语言来开发,可是没过几天发现使用 Golang 来作 Web 项目开发效率过低(快速开发效率,并不是指性能,Golang作API接口开发仍是很不错的),不少经常使用的功能都须要本身去实现,遂放弃使用 Golang,转而使用 PHP 的 Laravel 框架来开发。因此虽然项目建立的时间为 2017年7月27日,可是实际上真正开始的时间应该算是 2017年7月31日。架构

-w986

起初Wizard项目的想法比较简单,只是用来将 Markdown 文档和 Swagger 文档放在一块儿,提供一个简单的管理界面就足够了,可是随着在团队中展开使用后,发如今企业中做为一款文档管理工具来讲,只提供简单的文档管理功能是不够的,好比说权限控制,文档修改历史,文档搜索,文档分类等功能需求不断的被提出来,所以也促成了 Wizard 项目的功能愈来愈完善。框架

  • 用户权限管理 参考了 Gitlab 的权限管理方式,在用户的身份上只区分了 管理员普通用户,经过建立用户组来对用户的权限进行细致的管理,同时每一个项目都支持单独的为用户赋予读写权限。
  • 项目分组 在 Wizard 中,文档是以项目为单位进行组织的,刚开始的时候发现这样是OK的,后来项目愈来愈多,项目分组功能应运而生,以目录的形式来组织项目结构。
  • 文档修改历史 每次对文档的修改,Wizard 都会记录一个快照,避免错误的修改了文档而形成损失,能够经过文档历史快速的恢复文档,对文档的修改,新增,删除等关键操做都会记录审计日志,以最近活动的形式展现出来。
  • 文档差别对比 在团队协助中,常常会出现不少人修改同一份文档,为了不冲突,文档修改后,其它人在提交旧的历史版本时,系统会提示用户文档内容发生了变动,用户能够经过文档比对功能找出文档中有哪些内容发生了修改。
  • 阅读模式 当使用投影仪展现文档来过技术方案的时候,为了减小没必要要的干扰,使用阅读模式,只展现文档内容部分,提供更好的展现体验。
  • 文档搜索 经过搜索功能快速查找须要的文档,目前支持经过文档标题来搜素文档,后续会增长全文检索功能。
  • LDAP支持 不少公司都会使用 LDAP 来统一的管理公司员工的帐号,员工的在公司内部的全部系统中都是用同一套账号来登陆各类系统好比 Jira,Wiki,Gitlab 等,Wizard 也提供了对 LDAP 的支持,只须要简单的几个配置,就能够快速的接入公司的统一账号体系。
  • 文档附件文档分享统计文档排序模板管理文档评论 ...

关于代码

项目采用了 Laravel 框架开发,目前版本已经升级到最新的 5.8(最开始为5.4,一路升级过来)。为了提升开发效率,保持架构的简洁,在开发过程当中,一直避免引入过多的外部组件,尽量的利用 Laravel 提供的各类组件,好比 AuthenticationAuthorizationEventsMailNotifications 等,很是适合用来学习 Laravel 框架。前后端分离

总结

若是你在为公司寻找一款开源免费的 开发文档/API文档管理 工具,不妨考虑一下 Wizard 项目,必定不会让你失望的。若是你是一名 PHP 或者 Laravel 新手,想找个项目学习一下如何用 Laravel 作 Web 开发,这个项目更加不能错过!编辑器

最后,也是本文最核心的部分,赶忙去 Star 一下,顺便给我个 Star 啊 !若是再能贡献点 Issues 或者P R,那就更好啦 😄!