Giter VIP home page Giter VIP logo

task-list's Introduction

Hi there, I'm Aleksey ๐Ÿ‘‹

I like to learn and teach. Especially, I like to learn how to learn and how to teach ๐Ÿ˜„

Current projects:

  • ๐Ÿ”Ž thelper โ€” Go linter to chech the consistency of test helpers usage.
  • ๐Ÿ—’๏ธ task-list โ€” a personal system to track personal tasks. One day I write an article about it (or make a video).

Further projects:

  • ๐Ÿค– task-list-bot โ€” the next level of my own task list. Will be packed as telegram bot.
  • ๐ŸŽ“ course about pragmatic development โ€” I want to share my experience in development to help others make fewer mistakes.

task-list's People

Contributors

dependabot[bot] avatar kulti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

task-list's Issues

test DB dump backup

Blocked by #28.

After adding regular DB backups it's needed to try to restore DB from backup.

simplify makefile

Makefile becomes too big and ugly. It does a lot of stuff. Other tools can probably do it better.

Things to research:

  • docker images build
  • deploy
  • project structure to generalize makefile targets

Finally, things to be done:

  • Reorganize project source tree to simplify docker build - #34.
  • Move all dockerfile to separate directory - #39.
  • Add some configuration to docker-compose by env files - #35.
  • Push docker images to hub - #32.
  • Add a new target(st) to pull docker images and deploy them without building - #36.

save begin and end date of sprint

After #72 sprint/new will pass begin and end sprint dates. They should be stored in DB.

Also, it should be validated - sprint dates cannot be overlapped. (it doesn't cost effort)

write structured Readme file

It needs the following sections:

  • Description (what is it)
  • How to use
  • How to build
  • How to deploy
  • Requirements (go, docker, npx)

move files to separate project folders

It helps to write generated makefile targets:

  1. Move all backend sources to the server folder.
  2. Rename frontend to front.
  3. Rename db to migrate.
  4. Create live-reload.

log storage

I'm not sure that logs are stored anywhere. Also, I have different format logs for backend and proxy-access logs.

Logs should contain link and/or span id to link all log's chain.

pgx driver allows set up a custom logger.

add templated task list editor

I have a new sprint template for tasks. But it's not simple to edit (only through db).

It will be great to add simple editor to manage new sprint tasks. Especially for projects of the month.

run unti tests in pre-commit hook

Locally unit tests should be always cached. So it makes sense to run unit tests in a pre-commit hook.

The problem is pre-commit also run in CI.

backlog list

Sometimes tasks cannot be done at this sprint. It's a good idea to write it into backlog to get it into one of the following sprints.

split monorepo to separate services

It's not simple and is not cost to effort. But it can be interesting and good for research and learning.

Monorepo is useful for the following:

  1. All common stuff in one place: api.yaml and generated cli, db migrations, makefiles and scripts.
  2. Simple to run integration tests.
  3. Simple version management.

But it is bad for the following:

  1. Not all parts need to increase their versions. E.g. proxy and migrate are stable in common.
  2. Not need to run frontend linter and tests when updates server and vice versa.
  3. It's not possible to calculate coverage for front and server separately.

Splitting can be done step by step:

  1. Uses submodules to save the current structure but separate source code.
  2. Uses submodules and go packages to share common parts (api.yaml and apitest).
  3. Make it possible to run services with different versions.
  4. Creates artifacts (docker images) for PR and trigger separate integration tests for them.
  5. Migrate workflows to separate repos. Monorepo contains only submodules and single version for everyone.

It also needs to research deploy tools to simplify updates and version management.

think about task id

At now task id is serial in db and string in api. It ways to convert number to string and vice versa.

How about to use string id in db?

failed to update task

Looks similar to #62. It's needed to check all possible state switches.

The idea: extract allowed state switches to method or type and use that inside storages.

calendar

To plan a new sprint I get tasks from different sources. Two of them are placed on the monthly page of my calendar in bujo:

  • actions planned to a specific date
  • projects of month

Probable solutions:

  • add a separate list for calendar planned tasks
  • migrate go calendar app and use it in Task List
  • add projects of the month to new sprint template

mobile version

Task List uses bootstrap. It should be simple to add mobile version to us it on phone or tablet.

cannot switch state from done to done

When I try to update done task from 6/6 to 7/7 I get the error "failed to update task".

The logs have the reason:

{"level":"warn","ts":1593423706.1302848,"caller":"router/responses.go:34","msg":"failed to update task in db","error":"cannot switch state from done to done"}

deadline tasks

Some tasks need to be done to a specific deadline. For example, I need to pay bills to the end of month.

These tasks should be added to a new sprint template at a specific time, not every week.

randomize tests

Some tests use fake tasks and sprint's title. They should be different to increase chance of bug found.

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.