eos
Eos is a starterpage that combines the things I use the most when I launch a new tab with extra functionality including notetaking, RSS feed aggregation, spotify tracking stats and more.
Description
Eos is a starterpage that combines the things I use the most when I launch a new tab with extra functionality including notetaking, RSS feed aggregation, spotify tracking stats and more. The project was inspired by ricing communities like r/startpages andr/unixporn as well as other ricing communities. I wanted to create a page that both looked good and was functional. The main goal of the project was to create a page that I would use everyday and it has become just that. I wanted it to be pretty customizable so I created a settings section that allows you to change how it looks. From changing the color scheme, saving and loading themes, to changing the background image. You can also select what tabs to show on the upper-right modal which include bookmarks, notes, spotify, and an episode tracker. In addition to that you can add RSS feeds to the page and it will display the latest articles from those feeds, modify the bookmarks, connect to the spotify API, select a time frame for the stats and show a currently playing song. Finally you can change the bottom right modal to either show a static image, the NASA image of the day nothing at all. The notes are saved as Markdown files in the database and can be edited and deleted from the app, showing a preview of the markdown as you type. The project is technically live and hosted on eos.aornum.xyz but it's not really meant to be used by anyone else. It's more of a personal project that I use everyday. So it is behind a login screen and you can't create an account. I might change that in the future but for now it's just for me.
Technologies
The project is built using Svelte and technically uses Sveltekit but since it's a single page app it
doesn't really use any of the features of it's Sveltekit. The backend is built using Node.js, Express and
Typescript. I used Sqlite as the database since it's a small project and I didn't need anything more.
Things Learned
This was my first project using Svelte and I really enjoyed it. I had used React and Angular before
but I found Svelte to be much more intuitive and easy to use. I also learned a lot about how to
connect to different APIs and how to use them in my project.
It was my first time deploying a project to a server which I did on Linode. Doing it in a IaaS provider
meant I had to do everything myself which was a great learning experience. I had to setup the server and
the reverse proxy for the domain.
I also had to solve problems like page loads being slow with high resolution images. I solved this by
creating a script that would resize the images to a smaller size and then serve those instead of the
original images on initial load and loaded the original images in the background.
Things I Would Do Differently
I would probably do the RSS feed aggregation differently. I call all the feeds in parallel and then
sort them by date. This works well on a small scale but as more feeds are added it will take longer,
a would solution for this would include a database and a backend that would call the feeds every so oftern
and stores them in the database/cache. Then the frontend would just call the backend and get the data from
there.