I’m about halfway through the Data Science curriculum but noticed there wasn’t an easy way to share my data science notebooks with employers. So I created a platform called HostJupyter (https://hostjupyter.com/) which does exactly that.
Hey Isaac, Congrats! It looks amazing.
I know it’s a little off-topic but can you tell me your ideation process and how you made the website? and what all things should I know to start such a project. :))
In terms of ideation, I took inspiration from a site called Gitbook (https://www.gitbook.com/). They make it really simple to publish documentation, so I decided to apply similar concepts to the idea of publishing notebooks. I also used Dribble to get an idea of the different ways I could layout the application (I spent a considerable amount of time looking up different ways to design the sidebar for example). It also helps that I previously worked as a designer.
I’m not sure about how much experience you have with web development (I also worked as a software developer before transitioning to data science), but I used the following tech stack:
TypeScript and NextJS for building the website, webapp and published sites.
NodeJS and Vercel serverless functions for all the server side logic (like allowing you to create custom domains and securely start a susbcription).
Firebase’s firestore and cloud storage for persisting data longer term.
Focusing on the publishing piece, the general concept to remember is that you need to get the .ipynb notebook file in a format that can be rendered on a web page. There’s libraries for doing this such as nbconvert (https://nbconvert.readthedocs.io/en/latest/). I decided to convert the .ipynb file to HTML, but then from HTML to dom nodes (https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction) because it made it a lot easier to build out things such as the Table of Contents and search engine for the site (which requires you to recursively traverse the heading tags) etc.
Honestly, there’s quite a bit involved. Maybe at some point I’ll write a tutorial to build a miniature version, though it took me a total of 8 weeks and there’s still quite a bit I’d like to add!
Hope this helps, let me know if you have any specific follow-ups
Oh, thank you so much for this awesome guidance! Actually, I do know web development (just as a beginner) but I always get stuck in the ideation process. But you explained it so well!
Thanks a bunch
And yes, do make a tutorial whenever you are free. Will be glad to read it! :))