I'm attempting to create my own Productivity application to eventually replace Todoist in my workflow (keyword eventually).
ClearHeadTodo (please tell me if you are unable to access the repository).
I'm proud of the current implementation. My goals were to make something that is:
- clean, I want others to be able to easily see the implementation and build on it should they wish
- Stable/Tested: I have gone to great lengths to ensure every edge case is tested and that the entire program is bug-free (and from my view i've done that so far)
- Fast: The reason i'm using rust for this project is that I want it to scale going into the future. I want a power user to be able to create/edit 1000's of tasks/stories without a hiccup going into the future
Currently, the application is built in an object-oriented fashion, utilizing a "task_list" struct which contains "task" structs.
I'm using clap to give this a command-line front-end for now, but I intend for this basic layer to be able to take many forms in the future (web app, mobile app, etc...)
As i begin to scale the project, i'm sitting at what I see as the final point-of-no-return between implementing the application in an object-oriented way, or converting to a more functional paradigm where I simply pass around a vector filled with hash arrays that represent tasks.
One could easily imagine a refactor where we simply create a NEW vector with slight variations whenever I edit, create, or delete a given task.
Have I been listening to too much Rich Hickey? Should I continue using structs as I have? or would a transition to functional programming (aka, almost no structs and pure functions) increase interoperability, reduce complexity, and make a more testable product?
OR should I continue down the path I've created for myself and start the process of creating story structs which own a vector of task structs?
I know this is a super open-ended question, but I wanted to get the community's perspective since I'm in this project for the long-haul, and want to ensure i'm building the best product I can for the long-run.
Thank you in advance to anyone who takes the time to look at the repo and give their perspective.
If there is any problems with repo access please feel free to DM me and I will ensure you have access quickly.