#时间 #时间跟踪 #Web #打孔 #用户 #小时 #可行

应用 punch-web

打孔是一个最小可行的时间跟踪Web应用程序。非常最小可行。

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2018年8月2日

#781HTTP服务器

MIT/Apache

410KB
1K SLoC

punch-web

打孔是一个最小可行的时间跟踪Web应用程序。 非常 最小可行。事实上,目前它所做的只是允许用户打卡、签退,并显示最近几天和几周内累积的小时数报告。

打孔具有“毛时间”与“净时间”的概念,前者是打卡和签退事件之间的总时间,后者从每次工作会话中减去固定数量的开销时间(目前为15分钟),以考虑到在开始一天工作或中断后恢复生产力之前的预热期。

打孔使用Rust编写,采用actix-web Web框架,Diesel数据库ORM,以及许多其他软件包。当你使用“cargo build”构建打孔时,请确保你的系统已安装SQLite库。例如,在Ubuntu上

apt install sqlite3 libsqlite3 libsqlite3-dev

要开始使用打孔,首先使用用户名和密码初始化其SQLite数据库

punch-web init --database-url=/path/to/punch.db myusername mypassword

“--database-url”参数是可选的,默认值是当前目录中的“punch.db”。

要运行Web服务器,使用“server”子命令

punch-web server --bind 127.0.0.1:8080 \
    --database-url=/path/to/punch.db --static-path=/path/to/static/files

绑定地址和端口默认为127.0.01:8080,数据库URL再次默认为当前目录中的“punch.db”,静态资源路径默认为当前目录中的“static/”。

未来改进的想法

对于一个有志成为时间跟踪器的华丽记事本,什么不能改进?一些可能的想法包括

  • 支持为打卡和签退事件添加文本备注。还支持添加带时间戳的备注的“备注”事件,而无需打卡或签退。
  • 支持多个项目和用户。数据库模式已经就位,但当前这个最小可行代码看起来只有一个单一用户和一个项目。
  • 日期始终以UTC格式存储在数据库中,但我们目前使用服务器的本地时区来解析日期。这可能或可能不是用户的首选时区。我们应该支持按用户或按项目配置的时间区域。
  • 使用带有 AJAX 调用的适当前端可以实现更清晰的实现,但需要开发前端代码。例如,这可以避免在表单提交后重定向时,将错误消息存储在 cookie 中的拙劣系统。
  • 可以添加多个项目参数来更改时间统计。例如
    • 可配置的间接时间。
    • 按会话、每周或每日基础,将时间四舍五入到最近的整点(或半小时、十五分钟等)。
    • 以指定速率累积“休假”时间,使用户在记录足够的生产时间后可以奖励自己。
  • 命令行界面,可以实施为 HTTP 客户端调用到 REST 端点。
  • 更多报告。

许可证

Punch 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。

贡献

除非您明确说明,否则您故意提交以包含在作品中、如 Apache-2.0 许可证所定义的任何贡献,应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~57MB
~1M SLoC