
My main reason for building Scholarly was simply to push my boundaries. Up until that point, my portfolio consisted of fairly standard Computer Science projects like a weather website or a grocery tracker. They were great for learning the basics, but they were ultimately just ways to stack my resume. I had never built a complete application meant for other people to actually use.
The inspiration for Scholarly came from my learning journey. I wanted to learn how to learn better (weird phrase I know), and a friend highly recommended an app called Anki to retain long term information through spaced repetition. I had never used flashcards before, and while the science behind spaced repetition is incredibly effective, I honestly found Anki's UI to be a bit unappealing. I figured I might as well try to build my own flashcard app that combines the proven retention of spaced repetition with a clean, modern user experience.
Since my primary goal was to challenge myself, I decided to dive into an entirely new tech stack. For the frontend, I went with React and Tailwind CSS. On the backend, I set up an API using Node.js, Express, and MySQL. I tied it all together using TypeScript and containerized the whole application with Docker.
I had dabbled with React, Node, and MySQL in the past, but putting them all together in a typed and containerized architecture was completely new to me. Honestly, it took a lot of effort just to get the first few pages of the application working. Since I was relatively new to creating good UI, I decided to integrate ShadCN to help maintain a consistent design throughout the website without having to build every component from scratch.
My ultimate vision was to host Scholarly and make it completely free for learners to use. I wanted to put my AWS Cloud Practitioner knowledge to the test to figure out how to do so.
It ended up taking much longer than expected while dealing with networking and access management issues. Eventually, I was able to host the application on an AWS EC2 instance with multiple Docker containers using Docker Compose. However, I soon realized that the EC2 instance kept crashing. When I looked more into it, I found out that the multi-container setup was taking up too much memory and crashing the server even though the instance itself was still running.
Rather than paying for a larger server just to keep it afloat, I decided to pivot. I set it up so that anyone can pull the repository and spin it up locally using Docker Compose, but I chose not to keep it hosted on a dedicated EC2 instance.
Looking back, the process took a lot of perseverance, but it was an incredible way to bridge the gap between building small resume projects and developing real software. It was a lot of mistakes and a lot of learning. If you're interested, try Scholarly for yourself and let me know what you think of it!
Signing off,
Aryaman