Over the past few weeks, I had surprisingly been in a drought on project ideas. Although there was a plenitude of things I could make, nothing really seemed to interest me. I wanted to practice my data structures and their applications, and hence, I was primarily looking for project ideas that depended heavily on data structures. However, I could not really find one as many of the projects I had found were ones I had already done. I spent over 2 days constantly researching possible project ideas, but then, I came across a project that created a private server for each user every time they logged into the program. Although that program was more about private servers and keeping personal data more “private”, it sparked an idea in my mind to create a personal word editor.
Why the word editor you may ask? At the time, as I was researching various project ideas, I was also finishing up one of my school assignments, where I had google docs open on another tab. When I saw the original project idea of private servers, I then looked at the google docs tab unconsciously, which then sparked the idea of private word editors into my mind!
After 3 days of planning and constant programming, I had come up with a private word editor for every user called Leaf!
Leaf is a python-based private word editor for every user that logs into the program. You might be wondering how Leaf sounds familiar to other word editors like Google Docs or Microsoft Word, so what makes Leaf possibly “the next big thing”?
What’s unique about Leaf is that it is not a web application or an application at all. Instead, Leaf is a word editor that is based in the user’s terminal! The user can create, edit, save, and delete .txt files right from their command line, which makes users less dependent on internet connection when editing documents (which can be converted into .txt). But just because Leaf is a terminal-based word editor, that does not mean it’s “fully private” just yet. Anyone can take the user’s computer and access the terminal because the terminal does not really have a formal password. However, that’s why I have included a user-login function in the program. Just like Google Docs and Microsoft Word, users will have to create an account to log into their own personal document database. Furthermore, each user account created has its own separate database, allowing each user to save and edit unique files in the terminal, making it relatively simple for family usage as well.
Leaf was made primarily using Linked Lists. The database is a Linked List itself personal to every user. Each Linked List is essentially a list of documents the user creates, which is why users have the ability to delete and jump to any file they have created. In terms of creating, saving, deleting, and editing the file itself, those functions were made using basic Python in-built functions. The user log-in function is also made using lists and creates a personal linked list for every account created. Last but not least, both the Datetime and OS module were used for formatting reasons. Datetime will print the current date and time every time the user accesses the “homepage” with
/home , and the OS module was used to clear the terminal when the user wants to leave the current document they are currently in.
Here is the link to my project: https://github.com/GEEGABYTE1
In the end, what I have realized from this project is that you do not need to search up project ideas to make a good project. You just need a little inspiration and some determination to create a unique project that may even become your best one. For example, in terms of my word editor, the idea of having a terminal-based word editor is something that I had never thought about; and even if I did, I would have never thought it would be possible to create such a program for the terminal. However, by finding a little inspiration and being determined to create something innovative with the command line as a project, I had created one of my best projects I had ever created only using basic Python and Computer Science concepts. Moreover, this project can potentially even be the start of a new concept of making various basic applications integrated within the system to make the computer even more user-friendly… Who knows? However, all that I know is that when you want to create a project, do not force yourself to create something that has already been made, although it may seem impossible at times, push yourself to think outside of the box because when you do, you will end up creating something beyond your expectations!