Giter VIP home page Giter VIP logo

atomic-todo's People

Contributors

colinfwren avatar

Watchers

 avatar

atomic-todo's Issues

CI Pipeline to run front-end tests

Set up CI pipeline to run the front-end tests:

  • Unit tests

If the tests fail this should prevent PRs from being merged or main branch being deployed.

Add means to configure front-end app via Environment Variables

In order to make it easier for self-hosters to run the app under their setup the front-end app needs to be able to be configured via Environment Variables. The folliwing parts of the front-end should be configurable:

  • Back-end URL
  • PostHog URL or if not defined then analytics is disabled
  • Sentry/GlitchTup URL or if not defined then observability is disabled

Refactor GraphQL schema to remove TodoList heirarchy

Following discovery of how to best model the data in the app (https://medium.com/@colinwren/atomic-todo-discovery-modelling-dates-e5d062b6f4dc) I'm removing the hierarchy of TodoLists instead TodoList will become a dynamically generated collection of Todos within a period of time.

The following changes need to be made:

  • Remove parentList from TodoList
  • Remove childLists from TodoList
  • Rename level to granularity
  • Add endDate field to TodoList
  • Change days on TodoBoard to be an array of TodoList
  • Change weeks on TodoBoard to be an array of TodoList
  • Change months on TodoBoard to be an array of TodoList
  • Remove lists from TodoBoardResult as these will be rendered as part of the TodoBoard object directly now
  • Rename startDate on TodoBoard to activePeriodStartDate to better reflect the fact this date relates to the active period shown

Set up Allure for back-end and front-end testing

In order to get a good idea on the testing add allure to the back-end and front-end test reporters. Have the CI pipeline that runs the test create an artifact of the allure XML output so this can be imported into the Allure reporter service

CI pipeline to run back-end tests

Set up CI pipeline to run the back-end tests:

  • Unit tests

If the tests fail this should prevent PRs from being merged or main branch being deployed.

Add end to end tests for front-end

Using Playwright create a set of end to end tests to check the following user flows:

  • Signing up
  • Logging in
  • Changing email for account
  • Changing password for account
  • Completing Onboarding
  • Creating TodoBoard
  • Deleting TodoBoard
  • Renaming TodoBoard
  • Creating Todo
  • Renaming Todo
  • Deleting Todo
  • Moving Todo from day granularity TodoList to week granularity TodoList
  • Progressing Todoboard active period forward a month
  • Regressing TodoBoard active period back a month

Refactor code for moving Todo between TodoLists

With the changes to the schema (#5 and #6) the approach to moving a Todo between TodoLists should be made far simpler so the horrible blob of logic that was traversing the heirachy of lists should be refactored to use that new approach.

Add tests and app logic to handle localised dates and timezones

When implementing #17 there was an issue where the tests which run locally in the Europe/London timezone were failing when run in CI due to that being UTC.

The code shouldn't really care about timezones because it's not using time like that so should look to find a way to fix this issue properly

Add component tests for back-end functions

Add small suite of tests to spin up Appwrite, populate it with data and perform the following user flows via the API:

  • Creating TodoBoard
  • Creating Todo
  • Deleting Todo
  • Renaming Todo
  • Completing Todo
  • Moving Todo from day granularity list to week granularity list
  • Progressing TodoBoard forward a month
  • Regressing TodoBoard back a month

Refactor changing todo item position in list

Will likely need to add some means of tracking position of the todo in the different granularities so maybe adding positionInMonth, positionInWeek, positionInDay could do this?

Need to take into consideration also that when moving between lists would like to sort that too.

Should be able to use the value of over from the handleDragEnd callback to get the list dates so can do a filter on the items in the list and update the position value accordingly

Add means to configure back-end app via Environment Variables

In order to make it easier for self-hosters to configure the setup for their needs the following parts of the back-end app need to be configurable via Environment Variables:

  • Appwrite URL
  • PostHog URL (or if not set this disables analytics)
  • Sentry/GlitchTip URL (or if not set this disables observability)

Write docker-compose.yml for running app

Create a docker-compose.yml file for running the app locally.

It should deploy

  • Appwrite
  • Back-end app
    • With means to provide URL for Appwrite
    • With means to provide URL for Posthog or turn off Analytics
    • With means to provide URL for Sentry / GlitchTip or turn off Observability
  • Front-end app
    • With means to provide URL for Back-end
    • With means to provide URL for Posthog or turn off Analytics
    • With means to provide URL for Sentry/GlitchTip or turn off Observability

And have option to deploy

  • Posthog
  • GlitchTip

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.