Git Product home page Git Product logo

todo's Introduction

Woah, fancy seeing you here! ๐Ÿ‘‹

๐Ÿ”ญ Iโ€™m currently working on a few things, most notably:

URL Shortener
A not-so-basic URL shortener using SvelteKit on the Frontend, Rust and Rocket for the API, Postgres and then NGINX to reverse-proxy them all together

Chouten
A multi-media consumption app created using an in-house cross-compatible extension format.


๐Ÿ My Projects

Was I really supposed to list them here?
They're literally one click away..
I guess I can list a few

URL Shortener (WIP)

  • A url shortener leveraging the power of Rust for the backend api, postgres and SvelteKit to join it all together - with a sprinkle of NGINX and Docker for easy deployment of the application reverse-proxied to provide a seamless experience for the user.
  • The functionality has all been added - I am now using Motion One along with the Web Animation API to create flawless animations to "liven" up the page.
    Find the project here

Stackz

  • A shunting-yard compiler for a stack-based language. Compiles for ARM64 assembly. Find it here

My Blog

  • A blog page made using Gatsby & GraphQL. The old deployment is no longer available and due to breaking changes in the Gatsby API along with other dependencies, no longer works. However, you can find screenshots of how it looked before being shutdown on the repo here (repo)

XO Online

Todo

  • A persistent Todo CLI made in Rust. Find it here

Neovim Config

  • Not so much a project, but still something I've put a lot of my time into. Find it here

todo's People

Contributors

tobybridle avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

goshawk22

todo's Issues

Add support for Undoing Edits

Undo at the moment does not undo recent edits.

This functionality could be added by using a Map with the key value as the type of undo that needs to be performed (e.g DELETE, EDIT). Then, depending on this value, the undo function could perform the necessary action.

Printing Todos Bug

When the amount of todo's outgrows the amount of available rows in the terminal, they begin to be printed horizontally. I am not sure whether or not this is an issue that other TUI libraries implement and ncurses doesn't however I will look into it in the future.
The approach that I am currently thinking of rendering the todos beginning at the position of the cursor until the max amount of rows. This would prevent unnecessary todo's from being rendered and would fix the horizontal bug.

Image for reference:

image

Undo into the same position

Currently, undone TODOs are placed at the end of the list. It'd be good if the todo was inserted into
it's previous position when done.

Add Todo Completion Date

Add an option to add a date to the specific todo. When the todo is next opened, dates that have passed or are near will have highlights in the signal bar (left most column).

Add todo movement

Allow the user to move the todos by entering a modification mode (maybe pressing v or something?)
Once this mode has been toggled, the usual keys for navigation will move the todo rather than the navigation

Add Nested Todos

Add nested todos which can be entered and exited via the spacebar.

UI undecided on, current ideas are as follows:

  • Spacebar clears the screen of everything other than what is in the nested todo (like the filters)
  • Spacebar opens a "fold" which has indented todos inside

Full path needed for TODO_FILE_LOCATION

For example, when TODO_FILE_LOCATION is set to ~/.config/todo/todo.txt, it fails when creating a todo with
thread 'main' panicked at 'Could not write to file!: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/main.rs:151:42
When TODO_FILE_LOCATION is set to /home/adam/.config/todo/todo.txt, creating a todo works.

It might also make sense to have a default value for the file location, probably in ~/.config/todo/ or ~/.local/share/ , that is used if TODO_FILE_LOCATION is not set.

Add Editing for Todos

Todos should have the ability to be edited. This can be made to work using the dialoguer module's default text option for the Input.

Example for what the contents may look like:

let editedContent: String = Input::new()
        .allow_empty(true)
        .default(todo.content)
        .interact_text()
        .unwrap();

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.