Inspiration

The Ebbinghaus forgetting curve shows we quickly lose most new information if we don't review it. We forget the most stuff the fastest right after learning. Ebbinghaus’ findings showed that the biggest memory loss happens soon after learning, but the rate of forgetting gets slower as time goes on because the memories that stick around become more stable in our brains.

Inspired by Ebbinghaus's forgetting curve, our solution strategically fights memory decay through increasing intervals of active recall and feedback, turning the natural decline into lasting retention and memory stability.

What it does

EchoHaus allows users to create their own accounts and stores their uploaded notes in a MongoDB database. Users can then experience and experiment with the study method of waiting, recalling, and repeating the previous steps. A unique graph is generated for each note, displaying the ‘forgetting curve’ associated with that note.

How we built it

We used React.js with JavaScript and CSS for the frontend, and built the backend using Express.js and Node.js, connecting to a MongoDB database through a RESTful API. We also used Figma to design wireframes for the website, Google Docs to document our resources, and GitHub for version control.

We split up the tasks into frontend and backend, where one person handled all of the frontend components and styling and the other person managed the database and created all of the backend endpoints. On GitHub, we would work in branches, open pull requests for review, and merge branches into the main branch while making sure to clean up our old branches.

For deployment, we deployed the frontend and backend on Render and connected it to a GoDaddy domain.

Challenges we ran into

To keep our repository and code organized, we decided to create a new file for each component and its styling. However, the styles from each file began to override each other even though they were imported in different places. We ended up fixing it by changing the way we imported the stylesheets into our components.

For the feedback feature of our website, our implementation required us to fetch from the database at least 3 times whilst updating state variables, then passing them into another API call to Gemini. We had a lot of trouble making sure that all of the state variables were updated before being passed into the last API call, but we eventually resolved it by consulting the Gemini chat bot.

Something else that troubled us was that there was an issue where our systems required different bcrypt packages, so every time we pulled from the main branch and ran the server, we had to re-install bcrypt.

Accomplishments that we're proud of

We're proud of a few key accomplishments from this effort. Successfully getting the Gemini AI API to work for the first time was a significant step forward for us. It's also deeply satisfying that we brought to life an idea aimed at encouraging healthier study habits and supporting long-term memory retention. Building the entire full-stack web application in just two days with a team of two, while also ensuring we maintained clean code and effective version control, showcases our collaborative efficiency and technical skills. Overall, we're proud of the rapid progress and the potential impact of this project.

What we learned

From this, we learned several key things. We successfully figured out how to use the Gemini AI API, adding a valuable tool to our skillset. We also maintained clean code practices and utilized version control effectively throughout the process, which is crucial for organized development. Finally, this experience underscored the importance of effective time allocation, allowing us to manage tasks efficiently.

What's next for EchoHaus

Currently, Gemini gives the user their accuracy ratings and then our program plots these accuracies. These graphs are difficult to interpret and since the intermission time is up to the user’s discretion, it may be challenging for them to decide how to tweak the time to support their learning. We’d like for EchoHaus to be able to analyze the user’s graphs and suggest times for users instead to facilitate an improved learning experience.

To create a more personalized experience and better support notes with definitions, we plan to use Gemini to generate flashcard sets from users' notes, making it easier to study large amounts of material while also reinforcing memory through active recall.

Share this project:

Updates