A vanilla Rails 8 time tracking and project management app.
Plock is a small, self-hostable time tracker app for small companies with teams. Track hours against clients and projects, and export polished PDF reports. Built as vanilla Rails 8 with as few external dependencies as possible — easy to read, easy to deploy and easy to extend.
plock-demo-2.mp4
- Manual time tracking — log time against a project, a client, or no project at all.
- Role-based access — three tiers:
- Members track their own time.
- Managers edit time for the teammates they manage.
- Admins manage the whole company: team, projects, and clients.
- Clients & projects — create, edit, archive (soft-deleted via
disabled_at). - Project assignments — assign people to projects with per-project authorization.
- PDF reports — polished reports via Prawn (
app/services/reports/pdf/). - Dashboard & project status views — at-a-glance hours per person, per project, per client.
- Ruby 4.x (see
.ruby-version) - Rails 8.1
- SQLite
- Tailwind CSS 4
- Hotwire (Turbo + Stimulus) with Propshaft, ImportMap (no JS build step)
- Solid Queue / Solid Cache / Solid Cable
- Prawn for PDF generation
Prerequisites:
- Ruby
4.0.2(userbenv,asdf, ormise) - SQLite 3.45+
- Google Chrome (for system tests)
libyaml(Linux only —apt-get install libyaml-dev)
Install and run:
bin/setup --skip-server # install gems, prepare the database
bin/dev # start Rails + Tailwind watcherApp is at http://localhost:3000.
bin/rails test # unit and integration tests
bin/rails test:system # system tests (Capybara + Chrome)
bin/rubocop # lint (rubocop-rails-omakase)
bin/brakeman --no-pager # security scan
bin/ci # run all of the above and more in sequenceCI runs the same commands on every PR.
Plock is a standard Rails 8 app ready to be deployed using tools like ONCE, Kamal or any other deployment service.
Contributions are welcome. See CONTRIBUTING.md for setup, conventions, and PR expectations. By participating you agree to abide by the CODE_OF_CONDUCT.md.
MIT — see LICENSE.