{"id":36890886,"url":"https://github.com/yockii/celestial","last_synced_at":"2026-01-12T15:36:59.440Z","repository":{"id":161347153,"uuid":"629759872","full_name":"yockii/celestial","owner":"yockii","description":"天工-项目管理系统","archived":false,"fork":false,"pushed_at":"2025-09-24T10:28:05.000Z","size":2152,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-24T12:26:52.778Z","etag":null,"topics":["project-management","worktime"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yockii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-19T01:13:29.000Z","updated_at":"2025-09-24T10:28:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"7b5fcb50-d146-4ab5-be1c-482330e00645","html_url":"https://github.com/yockii/celestial","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/yockii/celestial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yockii%2Fcelestial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yockii%2Fcelestial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yockii%2Fcelestial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yockii%2Fcelestial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yockii","download_url":"https://codeload.github.com/yockii/celestial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yockii%2Fcelestial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28341067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["project-management","worktime"],"created_at":"2026-01-12T15:36:58.783Z","updated_at":"2026-01-12T15:36:59.433Z","avatar_url":"https://github.com/yockii.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Celestial 极简的项目管理系统\n\n## 项目介绍\n起因：原本公司计划采用某道来作为项目管理，并已部署了开源版本，但是由于某道来的项目管理功能太过复杂，导致项目管理人员不愿意使用，因此我决定自己开发一个极简的项目管理系统，以便于项目管理人员能够快速上手。\n\n## 项目特点\n1. 项目管理功能极简，只有项目、任务、缺陷、测试等几大相关模块，每个模块的功能也非常简单，只有最基本的功能，不会有过多的功能，以免用户使用起来感到复杂。\n2. 完全免费，不会有任何收费的功能，也不会有任何收费的计划，以免用户使用起来感到不安。\n3. 完全开源，用户可以自由的修改源代码，以满足自己的需求。\n4. 前端使用Vue3/ts/NaiveUI，后端使用Go/Fiber/gorm/redigo，数据库默认采用Mysql，缓存采用Redis\n5. 未使用消息队列中间件，而是内部简单实现了观察者模式，基于订阅发布的方式实现了消息队列的功能，以减少部署的复杂度。\n6. 权限系统未使用任何框架，而是自己实现了一个权限系统，以更敏捷地实现自己的想法。\n\n## 项目部署\n1. 安装Mysql和Redis，或直接采用云服务\n2. 安装meilisearch，作为本系统的全文检索服务\n3. 安装onlyoffice，作为本系统的在线文档服务，并获取jwt secret（后续配置入配置文件）\n2. 编译项目，包括前后端，将生成celestial程序和page文件夹\n3. 上传程序及page文件夹到服务器\n4. 安装nginx或其他反向代理服务，并将page文件夹作为静态文件目录首页\n5. 在celestial程序同级目录建立conf文件夹，在里面建立config.toml配置文件，该文件配置内容可参考项目根目录下的conf/config.toml文件\n6. 配置nginx代理到celestial的http服务端口\n7. 启动celestial程序，程序将自动链接到数据库并建表结构，初始化部分数据\n8. 访问系统\n\n## 权限说明\n权限采用非常经典的RBAC模型，即角色-权限-用户的模型，其中角色和权限是多对多的关系，用户和角色是多对多的关系，但角色定义了3类，超级管理员、普通角色及项目角色\n\n1. 超级管理员：拥有所有权限，可以对系统进行任何操作，包括系统设置、用户管理、角色管理、权限管理等，无法通过界面进行权限分配，只能通过数据库直接修改\n2. 普通角色：常见的角色定义及资源权限分配，可以通过界面进行权限分配，但只能是系统功能的资源权限，无法配置项目相关权限，可以直接分配给用户\n3. 项目角色：项目角色是一种特殊的角色，只能通过项目进行分配，添加项目组成员时直接分配，项目角色只能分配到项目相关的资源权限，并只能在项目中起作用\n\n这样的角色设置，可以确保用户正常的系统功能以普通角色的身份进行操作，而在项目中，可以根据项目的需要，分配不同的项目角色，以满足项目的需求。\n\n## 关于小部分流程\n### 任务创建的限制\n项目中有功能模块，需要评审，评审通过后的功能模块可以建立需求（该需求就在该功能模块下），需求在设计完成后可评审，评审通过后，可以建立相应任务。\n\n而任务本身也可以分解出子任务，没有层级限制。\n\n### 任务的状态\n任务从创建到完成的状态依次为：新建、已确认、进行中、已完成\n- 新建：新建的任务允许更改，并指定参与人\n- 已确认：所有参与人都确认后，任务进入已确认状态，此时任务不允许更改，如果仅部分参与人确认，状态为部分确认\n- 进行中：已确认的任务才能开始执行，只要有任意参与人开始，任务就是执行中的状态了\n- 已完成：所有参与人都完成后，任务进入已完成状态。\n\n### 多人任务\n任务允许多人同时参与，但必须所有人都确认签收任务才能开始执行。\n\n任务开始执行时，每个参与人的状态是独立的，即A开始后，B还未开始，那么A显示的按钮将是完成，B显示的按钮将是开始。\n\n### 缺陷的简单流程\n- 缺陷新建后，需要指派处理人\n- 处理人可以开始处理或拒绝缺陷，并填写原因\n- 处理人可再次指派给其他人\n- 处理人完成缺陷后，需要指派给测试人员做验证\n- 测试人员验证后，可以标记已解决或重新指派到其他人继续解决\n- 已关闭的缺陷可以重新打开\n\n## 后续\n可能会根据公司或实际需要，不断改进系统，但不会增加过多的功能，以免增加系统的复杂度。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyockii%2Fcelestial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyockii%2Fcelestial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyockii%2Fcelestial/lists"}