致谢 & 开发故事

本项目由 EnderWolf006/ElectronClassSchedule 大改而来,虽然本项目已经大量修改了原版代码,但仍感谢原作者 EnderWolf 给予的启发。许多新功能与灵感都来源于我初中的同学、老师,感谢你们!

有关项目的一些故事

我初一的时候任班级的电教委,当时是在 B 站上看到了 这个视频 ,觉得做的不错,就给我们班安装上了这个,老班也觉得挺好。后来我在 GitHub 上刷到了一个类似的项目,叫 ClassIsLand ,当然我承认这个项目比我这个做得更加成熟,UI 也更加好看,功能当然更加完善。 但是我这个支持集控,还能自动推算调休 ,但是由于我所在学校使用的电脑是 Windows 7,而 ClassIsLand 又不能在 Windows 7 中很好地工作,所以只能望而却步。好吧,那我自己造还不行吗?所以如果你的学校电脑版本在 Windows 10 及以上而且不需要集控调休等等本项目特有的功能,那确实不妨试试 ClassIsLand。

不建议在 Windows 10 以下的系统运行本应用。在 Windows 7 中,.NET 运行时会产生严重的内存泄漏问题

—— ClassIsLand README(节选)

所以我就选择继续在 ElectronClassSchedule 这个项目上耕耘,第一个大的改动就是配置迁移云上,其实也就是配一个 HTTP 文件服务器,然后启动时从云端下载服务替代。再之后有其他班也听说并引入了这个项目,然后又遇到了我们学校临时调课的情况,但是跑到别的班通知重启软件实在太麻烦,需要一个高效的通知方法,这个项目后端的第一个版本诞生了。第一个后端的行为很简单,只有两个接口:读取文件,拼接 JSON,返回;接受 WS,广播信息。

其实当时我就已经有了对集控功能的构思,我本来想看看 ClassIsLand 作为一个成熟的项目是怎么做的,结果他们没有集控,好吧,自己动手丰衣足食。

再之后,由于我这人吧经常做事儿不咋过脑子,不会回头去检查,导致我经常对着一个 2x2 的时间表也能录错,还不是说录窜行了,是连 JSON 格式都写不对。所以再之后,我着手开发了一个前端,后端随之增加了校验功能。至此本项目架构的雏形已经出现。

然后呢,迎来了 AI Coding 的浪潮,在浪潮之后,这个项目有许多的代码是 AI 生成的,当然全部经我个人 Review 过,所以后来开发工作进展更快了。在我临毕业之时,这个项目迎来了他生命周期的最后时刻,我加了最后一个新功能,做了所有的 Bugfix,改了名字(AstraSchedule),后端用 Go 重写了,整个项目也申了软著,写了这份文档,大抵是最后我能为这个项目做的全部了。

原项目在我 fork 不久后停更,没有什么新的 commit 需要 merge,所以这个项目这三年一直由我一个人全栈开发,现在或许可以画上句号了。这并不意味着这个项目将会停更,而是我认为他已经足够成熟了,也许我还会在我未来的某一天重启这个项目,同时作为开源项目。如果你熟悉这些技术栈(Go + Gin, Electron + 原生 HTML + CSS + JS, Vite + Vue + NaiveUI)也欢迎你 fork 本项目,让他在另一个设备上得以继续生长。

如果这个项目后续还有人用的话,我当然也很乐意继续更新,不论多少人。

最后

感谢 EnderWolf006(上游项目作者)的原项目为本项目打好的地基,对本项目早期发展的帮助很大。

感谢我的同学们,本项目的所有功能都源自于同学们的真实需求,让本项目的功能更贴近校园的实际需要。

感谢我的老师们,没有说这个项目影响我的学习,也没有说影响到了他们教学,为这个项目的生长提供了一片土壤。

感谢我的学校,南京市第三十九中学,让我有一个快乐的初中生活。

感谢 ClassIsLand(同类项目),为本项目发展的大方向提供了可参考的模板。

本项目与 ClassIsLand 没有任何关联,只是作为一个较为知名的同类项目在此提起,两者各有优缺。

以及感谢耐心读完这篇致谢的你。