A news feed for google classroom posts

I’ve always been a minimalist. I don’t like running apps like gmail or classroom in the background that can constantly nag(“notify”) me. I prefer to check notifications on my on time.

While its possible to check classroom posts on gmail but the experience is a bit clunky. And most of the time I need to go the classroom website anyway to check full details.

So, I created classroom-feed to address the need of being up to date with the latest classroom posts.

You sign in with your google account and a list of latest classroom posts will be displayed sorted by their last updated time. If there are news posts since you last visited the app then there will be a message indicating that. The following image sums up the features of this app.

/classroom-news-feed/images/page-shot.webp

If there was any attached material or any link that was plain text, those will be extracted from the post and shown below the post. Some teachers don’t bother to insert a proper hyperlink so it was a requirement of mine.

I didn’t bother to implement infinite scrolling as my need was to check only the latest 3-5 posts. But having that would make it a proper news feed. One other reason I didn’t do it is because I want to hit the classroom api as less as possible.

Now here’s something that I really wanna improve. Currently the app embraces the (n+1) problem instead of solving it. The courses list is fetched then all the courses are fetched one by one. I did it this way because the classroom api only has endpoint that fetches posts from one particular course but not from every course at once. And I don’t want to be kept waiting until everything loads.

The improvement I want is to not call fetch n times on the client but call fetch only one time and the server will stream the posts one by one. I haven’t yet figured out how to do it in SvelteKit. Would be glad if someone helped me with this or throw any suggestions.


Note: I have decided to rate limit the app to prevent abuse.

If you find this project useful, star it on github and any contributions are welcome.