Giter Site home page Giter Site logo

tegonal / lasius Goto Github PK

View Code? Open in Web Editor NEW
11.0 10.0 0.0 4.81 MB

An advanced web app to track time over multiple teams, organisations and projects. Records time, shows reports and statistics. Shows time tracked vs time planned per day and week. Currently in public beta testing.

Home Page: https://demo.lasius.ch

License: GNU Affero General Public License v3.0

Dockerfile 0.05% Scala 44.92% HTML 0.04% Shell 0.01% Lua 0.01% JavaScript 1.14% TypeScript 53.85%
nextjs scala time-tracker time-tracking-app

lasius's Introduction

Lasius open-source time tracking

Lasius is an open source time tracking solution that includes a comprehensive set of features, with a particular focus on team collaboration.

Public Beta: We welcome your feedback! Please use the issue tracker of this repository.

Lasius is a modern web application with a backend written in Scala and a NextJS React frontend.

Features

Time Tracking

  • Start-Stop tracking: Record time spent on a task in real-time
  • Labels & Tags: Assign labels to each booking and edit labels on project level
  • Favorites: Save your most used bookings as favorites and start booking with one click
  • Progressive Web App: Use Lasius on your mobile device as a PWA and add it to your homescreen
  • Dark-mode: Switch between light and dark mode
  • Statistics & Reports: See your organisation, project or personal statistics for a given time period
  • Export: Export organisation, project or personal bookings using various filters as CSV for a given time period
  • ACL: Assign roles to users in a project or organisation to allow or restrict access to certain features

Team Features

  • Organisations: Be a member of multiple organisations and invite users with an invitation link, switch between them anytime and see only organisation specific data
  • Projects: Create projects, assign them to organisations and invite users with an invitation link
  • Team View: See what everybody is currently working on and book on the same task with one click

Integrations

  • Issue trackers: Connect your issue tracker to Lasius and use issue numbers as labels. Currently supported:
    • GitLab
    • Jira

Personal Time Management

  • Set your personal hourly target per weekday and organisation
  • See your progress in real-time

Roadmap

We plan to implement the following features in the near future (no specific order, no ETA):

  • Make GitLab and Jira integration configurable in the frontend (currently hardcoded)
  • Add support for GitHub issue tracker
  • Make tags and labels configuration configurable in the frontend (currently hardcoded)
  • Add support for sending E-Mails via SMTP for password reset, invitation links, etc.
  • Quick onboarding for new users with basic usage instructions
  • Special project to book sick days, holidays, etc. per organization

If you plan to use Lasius for your company or organisation, and you depend on one of the above features, we are happy to discuss sponsoring the development.

Watch this repository to get notified about new releases.

History

The development of Lasius started in 2015. It is the exclusive time tracking tool of Tegonal, an experienced software development team based in Bern (Switzerland). We developed Lasius because there was no tool available in 2015 and, to be honest, because we just wanted to build something new and nice :-)

Our time tracker had to be based on open source components, meet our high privacy standards and be able to be hosted wherever we wanted. The feature set of Lasius has been continuously adapted to our needs in everyday project work and we are happy that we can share it with you.

Development

Requirements

  • mongoDB >= 5.0.9

Environment Variables

This is only necessary if you sping up the containers manually or with your own compose file. For your convenience, check out the lasius-docker-compose companion repo. Please see the docker-compose.yml file for container specific environment variables.

The following variables are suggested to be used in an .env file alongside docker-compose and could be used by all containers, containing secrets that only might be available during CI/CD.

Variable name Description Default value
LASIUS_HOSTNAME Hostname (i.e. localhost, domain.com, ...) localhost
LASIUS_VERSION The current version, corresponds with docker image tags. We suggest using specific versions in production, not latest latest
MONGODB_URI Override connection to mongodb see docker-compose.yml
MONGO_INITDB_PASSWORD Password of mongoDB user lasius
MONGO_INITDB_ROOT_PASSWORD Password of root user of mongoDB admin
MONGO_INITDB_ROOT_USERNAME Username of root user of mongoDB admin
MONGO_INITDB_USERNAME Username of mongoDB user lasius
NEXT_AUTH_SECRET Hash for next-auth session salting, e.g. the output of openssl rand -base64 32 random string
TRAEFIK_CERT_EMAIL E-mail address to use when fetching a certificate from LE [email protected]
TRAEFIK_CERT_RESOLVER LetsEncrypt resolver, use letsencrpyt in production, empty value for testing (mind the LE rate limit) letsencrypt
TZ Your desired timezone CET

Specific to backend container:

Variable name Description Default value
LASIUS_CLEAN_DATABASE_ON_STARTUP If true, drop on startup all data 'false'
LASIUS_INITIALIZE_DATA 'true' if database should automatically get initialized in case no user accounts are configured 'true'
LASIUS_INITIAL_USER_EMAIL Username of initial admin user to login. Only used when LASIUS_INITIALIZE_DATA is set to 'true' and no users where found in the database. [email protected]
LASIUS_INITIAL_USER_KEY Initial internal user key for to the intial user account. Only used when LASIUS_INITIALIZE_DATA is set to 'true' and no users where found in the database. admin
LASIUS_INITIAL_USER_PASSWORD Password of initial admin user to login. Only used when LASIUS_INITIALIZE_DATA is set to true and no users where found in the database. admin
LASIUS_START_PARAMS Provide special start arguments to the play server. Might be used to inject a different application.conf to the server. see docker-compose.yml
LASIUS_SUPPORTS_TRANSACTIONS To be able to benefit of transactions in MongoDB you need a replica set first. 'false'

Specific to frontend container:

Variable name Description Default value
ENVIRONMENT production - any other value runs NextJS in dev mode. Not suggested in deployments. production
NEXT_AUTH_SECRET Hash for next-auth session salting, e.g. the output of openssl rand -base64 32 random string
LASIUS_DEMO_MODE Enables or disables demo mode false
LASIUS_TELEMETRY_PLAUSIBLE_HOST Hostname/FQDN of a matomo instance to collect anonymous usage data, e.g. stats.domain.com undefined
LASIUS_TELEMETRY_PLAUSIBLE_SOURCE_DOMAIN Matomo site ID, e.g. 42 undefined

We suggest you use a .env file and save it in the same directory as the docker-compose.yml for build dependent configuration and edit all other variables in the docker-compose.yml file directly if they are not dependent on CI/CD variables.

Dev Environment

To bring up a local dev Environment please install:

  • sbt
  • docker
  • node

Start the backend with yarn run backend and the frontend with yarn run dev from the frontend directory.

Test Environment

To simply bring up a test environment, check out the lasius-docker-compose companion repo.

Production Environment

To bring up a production environment, check out the lasius-docker-compose companion repo.

The docker-compose setup above comes with single mongoDB instance and therefore without support of transactions. To use Lasius in production, you should use transactions and therefore run mongoDB in a replicaset. To benefit from transactions in Mongo DB you need to set LASIUS_SUPPORTS_TRANSACTIONS=true and configure an external access to the mongodb replicaset through MONGODB_URI.

Lasius' docker-compose.yml supports LetsEncrypt certificates out of the box, thanks to Traefik reverse proxy. If you decide to run Lasius behind another reverse proxy or SSL termination point, you can look at docker-compose-no-https.yml. However, we strongly suggest using secure connections.

License

As we are strongly committed to open source software, we make Lasius available to the community under AGPLv3 license. The code in this repo is provided without warranty.

Support

If you would like us to set up or run Lasius for you then please contact us here for an offer: https://tegonal.com

If you need help, discover a bug or have a feature request, please open an issue in this repo.

lasius's People

Contributors

genox avatar renovate[bot] avatar robstoll avatar toggm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lasius's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update dependency @headlessui/react to v1.7.19
  • Update dependency boring-avatars to v1.10.2
  • Update dependency com.chuusai:shapeless to v2.3.12
  • Update dependency com.github.scullxbones:akka-persistence-mongo-rxmongo to v3.1.3
  • Update dependency com.typesafe.play:play-json-joda to v2.10.5
  • Update dependency eslint-plugin-license-header to v0.6.1
  • Update dependency eslint-plugin-react to v7.34.2
  • Update dependency react-hook-form to v7.51.5
  • Update dependency scala to v2.13.14
  • Update akkaVersion to v2.8.5 (com.typesafe.akka:akka-persistence, com.typesafe.akka:akka-persistence-query, com.typesafe.akka:akka-slf4j, com.typesafe.akka:akka-testkit)
  • Update dependency @types/lodash to v4.17.4
  • Update dependency @types/node to v20.14.2
  • Update dependency com.fasterxml.jackson.module:jackson-module-scala_2.13 to v2.17.1
  • Update dependency de.flapdoodle.embed:de.flapdoodle.embed.mongo to v4.13.1
  • Update dependency framer-motion to v11.2.10
  • Update dependency io.github.play-swagger:play-swagger to v1.7.3
  • Update dependency io.github.play-swagger:sbt-play-swagger to v1.7.3
  • Update dependency net.openhft:zero-allocation-hashing to v0.26ea0
  • Update dependency next-i18next to v15.3.0
  • Update dependency org.scalameta:sbt-scalafmt to v2.5.2
  • Update dependency org.webjars:swagger-ui to v5.17.14
  • Update dependency prettier to v3.3.1
  • Update dependency sbt/sbt to v1.10.0
  • Update dependency svgo to v3.3.2
  • Update dependency typescript to v5.4.5
  • Update dependency usehooks-ts to v2.16.0
  • Update nivo monorepo to ^0.87.0 (@nivo/bar, @nivo/core, @nivo/pie)
  • Update typescript-eslint monorepo to v7.12.0 (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • Update actions/checkout action to v4
  • Update actions/setup-java action to v4
  • Update actions/setup-node action to v4
  • Update dependency @headlessui/react to v2
  • Update dependency com.google.inject.extensions:guice-assistedinject to v7
  • Update dependency com.google.inject:guice to v7
  • Update dependency date-fns to v3
  • Update dependency date-fns-tz to v3
  • Update dependency eslint to v9
  • Update dependency io.github.play-swagger:play-swagger to v2
  • Update dependency io.github.play-swagger:sbt-play-swagger to v2
  • Update dependency org.julienrf:play-json-derived-codecs to v11
  • Update dependency usehooks-ts to v3
  • Update docker/build-push-action action to v5
  • Update docker/login-action action to v3
  • Update docker/setup-buildx-action action to v3
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Warning

Renovate failed to look up the following dependencies: Failed to look up sbt-package package com.tegonal:play-json-typedid_2.13.

Files affected: backend/build.sbt


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
backend/Dockerfile
  • tegonal/jelastic-openjdk 17
frontend/Dockerfile
  • node 20
  • node 20-alpine
github-actions
.github/workflows/build_backend.yml
  • actions/checkout v2
  • actions/setup-java v2
.github/workflows/build_frontend.yml
  • actions/checkout v3
  • actions/setup-node v3
.github/workflows/publish.yml
  • actions/checkout v3
  • docker/setup-buildx-action v2
  • docker/login-action v2
  • docker/build-push-action v3
  • actions/checkout v3
  • docker/setup-buildx-action v2
  • docker/login-action v2
  • actions/setup-java v2
  • docker/build-push-action v3
npm
frontend/package.json
  • @emotion/react ^11.11.4
  • @headlessui/react ^1.7.18
  • @hookform/error-message ^2.0.1
  • @nivo/bar ^0.84.0
  • @nivo/core ^0.84.0
  • @nivo/pie ^0.84.0
  • @popperjs/core ^2.11.8
  • @theme-ui/color ^0.16.2
  • @theme-ui/match-media ^0.16.2
  • axios ^1.6.7
  • boring-avatars ^1.10.1
  • cookie ^0.6.0
  • date-fns ^2.30.0
  • date-fns-tz ^2.0.0
  • framer-motion ^11.0.8
  • i18next ^23.10.0
  • js-cookie ^3.0.5
  • json-stable-stringify ^1.1.1
  • lodash ^4.17.21
  • next ^14.1.2
  • next-auth 4.24.6
  • next-i18next ^15.2.0
  • next-plausible ^3.12.0
  • next-pwa ^5.6.0
  • next-seo ^6.5.0
  • react ^18.2.0
  • react-async-hook ^4.0.0
  • react-dom ^18.2.0
  • react-hook-form 7.51.0
  • react-i18next ^14.0.5
  • react-popper ^2.3.0
  • react-use-websocket ^4.8.1
  • swr ^2.2.5
  • theme-ui ^0.16.2
  • ts-export-to-csv ^0.3.3
  • tslog ^4.9.2
  • usehooks-ts ^2.15.1
  • zustand ^4.5.2
  • @emotion/eslint-plugin ^11.11.0
  • @next/bundle-analyzer ^14.1.2
  • @openapitools/openapi-generator-cli ^2.10.0
  • @types/cookie ^0.6.0
  • @types/d3-shape ^3.1.6
  • @types/js-cookie ^3.0.6
  • @types/json-stable-stringify ^1.0.36
  • @types/lodash ^4.14.202
  • @types/node 20.11.24
  • @types/react ^18.2.62
  • @types/react-dom ^18.2.19
  • @typescript-eslint/eslint-plugin ^7.1.1
  • @typescript-eslint/parser ^7.1.1
  • concurrently ^8.2.2
  • eslint 8.57.0
  • eslint-config-airbnb ^19.0.4
  • eslint-config-next ^14.1.2
  • eslint-config-prettier ^9.1.0
  • eslint-import-resolver-typescript ^3.6.1
  • eslint-plugin-import ^2.29.1
  • eslint-plugin-jsx-a11y ^6.8.0
  • eslint-plugin-license-header ^0.6.0
  • eslint-plugin-prettier ^5.1.3
  • eslint-plugin-react ^7.34.0
  • i18next-parser ^8.13.0
  • orval 6.23.0
  • prettier ^3.2.5
  • svgo ^3.2.0
  • svgstore-cli ^2.0.1
  • typescript 5.3.3
  • node >=20.0.0
  • yarn 4.1.0
nvm
frontend/.nvmrc
  • node >=18.7.0
sbt
backend/build.sbt
  • scala 2.13.12
  • com.github.scullxbones:akka-persistence-mongo-rxmongo 3.1.2
  • com.tegonal:play-json-typedid 1.0.3
  • org.julienrf:play-json-derived-codecs 10.1.0
  • com.typesafe.play:play-json-joda 2.10.1
  • com.google.inject:guice 5.1.0
  • com.google.inject.extensions:guice-assistedinject 5.1.0
  • com.typesafe.akka:akka-persistence 2.6.21
  • com.typesafe.akka:akka-persistence-query 2.6.21
  • com.typesafe.akka:akka-slf4j 2.6.21
  • com.typesafe.akka:akka-testkit 2.6.21
  • org.mindrot:jbcrypt 0.4
  • de.flapdoodle.embed:de.flapdoodle.embed.mongo 4.9.2
  • com.github.dnvriend:akka-persistence-inmemory 2.5.15.2
  • io.kontainers:purecsv 1.3.10
  • com.chuusai:shapeless 2.3.10
  • net.openhft:zero-allocation-hashing 0.16
  • io.github.play-swagger:play-swagger 1.4.4
  • org.webjars:swagger-ui 5.9.0
  • com.fasterxml.jackson.module:jackson-module-scala_2.13 2.14.2
backend/project/build.properties
  • sbt/sbt 1.7.2
backend/project/plugins.sbt
  • com.typesafe.play:sbt-plugin 2.8.20
  • org.scalameta:sbt-scalafmt 2.4.6
  • com.dwijnand:sbt-dynver 4.1.1
  • com.eed3si9n:sbt-buildinfo 0.11.0
  • io.github.play-swagger:sbt-play-swagger 1.4.4
  • de.heikoseeberger:sbt-header 5.7.0

  • Check this box to trigger a request for Renovate to run again on this repository

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.