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.
I’d love any feedback on how I can improve it, but for now it allows you to theme your notebooks and share them from a custom domain
Here’s an example of what my site looks like: https://nbs.isaacaderogba.com/
I have loved using Dataquest so far, so hope you get some value from the tool I built!
Oh wow, Isaac - this looks absolutely amazing!
Impressive work here.
WOW. This is so impressive! I love the design of the website, especially the color palette! Wish you success with the product!
Ahh thank you so much! Still a lot of UI fixes for the notebooks, but thought it’d be worth getting it out there
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. :))
No problem at all!
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
Great Job! The hobby projects apart from the guided one makes your profile stand apart!
Keep it up the good work!
@joshiheramb89 Thanks so much! Yeah, hopefully I’ll be doing a few more hobby projects after I finish the Dataquest curriculum!
Just updated the app btw, it now allows for searching through your notebooks
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! :))
Your 8 weeks of hard work worth it for sure! : D
Oh nice! Well then just let me know if you get stuck or need any pointers
@isaacaderogba1 Well done! Amazing work! Naija no dey carry last
Hahaha appreciate this brother! Launching something interesting tomorrow
Well done @isaacaderogba1! It’s very nice:)
Thanks Artur, I really appreciate this
For those interested, I put together a free tool for publishing one-off notebooks:
Just configure your theme and notebook details, and you’re good to go
That is amazing! Thank you!
No problem! Let me know how you get on and if there’s anything you’d like to see in particular