{"id":13696468,"url":"https://github.com/aceberg/ExerciseDiary","last_synced_at":"2025-05-03T17:31:19.139Z","repository":{"id":213050338,"uuid":"731254469","full_name":"aceberg/ExerciseDiary","owner":"aceberg","description":"Workout diary with GitHub-style year visualization","archived":false,"fork":false,"pushed_at":"2024-10-26T15:27:11.000Z","size":319,"stargazers_count":331,"open_issues_count":9,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-29T15:58:58.193Z","etag":null,"topics":["docker-apps","self-hosted","selfhosted","workout","workout-apps","workout-tracker"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/aceberg/exercisediary","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aceberg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://boosty.to/aceberg/donate","https://aceberg.github.io/MyDocs/sponsor"]}},"created_at":"2023-12-13T17:08:22.000Z","updated_at":"2024-10-26T15:24:59.000Z","dependencies_parsed_at":"2024-02-11T07:21:45.880Z","dependency_job_id":"db3f934d-9c3b-4a23-9a03-fea55bd5aaea","html_url":"https://github.com/aceberg/ExerciseDiary","commit_stats":null,"previous_names":["aceberg/exercisediary"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FExerciseDiary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FExerciseDiary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FExerciseDiary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FExerciseDiary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aceberg","download_url":"https://codeload.github.com/aceberg/ExerciseDiary/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224369548,"owners_count":17299918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-apps","self-hosted","selfhosted","workout","workout-apps","workout-tracker"],"created_at":"2024-08-02T18:00:40.689Z","updated_at":"2025-05-03T17:31:19.117Z","avatar_url":"https://github.com/aceberg.png","language":"Go","funding_links":["https://boosty.to/aceberg/donate","https://aceberg.github.io/MyDocs/sponsor"],"categories":["Other"],"sub_categories":["Web Applications"],"readme":"[![Main-Docker](https://github.com/aceberg/exercisediary/actions/workflows/main-docker.yml/badge.svg)](https://github.com/aceberg/exercisediary/actions/workflows/main-docker.yml)\r\n[![Go Report Card](https://goreportcard.com/badge/github.com/aceberg/exercisediary)](https://goreportcard.com/report/github.com/aceberg/exercisediary)\r\n[![Maintainability](https://api.codeclimate.com/v1/badges/e8f67994120fc7936aeb/maintainability)](https://codeclimate.com/github/aceberg/ExerciseDiary/maintainability)\r\n![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/aceberg/exercisediary)\r\n\r\n\u003ch1\u003e\u003ca href=\"https://github.com/aceberg/exercisediary\"\u003e\r\n    \u003cimg src=\"https://raw.githubusercontent.com/aceberg/exercisediary/main/assets/logo.png\" width=\"35\" /\u003e\r\n\u003c/a\u003eExercise Diary\u003c/h1\u003e\r\n\r\nWorkout diary with GitHub-style year visualization\r\n\r\n- [Quick start](https://github.com/aceberg/exercisediary#quick-start)\r\n- [Binary](https://github.com/aceberg/exercisediary#binary)\r\n- [Config](https://github.com/aceberg/exercisediary#config)\r\n- [Options](https://github.com/aceberg/exercisediary#options)\r\n- [Local network only](https://github.com/aceberg/exercisediary#local-network-only)\r\n- [Roadmap](https://github.com/aceberg/ExerciseDiary/blob/main/docs/ROADMAP.md)\r\n- [Thanks](https://github.com/aceberg/exercisediary#thanks)\r\n\r\n\r\n![Screenshot](https://raw.githubusercontent.com/aceberg/ExerciseDiary/main/assets/Screenshot.png)\r\n\r\n## Quick start\r\n\r\n```sh\r\ndocker run --name exdiary \\\r\n-e \"TZ=Asia/Novosibirsk\" \\\r\n-v ~/.dockerdata/ExerciseDiary:/data/ExerciseDiary \\\r\n-p 8851:8851 \\\r\naceberg/exercisediary\r\n```\r\nOr use [docker-compose.yml](docker-compose.yml)\r\n\r\n## Binary\r\nPPA for amd64 .deb is [here](https://github.com/aceberg/ppa). For other binary options plese look at the [latest release](https://github.com/aceberg/ExerciseDiary/releases/latest).\r\n\r\n\r\n## Config\r\n\r\n\r\nConfiguration can be done through config file, GUI or environment variables. Variable names is `config.yaml` file are the same, but in lowcase.\r\n\r\n| Variable  | Description | Default |\r\n| --------  | ----------- | ------- |\r\n| AUTH | Enable Session-Cookie authentication | false |\r\n| AUTH_EXPIRE | Session expiration time. A number and suffix: **m, h, d** or **M**. | 7d |\r\n| AUTH_USER | Username | \"\" |\r\n| AUTH_PASSWORD | Encrypted password (bcrypt). [How to encrypt password with bcrypt?](docs/BCRYPT.md) | \"\" |\r\n| HOST | Listen address | 0.0.0.0 |\r\n| PORT   | Port for web GUI | 8851 |\r\n| THEME | Any theme name from https://bootswatch.com in lowcase or [additional](https://github.com/aceberg/aceberg-bootswatch-fork) (emerald, grass, grayscale, ocean, sand, wood)| grass |\r\n| COLOR | Background color: light or dark | light |\r\n| HEATCOLOR | HeatMap color | #03a70c |\r\n| PAGESTEP | Items on one page | 10 |\r\n| TZ | Set your timezone for correct time | \"\" |\r\n\r\n## Options\r\n\r\n| Key  | Description | Default | \r\n| --------  | ----------- | ------- | \r\n| -d | Path to config dir | /data/ExerciseDiary | \r\n| -n | Path to local JS and Themes ([node-bootstrap](https://github.com/aceberg/my-dockerfiles/tree/main/node-bootstrap)) | \"\" | \r\n\r\n## Local network only\r\nBy default, this app pulls themes, icons and fonts from the internet. But, in some cases, it may be useful to have an independent from global network setup. I created a separate [image](https://github.com/aceberg/my-dockerfiles/tree/main/node-bootstrap) with all necessary modules and fonts.    \r\n```sh\r\ndocker run --name node-bootstrap       \\\r\n    -v ~/.dockerdata/icons:/app/icons  \\ # For local images\r\n    -p 8850:8850                       \\\r\n    aceberg/node-bootstrap\r\n```\r\n```sh\r\ndocker run --name exdiary \\\r\n    -v ~/.dockerdata/ExerciseDiary:/data/ExerciseDiary \\\r\n    -p 8851:8851 \\\r\n    aceberg/exercisediary -n \"http://$YOUR_IP:8850\"\r\n```\r\nOr use [docker-compose](docker-compose-local.yml)\r\n\r\n## Roadmap\r\nMoved to [docs/ROADMAP.md](docs/ROADMAP.md)\r\n\r\n## Thanks\r\n- All go packages listed in [dependencies](https://github.com/aceberg/exercisediary/network/dependencies)\r\n- [Bootstrap](https://getbootstrap.com/)\r\n- Themes: [Free themes for Bootstrap](https://bootswatch.com)\r\n- [Chart.js](https://github.com/chartjs/Chart.js) and [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix)\r\n- Favicon and logo: [Flaticon](https://www.flaticon.com/icons/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2FExerciseDiary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faceberg%2FExerciseDiary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2FExerciseDiary/lists"}