Docted
What it does
Docted is a project utility that can help you find documentation, take notes, and record logs at the command line.
It is able to be initialized in any folder, and will keep notes, logs in that folder. It will also track the language that it is given and is able to find documentation for that language.
You are also able to launch a web interface that is can be used to manage notes instead of the CLI interface
How I built it
Docted is build in rust using many different frameworks for each individual section. Docted data management is done in the file system using TOML Docted's cli is built in Rust using the Clap CLI framework. Docted's web note interface is built using actix web, askama templating engine, and tailwindcss.
Challenges I ran into
One of the main challenges that I ran into is making the project be selective on when to be asynchronous, since note taking and logging in the CLI does not need to be async, when the server and doc tools do. This required a decent bit of learning the nuance of how rust does async, and how it differs from other languages with async like JavaScript. Another Challenge that came up was how to store all of the data in a way that is easy to extend and parse. This required a better understanding of the serde crate and learning how to effectively use TOML.
Accomplishments that I'm proud of:
I am proud to have made a program in rust that is able to take on many unique tasks from the same tool.
What I learned
- The syntax of TOML
- Serde parsing.
- Askama templates.
- Making more complicated clap commands and subcommands
What's next for Docted
One of the features that I would love to add in the future would be configuration of the program. I would known languages, global note locations, and most importantly, pretty print colors to be configurable through a scripting language or something like TOML. For me, I prefer really terse printout at the command line, but I would want there to be options for more verbose printout to make it clear what the program is doing during creation, note management, and logging
I would also want to have a global system, where some of the tools are not bound to a project, but are apart of the whole system, so note and logs can be used between project
Built With
- actix
- askama
- clap
- rust
- tailwindcss
Log in or sign up for Devpost to join the conversation.