Crates.io | punch-web |
lib.rs | punch-web |
version | 0.1.0 |
source | src |
created_at | 2018-08-02 16:42:08.879865 |
updated_at | 2018-08-02 16:42:08.879865 |
description | Punch is a minimally viable time tracking web app. Very minimally viable. |
homepage | |
repository | https://github.com/simmons/punch |
max_upload_size | |
id | 77136 |
size | 1,445,299 |
Punch is a minimally viable time tracking web app. Very minimally viable. In fact, all it does at this time is allow the user to punch-in, punch-out, and show a report of accumulated hours over recent days and weeks.
Punch has the notion of "gross time" versus "net time", the former being the total time elapsed between punch-in and punch-out events, and the latter subtracting a fixed amount of overhead time per work session (currently 15 minutes) to account for the ramp-up period before one is productive after starting work for the day or after an interruption.
Punch is written in Rust using the actix-web web framework, Diesel for database ORM, and numerous other crates. When you build punch with "cargo build", be sure to have the SQLite libraries installed on your system. On Ubuntu, for example:
apt install sqlite3 libsqlite3 libsqlite3-dev
To start using punch, first initialize its SQLite database with a username and password for the user:
punch-web init --database-url=/path/to/punch.db myusername mypassword
The --database-url
argument is optional, and defaults to "punch.db" in the current directory.
To run the web server, use the "server" subcommand:
punch-web server --bind 127.0.0.1:8080 \
--database-url=/path/to/punch.db --static-path=/path/to/static/files
The bind address and port defaults to 127.0.0.1:8080
, the database URL defaults once again
to "punch.db" in the current directory, and the path to static resources defaults to "static/"
in the current directory.
For a glorified notepad with aspirations of being a time tracker, what couldn't be improved? A few possible ideas are:
Punch is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.
Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.