Essay Editor Pro


We are computing majors so we don't how to write formal English. We came up with the idea to create a language processor to clean up our writing, creating formal and grammatically correct paragraphs.

What it does

Reads each paragraph and uses the python language tool to fix any grammatical errors it finds and then corrects them. It also counts how many times each non stopword is used in a paragraph, allowing us to inform the writer if a word is deemed to be overused. In doing all of this, we search sentences for Wikipedia articles that correspond with key words in the sentence and send the writer a link to that article.

How we built it

We used NodeJs for the frontend, leveraging the pre-existing architecture of NextJs. NextJs also has built in Server Side Rendering and and API server which was used to authenticate the users along with MongoDb. We used Github's and Facebook's OAuth, alongside "magic link" emails for passwordless authentication. The editor itself was built using DraftJS which allowed us to add the basic rich text features that are commonly used to write essays. Finally the UI was built using Ant Design Components and ReactJS which allowed us to mockup and customize the UI quickly, providing us with the much needed time to focus on the backend.

Python was used for the backend, where it receives the text body from the frontend and parses the data into a usable format. The paragraphs are then split into sentences and those sentences are fixed using python language tool. After we fix the grammatical errors we send the new sentence into a word counter that ignores stopwords and then returns a dictionary allowing the program to see overused words. The new string is also passed into a function that returns Wikipedia articles relating to that sentence and says what type of voice the sentence is in i.e. active or passive. After all of this is done the data is formatted into an array and passed back to the frontend.

Challenges we ran into

We originally wanted to create a side by side comparison of the original text and the revised text while also changing the colour of text for the sentences that were changed. However, we quickly realized in order to accomplish this goal in such a short time frame the data would have to be optimized to its fullest potential. This was especially challenging as none of us have ever created a Python API meant to be called by JavaScript. We ran into a problem with architecture, and we took advantage of docker containers to help connect the different components into one working website. Using docker containers also enables future scalability for the project.

Accomplishments that we're proud of

We are proud that we were able to complete the project in just over a day with majority of the functionality we were aiming for being complete and functional. We are also proud that the entire project is configurable and deployable using 3 files to store environment variables such as API keys.

What we learned

We learned how to pass data between different languages, even though it took us a long time. We also learned how to think about architectures in larger scales beyond the scope of just having a single application, due to the architecture being used in Python, JavaScript, and MongoDB

What's next for Essay Editor Pro

We would like to revisit the side by side comparison at a later point. Also, using MongoDB allows us to store user documents, so we would like to implement this in our project and create stored files for each user that they can come back to when needed.

Share this project: