Web App for tracking your time. Currently only locally deployable.
- Use tags on each time entry so you can track multiple records at once
- Add descriptions in Markdown for Time Entries
- Keep track of Tasks and their associated time entries
- Keep track of how often events happen with Timestamps
- REST api
- Working on more, see TimeTracker Project
-
Make sure you have php 8.0 or greater
-
Install Composer
-
Install Yarn
-
Install Symfony Binary
-
Cd to project root and run
composer install
yarn install
yarn encore dev
php bin/console lexik:jwt:generate-keypair
-
Set up your database connection in
.env
. postgresql, mysql, mariadb, sqlite are supported. -
Setup database
symfony console doctrine:database:create
- Run migrations
./bin/console doctrine:migrations:migrate
- Create your user
./bin/console app:user:create
- Start the symfony server
symfony serve
-
Make sure you have php 8.0 or greater
-
Install Composer
-
Install Yarn
-
Install Symfony Binary
-
Install Docker
-
Cd to project root and run
composer install
yarn install
yarn encore dev
php bin/console lexik:jwt:generate-keypair
- Setup database with docker
docker-compose up -d
- Run migrations
./bin/console doctrine:migrations:migrate
- Create your user
./bin/console app:user:create
- Start the symfony server
symfony serve
This will create a new time entry with the same tags.
This will remove the 'ended' part of the current time entry and resume the timer. This is mostly for "oops" moments when you accidentally stopped a time entry.
To get the Auth Token
POST to /api/login_check With headers
- Content-Type: application/json (required) Body
{
"username": "email@email.com",
"password": "password"
}
Note: body says username
but it is actually the email
You get
{
"token": "token..."
}
in response.
Then, provide the token as a header: Authorization: Bearer
As an example, you can get the time entries with
GET /api/time-entry With headers
- Content-Type: application/json (required)
When a field is a DateTime, use the following format in requests
"endedAt": {
"date": "yyyy-mm-dd",
"time": "hh:mm:ss"
}
Where hh is 24 hour time.
For example,
"endedAt": {
"date": "2021-04-16",
"time": "13:33:01"
}
Will result in: 04/16/2021 01:33:01 PM
Javascript is analyzed using webpack-bundle-analyzer
To check it out, run:
yarn run --silent build --json > stats.json
Then
yarn webpack-bundle-analyzer stats.json public/build