Free, open source, Wakatime-compatible coding time tracker
Find a file
Mahad Kalam e3456be187
goaaaal! (#985)
* Add goals

* Fix up some migrations

* Formatting

* Simplify migration

* Update test/controllers/settings_goals_controller_test.rb

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update test/controllers/settings_goals_controller_test.rb

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Fix svelte-check issues, make CI less janky on dev

* svelte-check/fix tests

* Fix N+1s

* Formatting!

* More tests, fix anonymization and N+1

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-19 18:47:01 +00:00
.github goaaaal! (#985) 2026-02-19 18:47:01 +00:00
.kamal Initial commit 2025-02-16 03:21:30 -05:00
app goaaaal! (#985) 2026-02-19 18:47:01 +00:00
bin Use Bun for deps (#980) 2026-02-18 09:11:15 +00:00
config goaaaal! (#985) 2026-02-19 18:47:01 +00:00
db goaaaal! (#985) 2026-02-19 18:47:01 +00:00
docs hackatime-v2 -> hackatime-help 2026-02-15 22:42:19 +00:00
lib llms.txt/llms-full.txt/.md docs routes, SSR (#977) 2026-02-18 08:34:06 +00:00
log Initial commit 2025-02-16 03:21:30 -05:00
public Update some homepage stuff (#972) 2026-02-18 00:25:07 +00:00
script Initial commit 2025-02-16 03:21:30 -05:00
spec Unify OAuth2 and unauthenticated projects routes (#948) 2026-02-15 13:59:44 +00:00
storage Initial commit 2025-02-16 03:21:30 -05:00
swagger/v1 Unify OAuth2 and unauthenticated projects routes (#948) 2026-02-15 13:59:44 +00:00
test goaaaal! (#985) 2026-02-19 18:47:01 +00:00
tmp Initial commit 2025-02-16 03:21:30 -05:00
vendor Upgrade Inertia + new settings page (#950) 2026-02-15 17:32:26 +00:00
.dockerignore llms.txt/llms-full.txt/.md docs routes, SSR (#977) 2026-02-18 08:34:06 +00:00
.env.example Add PostHog (#906) 2026-02-15 08:44:39 +00:00
.erb_lint.yml fix application/ld+json (#832) 2026-01-25 13:11:22 -05:00
.gitattributes Add heartbeat download (#457) 2025-08-07 15:36:36 -04:00
.gitignore llms.txt/llms-full.txt/.md docs routes, SSR (#977) 2026-02-18 08:34:06 +00:00
.prettierrc.json Use Inertia deferred props + Prettier/svelte-check (#957) 2026-02-16 10:29:04 +00:00
.rspec feat: added actual api docs (rswag) + ci enforcement (#846) 2026-01-27 01:05:49 -05:00
.rubocop.yml Initial commit 2025-02-16 03:21:30 -05:00
.ruby-version update ruby to 3.4.8 (#805) 2026-01-19 02:24:20 -05:00
.tokeignore Remove unused ERBs, /wakatime-alternative (#976) 2026-02-18 06:44:27 +00:00
AGENTS.md goaaaal! (#985) 2026-02-19 18:47:01 +00:00
bun.lock Use Bun for deps (#980) 2026-02-18 09:11:15 +00:00
config.ru Load autotuner in config.ru 2025-06-08 19:31:09 -04:00
docker-compose.yml goaaaal! (#985) 2026-02-19 18:47:01 +00:00
Dockerfile Use Bun for deps (#980) 2026-02-18 09:11:15 +00:00
Dockerfile.dev goaaaal! (#985) 2026-02-19 18:47:01 +00:00
Dockerfile.production-worker Fix 10-minute asset delay 2026-02-15 10:33:05 +00:00
docs-index.png Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00
docs-vs-code.png Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00
entrypoint.dev.sh Fix notification job missing class name 2025-02-22 01:58:46 -05:00
Gemfile Remove unused public_activity + downsize activity graph Inertia payload (#946) 2026-02-15 09:54:29 +00:00
Gemfile.lock Update Gemfile.lock (#974) 2026-02-18 00:28:09 +00:00
package.json Use Bun for deps (#980) 2026-02-18 09:11:15 +00:00
Procfile.dev llms.txt/llms-full.txt/.md docs routes, SSR (#977) 2026-02-18 08:34:06 +00:00
Rakefile Initial commit 2025-02-16 03:21:30 -05:00
README.md llms.txt/llms-full.txt/.md docs routes, SSR (#977) 2026-02-18 08:34:06 +00:00
slack_manifest_harbor.yml Rename slack bot 2025-03-13 11:25:53 -04:00
slack_manifest_sailors_log.yml Add slack channel name to sailors log prefs 2025-03-11 22:05:10 -04:00
svelte.config.js Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00
tsconfig.json Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00
tsconfig.node.json Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00
tsconfig.svelte-check.json Use Inertia deferred props + Prettier/svelte-check (#957) 2026-02-16 10:29:04 +00:00
vite.config.ts Inertia migration/UI3 (#911) 2026-02-09 11:26:30 +00:00

Hackatime

Ping Status Work time

Local development

# Set it up...
$ git clone https://github.com/hackclub/hackatime && cd hackatime

# Set your config
$ cp .env.example .env

Edit your .env file to include the following:

# Database configurations - these work with the Docker setup
DATABASE_URL=postgres://postgres:secureorpheus123@db:5432/app_development
WAKATIME_DATABASE_URL=postgres://postgres:secureorpheus123@db:5432/app_development
SAILORS_LOG_DATABASE_URL=postgres://postgres:secureorpheus123@db:5432/app_development

# Generate these with `rails secret` or use these for development
SECRET_KEY_BASE=alallalalallalalallalalalladlalllalal
ENCRYPTION_PRIMARY_KEY=32characterrandomstring12345678901
ENCRYPTION_DETERMINISTIC_KEY=32characterrandomstring12345678902
ENCRYPTION_KEY_DERIVATION_SALT=16charssalt1234

Comment out the LOOPS_API_KEY for the local letter opener, otherwise the app will try to send out a email and fail.

Build & Run the project

$ docker compose up -d
$ docker compose exec web /bin/bash

# Now, setup the database using:
app# bin/rails db:create db:schema:load db:seed

# Now start up the app:
app# bin/dev
# This hosts the server on your computer w/ default port 3000

# Want to do other things?
app# bin/rails c # start an interactive irb!
app# bin/rails db:migrate # migrate the database
app# bin/rails rswag:specs:swaggerize # generate API documentation

You can now access the app at http://localhost:3000/

Use email authentication from the homepage with test@example.com or create a new user (you can view outgoing emails at http://localhost:3000/letter_opener)!

Ever need to setup a new database?

# inside the docker container, reset the db
app# $ bin/rails db:drop db:create db:migrate db:seed