Inspiration

As I have been learning how large open source projects are laid out and architected, I have found great difficulty navigating the understanding of how different components work together and how the system's sub-sections interact, often with certain technical details overlooked by documentation and only explained within conferences. Due to this, I have spent countless hours thinking of ways that the documentation systems could be improved. For example, currently, Doxygen is used, but this is only usable for C++ and doesn't capture many of the extra features implemented across other languages or the more complex features that need in-depth explanations.

What it does

Our tool enables clean, aesthetic, and meaningful documentation to be integrated across your entire project, no matter the language or syntax, making your codebase a singular monolithic representation of the interactions of all the technical details.

How we built it

We used a series of custom-rolled parsers to allow for dynamic parsing of codebases given a user's supplied configuration that can then be integrated into a Django REST API to interact with a database storing all the information throughout the codebase. This information is then picked up by our React front end to make a clean end product.

Challenges we ran into

Some of the main challenges we found were creating meaningful ways to write comments that could be styled flexibly within the code, as well as dynamically styling these blocks when generating the React components. Also, it's never easy writing a parser from scratch.

Accomplishments that we're proud of

The final styling and look of the pages are really impressive, and the performance of the rendering and parsing is much faster than would ever be needed.

What we learned

One of the key lessons we learned was the importance of designing a documentation system that remains flexible and adaptable across various programming languages and project structures. We also gained a deeper understanding of how to manage and store large volumes of parsed data efficiently within a Django backend. Additionally, the process of creating custom parsers highlighted the complexity of understanding and interpreting different coding standards, which will help us improve future parsing capabilities. Finally, we learned a lot about the balance between performance and aesthetics—ensuring that documentation not only looks good but also loads and updates quickly.

What's next for Anubis Unified Documentation

There are many extra features that can be slowly integrated into Anubis. Mainly, we would like to expand on this by adding VSCode extension support to enable collapsible documentation sections for cleaner in-code representations.

Share this project:

Updates

Submission history