Coder Social home page Coder Social logo

sfxon / bettertime Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4.86 MB

Timetracking tools. Track you and your teams working-hours and the times you are working on specific projects or tasks.

Home Page: https://bettertime.org/

License: MIT License

PHP 46.94% Twig 6.65% CSS 4.26% JavaScript 42.15%
timetracker timetracking worktime

bettertime's Introduction

It's a great day for pinball.

bettertime's People

Contributors

sfxon avatar

Stargazers

 avatar

Watchers

 avatar

bettertime's Issues

Write Blog entry

  • Plan topics
  • Write short sections
  • See, if some topics require more text
  • Check for errors

Add system admin functionality.

As an administrator, I want to have a custom backend login, where I can manage parts of the data and system settings.
It should be decoupled from the regular system stuff.

Here is a brief description, of how to add multiple user entities:
https://stackoverflow.com/a/55762396/2691564^

  • Add Admin Entity
  • Add Admin Login and security definitions
  • Refactor admin components to work with shorter term "admin"
  • Add basic layout: Bootstrap left side menu layout.
  • Switch to bootstrap dark theme.
  • Add logout button
  • Add listing of administrators in admin.
  • Add CreateAdminAccount functionality.
  • Add EditAdminAccount functionality.
  • Add DeleteAdminAccount functionality.
  • Add dark palm tree logo for dark mode.
  • Refactor admin login page.
  • Link profile link in admin sidebar to the editAdmin page.

Add admin menu for mailer.

  • Install Symfony Mailer

  • Add admin controller for mailer settings:

    • We use different methods for sending mails: smtp, sendmail, native; I'll not support third party mailers by default, since SMTP should be enough at least, and is important to prevent vendor login.

    • SMTP-Connection-data:

      • server
      • security (ssl, tls, none)
      • user
      • password
      • port
    • Symfony Mailer documentation:
      https://symfony.com/doc/current/mailer.html

  • Add form for mailer settings.

  • Add "send test mail" button, for testing mail transport of the settings.

  • Add a method, that sends a test mail.

  • Add technical documentation.

Add API

Made research for API usage in Symfony with Authentication and Access-Restriction.
Did not make final decisions, but added a document with the results of the research.

Will look at, how shopware solved authentication in the api, and possibly use a similar approach.

Update project heading with changed values.

  • Add an action handler option to the projectService.js - it should take a function as parameter and use it as a callback.
  • Write callback, to handle the change event, and update the value. This should update the text of the accordion, based on the current valid value.

Design improvements

  • Index Page
  • Login Page
  • Registration Page
  • Make css file for colors only. Call first theme file waterworld.
  • Make second css file with dark theme. Call second theme file night-course.
  • Let user switch the current mode. Default mode is our beautiful waterworld theme. (Moved, because we first need user settings.)
  • Style the pages, when the user is logged in.

Plan and add Access Control to the BusinessData.

  • Decide: Should we use ACL?

Result: Yes, on the team level, we will have to have an acl.

  • Add UserIds to projects.

  • Add UserIds to timeTrackings.

  • Add UserIds to internalStats.

  • Check if we should set UserIds to settings, too?

  • Convert ProjectService to UserProjectService. This one should only be responsible for handling objects on a user level. In future, we will also add a service on the team level, so users can change team values, if they are allowed to do so.

  • UserProjects: Make sure, that a user can only read his own data entries.

  • UserProjects: Make sure, that a user can only edit his own data entries.

  • UserProjects: Make sure, that a user can only delete his own data entries.

  • TimeTrackings: Make sure, that a user can only read, edit and delete his own data entries.

  • internalStats: Make sure, that a user can only read, edit and delete his own data entries.

  • Settings: Make sure, that a user can only read, edit and delete his own data entries.

  • Implement operations on API Platform implementation of the ProjectEntity. It should define user/project/ routes. (Later we will implement team/project/ routes too, to work with data that is assigned to a team.

Improve project selector in taskTimeEndDialog.

  • Add tables for track keeping for saving the most-often-used and/or last-used entries of specific tables.
  • Keep track of the last used projects.
  • Rename trackKeeping stuff to internalStats (Migration, Entity, Repository, Service, Usage), for better clarity and naming.
  • Add timetracking table to internalStatsEntity table in migration. (Prepare for later usage)
  • Offer last used projects below the project search Field.
  • Limit to ten entries.
  • Add javascript, to select one of the entries of the project-quick-selection.
  • If a current project was set, when opening the edit Dialog, also add it as a preselectable entry. Make sure, it's not doubled with the entries from the track keeping. (So there could be up to 11 selectable entries now.)
  • Add menu entry "reset" to the fast-creation menu, that will reset the input and text to the initial value again, when it is clicked. Differentiate it from the other points by a different background-color.
  • Add hover effect for last used project-bullets.
  • Run linter.
  • Write documentation.

Add customer entity

Customers are the ones, that projects are made for. The customer entity brings the project more into the direction of an erp. A really simple erp so far. Lets keep it simple.

  • Add Customer entity.

Implement tags

Most time tracking software uses tags, to mark tasks with keywords.
I think this is a good idea, we should also integrate tags into the software,
to make it easy, to filter for specific tasks (for example).

DateTimePicker

  • Implement Tempus Dominus v 6 as a datepicker library.

  • Use a different datetime picker for the input fields, since the default html ones are errournous, when choosing specific values. (They show a submit error) -> see mindfavs booking project for more information.

Add dark mode

We need a dark mode. Light mode is making my eyes cry.

Add user account functionality

  • Make account edit page controller.
  • Make account base template (orientate on dashboard)
  • Show account for in the template.
  • Make account changeable.
  • Split forms on account page into two separately saveable forms for mail and password, because I might only want to change my mail, and not my password or vice versa.
  • Send registration mail. (Moved, because it needs mail configuration)
  • Forgot password. (Moved, because it needs mail configuration)
  • Add minimum password strength validation and error messages. (Constraints and Validation?)
  • Ask for previous password, when changing the password in the account.
  • Add checking, if email address that was entered is a valid email address. (unique, contains @? Contains text? Is at least 3 chars long?) (Constraints and Validation?)

Add a linter to the project

We want to be able, to automatically check the code quality. Add a linter to the project.

  • Search for a linter.
  • Install php-cs-fixer with composer.
  • Make sure, dependencies are not copied to the repository directly.
  • Run php-cs-fixer.
  • Check all changes.
  • Commit and push changes.
  • Update documentation

End-Time-Tracking Page

File for demo-application is in local project on steves computer:
modal-demo.html


When I finish a timetracking, I want to open a new page, where I can enter data about the tracked time.

Page Properties

Our page should at least have this properties:

  • Project-Selector

    • An element to select the project that this timetracking was taken for.
    • It should make it possible to select a project.
    • Since we can have a lot of projects, it should load projects dynamically (by ajax calls).
      • It should use a search function for this purpose, which should show the search suggestions when you type the first letters.
  • Toggleable elements for working times:

    • Starttime
    • Endtime
    • These elements are initially hidden, and should be able to be displayed.
  • Checkbox "Billing"

  • Comment-Textfield

    • Textfield to add a comment.
  • Buttons:

    • Save button
    • Close button.
  • Dialog should be a static backdrop modal, vertical and horizontal centered.


  • Bootstrap-Popup Beispiele ansehen

  • In einer kleinen Demo-Anwendung unser Popup erstellen (außerhalb des Projekts)

    • Project selector (as a simple dropdown)
    • Togglebar for timetrackings.
    • Checkbox "Billing"
    • Comment-Textfield
    • Buttons
    • Make sure, modal is static backdrop and vertical and horizontal centered.
  • Build "save" functionality

  • Build redirect functionality. If I come from the projects overview, i want to be redirected to the projects overviev. If i come from the trackedtimes overview, I want to be redirected to the trackedtimes overview.

  • Make some design improvements on the project search-input-field:

    • Make position of search result list absolute.
    • Remove rounded borders at bottom of text-input.
    • Remove rounded borders at top of search-result-list.
    • Show list in size of number of search results.
  • Show a text, when no results where found: "No results, e.g. "Keine Ergebnisse"

  • Make select list readonly, when no results where found,

  • Remove readonly property from select (search result), when results have been found.

  • Close result list, when it is clicked, also when there where no search results.

  • Close result list, when I click somewhere on the page. (I think the best solution is, to use the focus-out event of the search input box)

  • Transform Javascript to Object-oriented format

  • Abstract parts of javascript, so it can be used in general.

Optimize EndTimer:

  • Show the start and end times as accordion. The accordions Header (the thing you use to toggle it) should show the tracked times. This is meant to reduce the complexity of the Dialog. Users should have a faster Look on important Input fields.

  • Do the same for the project.

Update documentation

  • Add new references to third party libraries to readme.md

  • Add reference to doc folder, where possible and useful.

Projektliste sortierbar machen

  • Entität Setting anlegen (id (UUID), textId (string), setting (TEXT))
  • Default-View für Projekte definieren
  • Service für Settings erstellen
  • Service für Settings erweitern: Wenn beim Laden einer JSON-Setting Datei, diese Datei nicht existiert, soll der Loader prüfen, ob eine .json.default Datei existiert, von dieser eine Kopie anlegen unter dem selben Dateinamen, aber ohne .default.
  • Service für View-Settings erstellen
  • View-Settings in der Projekte Ansicht laden
  • Projektname anklickbar machen
  • Controller erweitern: Sortier-Wunsch entgegennehmen
  • Controller erweitern: Entgegengenommenen Sortier-Wunsch in den ViewSettings speichern.
  • Projekt-Tabelle im Dashboard abhängig von eingestellem View-Setting sortiert laden.
  • Test und Dokumentation

Add settings for system administrators.

The service for this task will be named Service\ConfigService.

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.