C cli app devlog


Todo

Progress: 🟒🟑🟑🟑⚫⚫⚫⚫⚫⚫

Progress is purely based on my own up in the air guess.

This is an app with a bunch of different features, which I’m working on. The main purpose of this project is to learn more about C, and to learn more about how to create a program with a bunch of different features.


πŸ“š Table of contents


πŸ—ΊοΈ Main menu

PROGRESS: 🟒🟒🟒🟒🟒🟑🟑⚫⚫⚫

Bugs

Features

  • Defensive programming: Validate user input etc.

Done

  • βœ… ANSI formatting
  • βœ… Add a way to exit the program
  • βœ… Add a way to go to the notes app
  • βœ… Add a way to go to the explorer
  • βœ… Add a way to go to the AI assistant
  • βœ… Add a way to go to the chat

πŸ“ NOTES APP

PROGRESS: 🟒🟒🟑🟑⚫⚫⚫⚫⚫⚫

TODO

  • βŒ› Add linked list capabilities - [in progress!]
    • βŒ› Insert node
    • Delete node
    • Search node

Bugs

  • [FIXED] When adding title to a note, the written characters is not printed to the screen
  • [Β ] Newline character after title due to fgets adding a newline (fix with title[strlen(title)-1] = '\0';)
  • When adding a note, the program goes back to the main menu, but the layout is not cleared correctly

Features

  • βŒ› Add a way to view notes - [in progress!]

  • Defensive programming: Validate user input and handle errors

  • Add metadata to notes (date, time, etc)

  • Add a way to delete notes

  • Add a way to edit notes

  • Add a way to search for notes

πŸ” Encryption

NOTE

Stack:

  • Β AES-256
  • Β bcrypt2

TODO: Encryption

  • Add encryption to notes (AES-256, brypt2)

    • Β Add struct for user defined data:
      • Β Username
      • Β Password
      • Β Salt
      • Β Key
      • Β IV
    • Β Add function to generate salt
  • Add decryption to notes (AES-256, brypt2)

    • Β Add function to decrypt notes
  • Add function to hash password with bcrypt2

  • Add function to check password with bcrypt2

Overview

AES-256 will be used to encrypt the notes, and bcrypt2 will be used to hash the AES key. Furthermore, the user will be able to define a password, which will be used to generate a key and IV for AES-256. This will be stored in a struct, which will be used to encrypt and decrypt the notes. The password will be hashed with bcrypt2, and the hash will be stored in the struct.

Because why make it easy for yourself, right?

bcrypt2

NOTE bcrypt2 is a password hashing function based on the Blowfish cipher. It is designed to be computationally expensive to prevent brute-force attacks. It is also designed to be easy to implement in software and hardware.

  • Β Add bcrypt2 to hash the AES key

AES-256

NOTE AES-256 is considered a strong encryption algorithm, and is used in many applications. It is a symmetric encryption algorithm, which means that the same key is used to encrypt and decrypt the data. Furthermore it’s considered to be quantum resistant.

Done

  • βœ… Add a way to add a note - success
  • βœ… Program loop success, goes back to main menu after entering a note with title
  • βœ… Add a way to add note title - success

πŸ”­ Explorer

PROGRESS: 🟑🟑⚫⚫⚫⚫⚫⚫⚫⚫

The explorer is just a simple file explorer, which will be used to navigate the filesystem.

Reason for creating it is to learn more about reading and displaying file data in C.

TODO

Features

Done


πŸ€– AI Assistant

PROGRESS: ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫

TODO

  • Hook up the API
  • Β Parse response
  • Parse the input

πŸ’¬ Chat

PROGRESS: 🟑🟑🟑🟑⚫⚫⚫⚫⚫⚫

The chat is a simple chat application, which will be used to communicate with other users, locally for now. Some PGP is in place.

TODO

Features

Done