Gocument 是一个在线文档协作平台,目前正在完善中... 运行环境需要nacos/redis/mysql/elasticsearch,地址/用户名/密码需自行配置。
- 用户注册登陆
- 登陆状态创建/编辑文档
- 文档存储于数据库/存储优化
- 文档分享/文档的私有和公开
- 个人主页(查看我的文档及其基本信息)
- 删改文档
- 密码加密
- 自动保存(高性能)
- 验证码
- 敏感词审查
- 多人实时协作
- 文档权限管理
- 团队/群组管理
- 评论功能(带有消息通知)
- 版本管理
- 文档目录
- 富文本扩展(支持md/图片/公式等格式)
- 搜索功能
- 部署
- 缓存
- 安全(XSS/SQL注入/CSRF等)
- 高阶挑战
拉取之后,可使用docker-compose up -d一键启动。
Gocument
├── docker-compose.yml
├── go.mod
├── go.sum
├── keys
│ ├── private.pem
│ └── public.pem
├── Makefile
├── pkg
│ ├── encrypt
│ │ └── encrypt.go
│ ├── Error
│ │ ├── ErrCode
│ │ │ └── ErrorCode.go
│ │ └── Error.go
│ ├── Logger
│ │ ├── log
│ │ │ └── logger.log
│ │ └── Logger.go
│ ├── models
│ │ ├── Document.go
│ │ ├── Permission.go
│ │ ├── User.go
│ │ └── websocket.go
│ ├── Rsp
│ │ ├── model.go
│ │ └── Rsp.go
│ └── utils
│ └── Time.go
├── README_2.md
├── README.md
└── Server
├── Api
│ ├── Func
│ │ ├── Auth
│ │ │ ├── Client
│ │ │ │ ├── AuthClient.go
│ │ │ │ └── rpc
│ │ │ │ ├── Auth_grpc.pb.go
│ │ │ │ ├── Auth.pb.go
│ │ │ │ ├── Auth.proto
│ │ │ │ └── code
│ │ │ └── fn
│ │ │ └── Auth_fn.go
│ │ ├── Document
│ │ │ ├── Api
│ │ │ │ ├── Create.go
│ │ │ │ ├── DeleteDocument.go
│ │ │ │ ├── Enter.go
│ │ │ │ ├── Grant.go
│ │ │ │ └── Search.go
│ │ │ └── Client
│ │ │ ├── DocumentClient.go
│ │ │ └── rpc
│ │ │ ├── code
│ │ │ ├── document_grpc.pb.go
│ │ │ ├── document.pb.go
│ │ │ └── document.proto
│ │ └── User
│ │ ├── Api
│ │ │ ├── Alter.go
│ │ │ ├── Login.go
│ │ │ ├── PersonalPage.go
│ │ │ └── Register.go
│ │ └── Client
│ │ ├── rpc
│ │ │ ├── code
│ │ │ ├── user_grpc.pb.go
│ │ │ ├── user.pb.go
│ │ │ └── user.proto
│ │ └── UserClient.go
│ ├── Initialize
│ │ └── etcd.go
│ ├── main.go
│ ├── Middleware
│ │ └── Token.go
│ └── Router
│ └── router.go
├── Auth
│ ├── handle
│ │ └── Auth.go
│ ├── Initialize
│ │ ├── key.go
│ │ └── Registry.go
│ ├── main.go
│ └── rpc
│ ├── Auth_grpc.pb.go
│ ├── Auth.pb.go
│ ├── Auth.proto
│ └── code
├── Document
│ ├── DataBase
│ │ ├── conf
│ │ │ └── DB
│ │ │ ├── db.yaml
│ │ │ └── init.go
│ │ ├── dao
│ │ │ ├── Check.go
│ │ │ ├── Create.go
│ │ │ ├── Delete.go
│ │ │ ├── Edit.go
│ │ │ ├── Get.go
│ │ │ ├── Grant.go
│ │ │ ├── Search.go
│ │ │ └── utils.go
│ │ └── DB
│ │ ├── ElasticSearch
│ │ │ ├── elasticsearch.go
│ │ │ └── Sensitive.go
│ │ ├── init.go
│ │ ├── MySQL
│ │ │ └── mysql.go
│ │ └── Redis
│ │ └── redis.go
│ ├── handle
│ │ ├── Check.go
│ │ ├── Create.go
│ │ ├── Delete.go
│ │ ├── Edit.go
│ │ ├── Get.go
│ │ ├── Grant.go
│ │ └── Search.go
│ ├── main.go
│ ├── Registry
│ │ └── Registry.go
│ └── rpc
│ ├── code
│ ├── document_grpc.pb.go
│ ├── document.pb.go
│ └── document.proto
└── User
├── DataBase
│ ├── conf
│ │ └── DB
│ │ ├── db.yaml
│ │ └── init.go
│ ├── dao
│ │ ├── Alter.go
│ │ ├── LoginAndRegister.go
│ │ └── PersonalPage.go
│ └── DB
│ ├── ElasticSearch
│ │ ├── elasticsearch.go
│ │ └── Sensitive.go
│ ├── init.go
│ ├── MySQL
│ │ └── mysql.go
│ └── Redis
│ └── redis.go
├── handle
│ ├── Alter.go
│ ├── LoginAndRegister.go
│ └── PersonalPage.go
├── main.go
├── Registry
│ └── Registry.go
└── rpc
├── code
├── user_grpc.pb.go
├── user.pb.go
└── user.proto