Sharesyllabus.me’s Immaculate Conception

The idea of sharesyllabus.me first came to me in my sophomore year. College Success Club was doing so-so, so my club members and I were trying to figure out a way to claim significance in our school. We decided we were going to do so by fixing one of the biggest flaws in university course picking: Rate My Professor.

Rate My Professor was, in general, a not-so-great indicator of a professor’s teaching ability. I’ve taken many 1-star and New professors, and I haven’t been disappointed in any of them. Meanwhile, I’ve taken many 4 and 5-star professors, and I’ve been terribly disappointed.

Also, Rate My Professor did not really prepare you for what to expect in a class. A good example of this was when I decided to take General Chemistry 1 in the summer. The constant lab hours were something that Rate My Professor ever informed me about; I still found it fun, but to some, it may be tiring. Another example of this is my ENG-1BH class, which I took in the spring. I wasnt expecting there to be such an emphasis on upper-undergrad literary criticisms and narratology based on Rate My Professor. Rate My Professor seemed to lack information about the contents of a class.

These 2 flaws I summarize their causes in three points:

  • Rate My Professor has an unnatural focus towards describing classes purely based on Professors, when curricula and course-load aren’t really their decision.
  • Rate My Professor is probably loaded with people who hate their professor.
    • I would assume this because I personally only think about rating professors who are poor at teaching.
  • Rate My Professor has nothing pertaining to the class!
    • I think this is the most important one, because the whole point of Rate My Professor is deciding whether or not you will take the class

As I was looking for ways to regain my club’s prominence in my high school. I decided that creating a social platform for sharing and learning about classes to compete with Rate My Professor was a good and virtuous goal.

I was looking for things to call this project so I could obtain a domain for it when it struck me, the quintessential part of a class: the syllabus. Because the platform is about social sharing, I decided to dub the project sharesyllabus, and add a .me for the GitHub Education free domain benefits.

Sharesyllabus.me thus was conceived, and it was nothing but immaculate. My GitHub commit history will show that I did most of the project, but people in my Club contributed significantly.

For sharesyllabus.me, the club could only offer the best presents from our time: Bun, Vite, and Prisma. Bun was a rising star in 2025 and was clearly eclipsing NPM or yarn for building a web project. Vite was just, well, vite: I had no server at that time, so it would statically generate the website to run on GitHub Pages. Prisma is clearly the brightest of these gifts; it was the first ORM that really made sense to use in a TypeScript project.

Using these 3 gifts, I wove the fate of sharesyllabus.me, with the strings of Typescript, and an accidental dash of Express.JS (which would curse sharesyllabus.me)

I designed the Prisma schema to store the organized data of schools, professors, and syllabi all in a tight web. Pilgrims who surfed our site would upload syllabi of their classes so that others would see the true contents of a class. And I recruited people to manage the moderator dashboard and remove deceitful syllabi. ExpressJS comprised the backend, which ran on REST and made a speedy search feature.

I made an event with my College Success Club to bribe people with Goldfish to upload their syllabi onto our website. It was unsuccessful; maybe 10 or 15 people uploaded their syllabi, and the class list was homogeneous and not extensive.

The extra dash of ExpressJS really did poison the project. Slowly and slowly, as new features were added, ExpressJS caused the thin fabric of sharesyllabus.me to crack further. GitHub Copilot could no longer fix the issues, and nothing made sense.

I was implementing a feature that would give quick data about the syllabi uploaded to the website, when the ExpressJS backend made it a pain to implement.

Additionally, we had to design new methods to collect syllabi that would be more practical. We tried the Canvas API, but it did not work and violated the Terms of Service. We tried to scrape it from the California Community College’s database, but their syllabi were “shells” for some reason and devoid of anything useful. And because all of these features required Java or Python to be done programmatically, this made interop with ExpressJS complicated and weird. I tried gRPC for communication, but it quickly became too complicated to handle.

Because of all of these hindrances, and my rising course difficulties, sharesyllabus.me lay rotting in my GitHub, which I then transferred last month into my Gitea to show RSI about my project.

So what could be demonstrated by looking at the grave of sharesyllabus.me (its git repository)? A couple of things: learned lessons, as well as defining characteristics of me:

  • Decoupled architecture for projects is just waiting for things to fail
  • NextJS wasn’t that big of an issue to use; Vercel is not Satan
    • If I had succumbed to the easy development experience of NextJS, and deploying to Vercel, then I would have had a longer lasting project
      • Also, Vercel can be replaced by Coolify or Github Pages, and NextJS is just something you can self-host
  • That I know how to code in Typescript, and React
    • But of course, I had many things to learn from this experience, and I still currently fall short of calling myself an “expert.”
  • That I know how to code, which is quite important since nowadays it is hard to tell between pure-vibecoders and people like me who were able to code before the advent of Claude Opus 4.