Coder Social home page Coder Social logo

valasek / timesheet Goto Github PK

View Code? Open in Web Editor NEW
158.0 11.0 52.0 70.5 MB

Self-hosted application to manage project reporting.

License: Other

Go 34.14% JavaScript 20.41% HTML 0.45% Vue 35.85% Batchfile 1.73% Dockerfile 5.07% Shell 2.03% CSS 0.31%
golang vue timesheet timesheets self-hosted gin-gonic quasar-framework quasar reporting reporting-tool

timesheet's Introduction

GitHub release GitHub issues Code Climate Go Report Card Build Status

Simple Timesheet

User-friendly, fast, and reliable web application for weekly / monthly reporting. Report consulting hours on selected projects with further segmentation via rates.

Screencast

Supporting Simple Timesheet

Simple Timesheet is project with its ongoing development made possible entirely by the support of these awesome backers. If you'd like to join them, please consider:

Documentation

Read full documentation.

Rationale

Reporting and billing process includes three separated steps with well-defined data which flows in between:

  • Time reporting - all consultants
    • covered by this app - data are safe, eliminates manual errors, shows important data for consultants, data entry is as easy as possible
  • Billing preparation (confirming/editing reported hours for billing) - project manager or administrative person
    • covered partially by this app. If you bill 1:1 with your reporting then it has all you need
    • data are available in the DB which can be exported by this app read or exported by any DB tool
  • Exporting reported and billed hours in the internal accounting system for the invoicing to the clients and consultants - salaries
    • not covered by this app
    • data are available in the DB which can be exported by this app read or exported by any DB tool

Contributing

I would love your help! Before submitting a PR, please read over the Contributing guide.

To help you to get started you can read how to run the Timesheet from the source.

Here's a couple of areas that need some love:

  • Import/Export plugins - do you like functionality but want to integrate with your company billing SW? Create an issue and if you can submit PR.
  • Javascripts - I'm no JS wizz, I'm sure the Javascript code in ui/src could be improved/simplified/tested. * Documentation - Typo? Does something not make sense? Could it be worded better? Please help!
  • Test Coverage - Would love to get coverage over 80%, fontend and backend.

Standing on the shoulders of giants

Go, Gin web framework, Vue, Quasar, PostgreSQL and MySQL

Go Backend

JavaScript Frontend

timesheet's People

Contributors

benjibuiltit avatar camdfletcher avatar dependabot[bot] avatar johnsome avatar markcheno avatar valasek 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

timesheet's Issues

Reported records: Keep table header always visible

Is your feature request related to a problem? Please describe.
The user wants to see the data header even when the page is scrolled down.

Describe the solution you'd like
If a consultant reported more records then can be displayed on a page and scroll down, the table header is always visible.

Additional context
vuetifyjs/vuetify#1547

docker build and docker compose fails on step 15 of server

Description
COPY ./server/timesheet-dataarch.yaml /timesheet.yaml
returns error

Step 15/36 : COPY ./server/timesheet-dataarch.yaml /timesheet.yaml
COPY failed: stat /var/lib/docker/tmp/docker-builder060440867/server/timesheet-dataarch.yaml: no such file or directory

To Reproduce
Docker-Compose:

  1. docker-compose -f "docker-compose.yml" up -d --build
  2. gets to step 15/36 and then fails

Docker:

  1. docker build --rm -f "Dockerfile" -t timesheet:latest .
  2. gets to step 15/36 and then fails

Expected behavior
Expect the container to be created

Docker info:

  • OS: MacOS
  • Client: Docker Engine - Community
  • Version: 18.09.2

Additional context
Add any other context about the problem here.

Building docker images fails

Describe the bug
The image fails to build under Docker.

To Reproduce
Steps to reproduce the behavior:
After cloning the repo,

cd dockerfiles/cloud
docker build -t test .

Expected behavior
Code to build successfully.

Output

------
> [frontend 6/9] RUN yarn install:
#37 0.748 yarn install v1.22.15
#37 0.879 [1/5] Validating package.json...
#37 0.884 [2/5] Resolving packages...
#37 1.775 [3/5] Fetching packages...
#37 82.18 info [email protected]: The platform "linux" is incompatible with this module.
#37 82.19 info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
#37 82.20 info [email protected]: The platform "linux" is incompatible with this module.
#37 82.20 info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
#37 82.23 [4/5] Linking dependencies...
#37 82.24 warning "@quasar/quasar-app-extension-qmarkdown > [email protected]" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#37 82.25 warning " > [email protected]" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
#37 113.4 [5/5] Building fresh packages...
#37 118.2 error /client/node_modules/node-sass: Command failed.
#37 118.2 Exit code: 1
#37 118.2 Command: node scripts/build.js
#37 118.2 Arguments:
#37 118.2 Directory: /client/node_modules/node-sass
#37 118.2 Output:
#37 118.2 Building: /usr/local/bin/node /client/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
#37 118.2 gyp info it worked if it ends with ok
#37 118.2 gyp verb cli [
#37 118.2 gyp verb cli '/usr/local/bin/node',
#37 118.2 gyp verb cli '/client/node_modules/node-gyp/bin/node-gyp.js',
#37 118.2 gyp verb cli 'rebuild',
#37 118.2 gyp verb cli '--verbose',
#37 118.2 gyp verb cli '--libsass_ext=',
#37 118.2 gyp verb cli '--libsass_cflags=',
#37 118.2 gyp verb cli '--libsass_ldflags=',
#37 118.2 gyp verb cli '--libsass_library='
#37 118.2 gyp verb cli ]
#37 118.2 gyp info using [email protected]
#37 118.2 gyp info using [email protected] | linux | x64
#37 118.2 gyp verb command rebuild []
#37 118.2 gyp verb command clean []
#37 118.2 gyp verb clean removing "build" directory
#37 118.2 gyp verb command configure []
#37 118.2 gyp verb check python checking for Python executable "python2" in the PATH
#37 118.2 gyp verb `which` failed Error: not found: python2
#37 118.2 gyp verb `which` failed at getNotFoundError (/client/node_modules/which/which.js:13:12)
#37 118.2 gyp verb `which` failed at F (/client/node_modules/which/which.js:68:19)
#37 118.2 gyp verb `which` failed at E (/client/node_modules/which/which.js:80:29)
#37 118.2 gyp verb `which` failed at /client/node_modules/which/which.js:89:16
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/index.js:42:5
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/mode.js:8:5
#37 118.2 gyp verb `which` failed at FSReqCallback.oncomplete (fs.js:191:21)
#37 118.2 gyp verb `which` failed python2 Error: not found: python2
#37 118.2 gyp verb `which` failed at getNotFoundError (/client/node_modules/which/which.js:13:12)
#37 118.2 gyp verb `which` failed at F (/client/node_modules/which/which.js:68:19)
#37 118.2 gyp verb `which` failed at E (/client/node_modules/which/which.js:80:29)
#37 118.2 gyp verb `which` failed at /client/node_modules/which/which.js:89:16
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/index.js:42:5
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/mode.js:8:5
#37 118.2 gyp verb `which` failed at FSReqCallback.oncomplete (fs.js:191:21) {
#37 118.2 gyp verb `which` failed code: 'ENOENT'
#37 118.2 gyp verb `which` failed }
#37 118.2 gyp verb check python checking for Python executable "python" in the PATH
#37 118.2 gyp verb `which` failed Error: not found: python
#37 118.2 gyp verb `which` failed at getNotFoundError (/client/node_modules/which/which.js:13:12)
#37 118.2 gyp verb `which` failed at F (/client/node_modules/which/which.js:68:19)
#37 118.2 gyp verb `which` failed at E (/client/node_modules/which/which.js:80:29)
#37 118.2 gyp verb `which` failed at /client/node_modules/which/which.js:89:16
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/index.js:42:5
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/mode.js:8:5
#37 118.2 gyp verb `which` failed at FSReqCallback.oncomplete (fs.js:191:21)
#37 118.2 gyp verb `which` failed python Error: not found: python
#37 118.2 gyp verb `which` failed at getNotFoundError (/client/node_modules/which/which.js:13:12)
#37 118.2 gyp verb `which` failed at F (/client/node_modules/which/which.js:68:19)
#37 118.2 gyp verb `which` failed at E (/client/node_modules/which/which.js:80:29)
#37 118.2 gyp verb `which` failed at /client/node_modules/which/which.js:89:16
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/index.js:42:5
#37 118.2 gyp verb `which` failed at /client/node_modules/isexe/mode.js:8:5
#37 118.2 gyp verb `which` failed at FSReqCallback.oncomplete (fs.js:191:21) {
#37 118.2 gyp verb `which` failed code: 'ENOENT'
#37 118.2 gyp verb `which` failed }
#37 118.2 gyp ERR! configure error
#37 118.2 gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
#37 118.2 gyp ERR! stack at PythonFinder.failNoPython (/client/node_modules/node-gyp/lib/configure.js:484:19)
#37 118.2 gyp ERR! stack at PythonFinder.<anonymous> (/client/node_modules/node-gyp/lib/configure.js:406:16)
#37 118.2 gyp ERR! stack at F (/client/node_modules/which/which.js:68:16)
#37 118.2 gyp ERR! stack at E (/client/node_modules/which/which.js:80:29)
#37 118.2 gyp ERR! stack at /client/node_modules/which/which.js:89:16
#37 118.2 gyp ERR! stack at /client/node_modules/isexe/index.js:42:5
#37 118.2 gyp ERR! stack at /client/node_modules/isexe/mode.js:8:5
#37 118.2 gyp ERR! stack at FSReqCallback.oncomplete (fs.js:191:21)
#37 118.2 gyp ERR! System Linux 5.10.47-linuxkit
#37 118.2 gyp ERR! command "/usr/local/bin/node" "/client/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
#37 118.2 gyp ERR! cwd /client/node_modules/node-sass
#37 118.2 gyp ERR! node -v v14.18.1
#37 118.2 gyp ERR! node-gyp -v v3.8.0
#37 118.2 gyp ERR! not ok
#37 118.2 Build failed with error code: 1
#37 118.2 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
------
executor failed running [/bin/sh -c yarn install]: exit code: 1

Desktop:

  • OS: MacOS 11.6

Docker Version:

Client:
 Cloud integration: 1.0.17
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:20 2021
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:53:34 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Save configuration changes from UI in config file

Is your feature request related to a problem? Please describe.
User changes any configuration value on page Administration and after application restart settings are defaulted those from to timesheet.yaml file.

Describe the solution you'd like
Each changed setting is saved in config file AND config file can be downloaded as part of data backup.

Cannot edit date on record which is created in UI

Describe the bug
If I add the new record or duplicate records, I cannot edit date on this record.
The date is editable after refresh.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '/report'
  2. Click on 'NEW REPORT'
  3. Click on a date on newly added records
  4. See error
    [Vue warn]: Error in render: "RangeError: date value is not finite in DateTimeFormat.format()"

Expected behavior
The date is editable immediately, without refresh

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser Firefox
  • Version 64.0.2 (64-bit)

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.