GithubHelp home page GithubHelp logo

traggo / server Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 58.0 1.57 MB

self-hosted tag-based time tracking

Home Page: https://traggo.net

License: GNU General Public License v3.0

Go 50.45% Makefile 0.43% HTML 0.20% TypeScript 48.89% CSS 0.01% Dockerfile 0.02%
freesoftware golang privacy self-hosted selfhosted time timetracker timetracking

server's People

Contributors

abundantsalmon avatar calebbassham avatar jmattheis avatar sdykae avatar simhnna avatar skeen avatar worldworm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

server's Issues

Cannot remove duplicate tag

Describe the bug
I have created a duplicate tag by mistake and now I cannot remove it. I am being warned with the following message "Delete Tag: tag 'elements' is used in dashboard 'Work' entry 'Main Projects', remove this reference before deleting the tag"

To Reproduce
Steps to reproduce the behavior:

  1. Create a tag "test"
  2. Use "test" tag in at least one time sheet entry
  3. Create another tag called "test"
  4. Attempt to remove either of the "test" tags and receive warning.

Expected behavior
I think you should be able to remove one of the tags.

Screenshots
None

Additional context

  • 0.1.1@3b3c478e
  • Docker compose file
  • Nginx reverse proxy

Tag page

  • Rename values
  • Rename Tags
  • Delete Tags
  • Edit tags

multi word tag issue

Describe the bug
when you create a multi-worl tag, you cannot select it in other fields, when you select it from a drop down, it only enters the last token of the string, and asks if you want to create a new tag.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'tags'
  2. create new tag called "test tag"
  3. go to list
  4. select the "Enter Tags" input text box
  5. select "test tags" from the drop down list
  6. note that "tag:" is entered in the text box.

Expected behavior
I would expect that it would use the tag "Test Tag"

Screenshots
N/A

Additional context
Using Firefox on Windows 10.

Support for 24hours timeframe in english (calendar)

Is your feature request related to a problem? Please describe.
I have some problems when using the 12 hour frame because sometimes when changing times we select AM and then it goes to the back of the start time and it's a mess, which the German datelocale solves, because it uses the 24 hours.

Describe the solution you'd like
The solution would be the same as the german datelocale but without the german language (on the calendar, only the calendar changes the language, the rest of the site remains in english), if it would be possible to use 24 hours with english, or add more languages that use that 24 hour format.

Non-admin user can't change password

While trying to setup a few accounts for friends, I noticed that the admin users can change everybody's password (normal), but the normal users can't manage their own at all.

Cli version

I was wondering if there any option to use this app in cli

Add Authentication

When #4 is merged it'll be possible to add authentication.

It should be possible to authenticate with a session and with basic authentication.

statistics

just thoughts

LAST 5 DAYS SELECT tag(project), sum(time) group by tag(project)
[
  {"project": "gotify", "time": "55h"},
  {"project": "traggo", "time": "22h"},
]

LAST 5 DAYS SELECT TAG(type), SUM(time) GROUP BY TAG(type)
[
  {"type": "work", "time": "55h"},
  {"type": "review", "time": "22h"},
]

LAST 5 DAYS SELECT time, tags WHERE tag(type) = "work"
[
  {"time": "1m", "tags": {"proj": "gotify", "type": "work", "issue": 5}},
  {"time": "3m", "tags": {"proj": "gotify", "type": "work", "issue": 5}},
  {"time": "1h", "tags": {"proj": "traggo", "type": "work", "issue": 2}},
]

LAST 5 DAYS SELECT time, tag(proj), tag(type) WHERE tag(type) = "work"
[
  {"time": "1m", "proj": "gotify", "type": "work"},
  {"time": "2m", "proj": "traggo", "type": "work"},
  {"time": "5m", "proj": "gotify", "type": "work"},
]

TimeThingy

LAST x DAYS/MONTHS/YEARS
LAST DAYS/MONTHS/YEARS
CURRENT DAY/MONTH/YEAR
BETWEEN x AND y

SelectThingy

SELECT timeID, start, end, time, tags
SELECT tag(proj), 
WHERE time > 10m
WHERE tag(proj) = "gotify"
WHERE tag(proj) != "gotify" // or <>
GROUP BY hour
GROUP BY hourly

Add basic UI

Create basic ui architecture with something like login and logout.

Requires #5

Rework stats api

stats(ranges: [Range!], tags: [String!], excludeTags: [InputTimeSpanTag!], requireTags: [InputTimeSpanTag!]): [RangedStatisticsEntries!]

input Range {
    start: Time!
    end: Time!
}
type StatisticsEntry {
    key: String!
    stringValue: String
    timeSpendInSeconds: Int!
}

type RangedStatisticsEntries {
    start: Time!
    end: Time!
    entries: [StatisticsEntry!]
}

PostgreSQL support

Is your feature request related to a problem? Please describe.
I'm just gonna spin up and I've noticed only SQLite is supported. It would be nice to use with a proper database.

Describe the solution you'd like
Use PostgreSQL instead of SQLite.

Describe alternatives you've considered
Maybe MySQL support for some people.

Additional context

Add tracker

Requires #10

Queries:

  • timers
    • Returns all timeframes with no end date (it can be mutiple)

Mutations:

  • startTimer(startDate datetime, tags: [tags], type: timetype)
    • create a timeframe with no "End"
    • timertype = "normal" or "pomodoro"
  • stopTimer(id int)
    • stops or rather sets an end date to the timeframe
  • resumeTimer(id int)
    • Copies all tags from a given timeframe and starts the timer

[DOC] Setup instructions dont include yarn build

i am a total noob to yarn/react/go but when setting up the dev environment, following the instructions provided in the documentation i got an error that the go server cant find [..]ui/build/index.hmtl (dont remember the exact message since its now fixed after the build but index.html was missing).

After running yarn build the file was found and everything worked as expected. Did i do something wrong or does this need to be added to the dev setup doc ?

Add Settings page

  • Start of the week
  • TimeZone
  • Change Password
  • Date Format
  • Number Format

Time Span Notes

Is your feature request related to a problem? Please describe.
When i review my time spent i want to know what i did (or maybe my boss wants to know if i use it in a work setting). Tags are very flexible but are always only one word which limits the ability to precisely describe what i did somewhat.

Describe the solution you'd like
In the context menu next to a timespan entry add the possibility to write a simple text. For me it would suffice to see the text when clicking the entry, alternatively it could be displayed underneath the tags.
image

Describe alternatives you've considered
One could just add several tags but that might get messy if one wants to store a lot of infomration.

Additional context
/

Tags not saved

Hi.

Nice tool!
But I face an issue here.
If I add a tag to my current logging, it is not saved.

AC7lUfLd7t

CRUD for timeframes

schema.TimeFrame

  • Id int
  • UserID int
  • Start time.Date
  • End *time.Date <- nullable when timer is running
  • Description string
  • Tags []schema.TimeFrameTag
  • Type (enum: normal, pomodoro)

schema.TimeFrameTag

  • TimeFrameID int
  • Key string -> matches schema.Tag#Key
  • Value *string

Queries:

  • timeFrames(start datetime, end datetime)
    • Get all timesframes between the given dates

Mutations:

  • createTimeFrame
  • updateTimeFrame
  • deleteTimeFrame

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.