kjv

Project Stardust: more docs!

In case you haven’t heard, I was laid off from Vox Media in July, like so many other tech workers this year. So a fellow ex-Vox Media teammate and I decided to collaborate on a project together to learn and refresh our memory on widely used languages and frameworks, and to keep programming loaded up in our minds (I spent all of August off the computer, and most certainly would have failed any technical interview after that—programming, yes I think I knew that once…).

So naturally, we decided to build, drum roll please, a document editor! Yes, yes that is exactly what we worked on at Vox Media, so we have domain expertise and a serious lack of imagination. Unlike the product we worked on, however, we are free to use All The New Things, so I spent a day installing fresh versions of React, Typescript, the latest version of Node(!), Vite, Vitest, and the new-to-me Tiptap, an out-of-box solution for building a collaborative editor.

Tiptap is simply an abstraction layer on top of ProseMirror, a WYSIWYG editor much like Quill, the editor we were using at Vox. It’s almost depressing how easy it is to set Tiptap up, considering the volume of hours poured into Chorus to create the hand-rolled autosave and multi-user editing systems it pioneered. But, it’s also exciting because it allows us to move past the base functionality that everyone now expects (thanks Google Docs!), to get to the more interesting and unique features.

What are those interesting and unique features, you may be asking yourself? Well, I am also asking myself, because we haven’t gotten there yet! Before I left Vox, I was working on some interesting mapping features with Mapbox and integrating mini Vue apps into the Quill editor so we could make our custom blocks. I’m excited to see what sorts of interesting, interactive blocks I could create, maybe turn the editor into something more than just a text editor. Maybe a user could draw in it somehow? I don’t know! And that is the fun and exciting part.

Here’s a link to the repo; once we have something more workable, I’ll post the link to the user-facing experience to the readme.