diff --git a/.gitignore b/.gitignore index 1a9aabe..7afec89 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .venv -.idea \ No newline at end of file +.idea + +todo.md \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4c61428 --- /dev/null +++ b/LICENSE @@ -0,0 +1,14 @@ +Copyright © 2025 Andrew Luchuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the “Software”), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Pipfile b/Pipfile index 9e5d736..72f7fa6 100644 --- a/Pipfile +++ b/Pipfile @@ -9,6 +9,7 @@ base64-random = "*" [dev-packages] textual-dev = "*" +build = "*" [requires] python_version = "3.14" diff --git a/Pipfile.lock b/Pipfile.lock index 7cad8cb..5a588ab 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "76b3c5ba1c975631c27d000c8a76d6d0e7ec7426d645be513e69cd5990cab1d1" + "sha256": "90c0299ee3c52cff9d11bb4e4b38b154f4ef430ee5110b4213ef2d7c7ff1d108" }, "pipfile-spec": 6, "requires": { @@ -268,6 +268,15 @@ "markers": "python_version >= '3.9'", "version": "==25.4.0" }, + "build": { + "hashes": [ + "sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397", + "sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==1.3.0" + }, "click": { "hashes": [ "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", @@ -778,6 +787,14 @@ "markers": "python_version >= '3.9'", "version": "==6.7.0" }, + "packaging": { + "hashes": [ + "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", + "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" + ], + "markers": "python_version >= '3.8'", + "version": "==25.0" + }, "platformdirs": { "hashes": [ "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", @@ -922,6 +939,14 @@ "markers": "python_version >= '3.8'", "version": "==2.19.2" }, + "pyproject-hooks": { + "hashes": [ + "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", + "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913" + ], + "markers": "python_version >= '3.7'", + "version": "==1.2.0" + }, "rich": { "hashes": [ "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", diff --git a/codupoc/__init__.py b/codupoc/__init__.py index e69de29..45847e3 100644 --- a/codupoc/__init__.py +++ b/codupoc/__init__.py @@ -0,0 +1 @@ +from codupoc.codupoc import main \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..1f6062e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,26 @@ +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" + +[project] +name = "codupoc" +version = "1.0.0" +authors = [ + { name="Andrew Luchuk", email="andrew.luchuk@outlook.com" } +] +description = "A TUI for managing todo items in Markdown format" +readme = "readme.md" +license = {file = "LICENSE"} +keywords = ["tui", "markdown", "todo"] +classifiers = [ + "License :: OSI Approved :: MIT License", + "Environment :: Console", + "Topic :: Utilities" +] + +[project.urls] +Homepage = "https://git.luchuktech.space/Andrew/codupoc" +Repository = "https://git.luchuktech.space/Andrew/codupoc" + +[project.scripts] +codupoc = "codupoc:main" diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..027ed1a --- /dev/null +++ b/readme.md @@ -0,0 +1,23 @@ +# Codupoc +Codupoc is a proof of Concept for a TUI application called Codu. Codu will be a TUI-based application for managing todo +items in Markdown format. + +## How it works + +When you run Codupoc in a directory, it will look for a file called `todo.md` in that directory. If it does not find one, +you will be presented with an empty todo list. If Codupoc does find `todo.md` in the current directory, it will read +all Markdown checkboxes as Todo items. Here's an example: + +```md +- [ ] An Incomplete Task +- [X] A Complete Task +``` + +Each line that matches this format will be read as a todo item. When an item is checked in Codupoc, the file will +automatically be updated to reflect the change. + +You can add new todos by pressing `n` and typing the task description. + +Codupoc is intended to be an extremely minimalistic Proof of Concept. The final version is planned to be written in Rust +and is planned to have significantly more robust error-handling. I may eventually add a calendar feature which allows +you to focus on tasks for specific days. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ba86b94 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,30 @@ +aiohappyeyeballs==2.6.1 +aiohttp==3.13.2 +aiohttp-jinja2==1.6 +aiosignal==1.4.0 +attrs==25.4.0 +base64_random==1.0.0 +build==1.3.0 +click==8.3.1 +frozenlist==1.8.0 +idna==3.11 +Jinja2==3.1.6 +linkify-it-py==2.0.3 +markdown-it-py==4.0.0 +MarkupSafe==3.0.3 +mdit-py-plugins==0.5.0 +mdurl==0.1.2 +msgpack==1.1.2 +multidict==6.7.0 +packaging==25.0 +platformdirs==4.5.0 +propcache==0.4.1 +Pygments==2.19.2 +pyproject_hooks==1.2.0 +rich==14.2.0 +textual==6.6.0 +textual-dev==1.8.0 +textual-serve==1.1.3 +typing_extensions==4.15.0 +uc-micro-py==1.0.3 +yarl==1.22.0