致谢 & 开发故事

本项目由 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 本项目,让他在另一个设备上得以继续生长。

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

有关功能的一些故事

除了上面那些故事,其他的功能也是有一些简短的故事的。这个项目几乎所有的功能需求都来源于真实的故事,所以他才真正有用,我才有了持续维护三年的动力。

电子课表?

其实把这个项目放到学校电脑上,一是因为我们学校那个铃声是网络同传的,所以经常会有延迟甚至不响铃;二是大家确实会问下节啥课、啥时候上课,老师也会问这节课上到啥时候结束。所以这一个软件能解答上述所有问题

当前天气

马上做操了,外面挺阴的,那下雨了吗?不知道,还得跑出去看一下。所以有了这个功能。

横幅通知

你不感觉每次考试黑板上都要像模像样写个“诚信考试 作弊可耻”很麻烦吗

极端天气预警

算是一种关心吧,其实最初只是是大家好奇明天会不会下雨,能不能开运动会去

调休自动调整

调休是在我国特色背景下的一个特色问题,但是同样因为我这人不记事,所以经常调完课忘了把课表调回去,或者改错班,所以就做了一个自动任务,当时间处于规则内则应用规则,超出时间范围恢复原状。 这下真不去记事了

倒数日

你不感觉很紧张吗。 好吧其实这个功能我很早就想做了,就是显示距离假期还有多少天,但我觉得这样会被老班骂所以一直拖着没做。一直到我中考百日誓师之后,有了正当理由,才做这个功能。

后端 Serverless 适配

云函数的成本真的很低,爽死了。 主要还是想借着机会重写下后端,顺便学一下 Golang,能在云函数上运行同时也意味着它能在任何地方运行,比绝大多数同类应用更能做到 “灵活部署”。

前后端分离

灵活部署这一块。 其实是啥呢,我不想写原生 JS 和 CSS,我想用现成的 UI 库,但是我又懒得去动 Electron 客户端的代码, 真的很难受你知道吗,本来原版代码就够复杂了 ,所以我决定单独写个管理端,同时这样增强了整个系统的鲁棒性,同时也为项目的集控带来了可能,你可以在任意地方修改配置文件,不论在校内校外、手机电脑,何时何地都能修改,得益于数据不直接存在于客户端本地和前后端分离的架构。

有关作者的一些故事

很荣幸,这个项目成为了班上一个近似基础设施的东西,只有故障的时候大家才想起我来。虽然我的初中遇到了很多神人,但是我还是觉得不虚此行,毕竟实践能出真知,而纸上得来终觉浅。 在我初三开学的时候呢,有两个好消息,一个是我去考了 CSP-J 2025,获得了一轮一等和二轮二等的成绩,当然我知道他不算很好,但确实也是比较理想了。另外一个就是这个软件的软著获批。

最后

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

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

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

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

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

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