colinfwren / atomic-todo Goto Github PK
View Code? Open in Web Editor NEWTrack your TODOs across days, weeks and months
License: MIT License
Track your TODOs across days, weeks and months
License: MIT License
Set up a CI pipeline that will build and publish Docker images of the back-end and front-end apps so these can be pulled down as part of the Docker Compose
#6 will update the GraphQL schema to remove the lists
array from the TodoBoardResult
as those TodoList
objects will be returned as part TodoBoard
now.
The front-end code that fetches the TodoBoard
and renders the TodoList
s will need to be updated to reflect this schema change.
In order to make testing easier create a small container that when run will create the schema and test data for the app in the configured Appwrite instance.
Set up CI pipeline to run the front-end tests:
If the tests fail this should prevent PRs from being merged or main
branch being deployed.
In order for a board to associated with a user the user needs to be able to log into their account
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:
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 Todo
s within a period of time.
The following changes need to be made:
parentList
from TodoList
childLists
from TodoList
level
to granularity
endDate
field to TodoList
days
on TodoBoard
to be an array of TodoList
weeks
on TodoBoard
to be an array of TodoList
months
on TodoBoard
to be an array of TodoList
lists
from TodoBoardResult
as these will be rendered as part of the TodoBoard
object directly nowstartDate
on TodoBoard
to activePeriodStartDate
to better reflect the fact this date relates to the active period shownIn 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
Right now there's no authentication or user model. In order for Atomic Todo to be used as a service there needs to be a means for boards and todos to be linked to an account
Set up CI pipeline to run the back-end tests:
If the tests fail this should prevent PRs from being merged or main
branch being deployed.
Following discovery into how to best model the data for the app (https://medium.com/@colinwren/atomic-todo-discovery-modelling-dates-e5d062b6f4dc) the schema in Appwrite needs to be refactored:
TodoList
is no longer needed as these will be dynamically modelled as part of the query to get the TodoBoard
TodoBoard
no longer needs to define the TodoList
s displayed in it as these will now be dynamicUsing Playwright create a set of end to end tests to check the following user flows:
TodoBoard
TodoBoard
TodoBoard
Todo
Todo
Todo
Todo
from day
granularity TodoList
to week
granularity TodoList
Todoboard
active period forward a monthTodoBoard
active period back a monthIn order to link a board to an account a user needs to be able to create an account in the system.
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 small suite of tests to spin up Appwrite, populate it with data and perform the following user flows via the API:
TodoBoard
Todo
Todo
Todo
Todo
Todo
from day
granularity list to week
granularity listTodoBoard
forward a monthTodoBoard
back a monthWill 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
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:
Create a docker-compose.yml
file for running the app locally.
It should deploy
And have option to deploy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.