Shadow Docs
[The architecture of Archbee | Archbee Blog](https://www.archbee.com/blog/archbee-architecture)
9 min
https //www archbee com/blog https //www archbee com/blog company updatesupdated march 27, 2023 dragos dragos founder, robot with feelings from planet aiur http //twitter com/happydragos https //www linkedin com/in/dragos bulugean/ we explore how archbee wiki is being built architecture, code, libraries the architecture of archbee we will talk a lot about architecture and software development throughout this blog so why not talk about our own? let's get down to business and see how the sausage is made, the what and why's \#language we use typescript for everything our app & backend are all the way typescript but why? well, we picked typescript because it's one of the few static typed languages out there that has a good story on both frontend and backend development using the same language does wonders when you can share data structures between different parts of the system, because your system will be type safe or let's just say type safer ) obviously, there are better languages that fulfill this requirement like purescript, reasonml, kotlin, scala+scala js or f#/fable but all of them have a weaker side for example (in 2018) purescript and reasonml are not as good on the backend as they are on the frontend due to the lack of mature libraries and the reverse happens with kotlin and scala f# is pretty good on both, so we might consider it for next projects typescript is very good on both you've got incredible react bindings, and orms on node js, websocket libraries and anything you can think of it's the biggest ecosystem of libraries plus there's lots of developers out there that know typescript or can transition pretty easily from javascript typescript has a reputation of not having a very strong type system, but if you turn on the right flags for the compiler and try not to use classes, it is \#libraries/frameworks react is the ui library that we use for our app, website and blog it's mature, stable and has a great ecosystem combined with typescript, is a pleasure to work with, because everything gets type checked including jsx/tsx this is a feature very few language/library combinations have jointjs is a diagramming library that helps with handling all svg work all diagrams are a couple of layers on top of it jointjs allowed us to get fast off the ground because we didn't have to write all the 2d geometry svg interaction stuff basically a diagram is a react component with shouldcomponentupdate() always returning false and the rest handled by our layer on jointjs glamorous is our css in js library for the application it's awesome because all css is defined as properties on html you can write something like this unfortunately the library will be discontinued/unmaintained so we'll migrate to emotion emotion is what we use for css on our website\&blog and gives you an experience close to what i've described on glamorous next js is what makes our site and blog happen we need it because search engines are still in the 90's, so they need statically rendered html but a very good thing is, it's blazing fast it gets 90 at google's pagespeed or lighthouse one consequence of using next js is that it's all static html so the blog doesn't have any server running no wordpress shenanigans node js runs the json api its evented asynchronous stateless nature has changed backend development forever the jvm and net platforms are still very good and catching up on this architecture we can see spring framework trying to make spring webflux popular, but why would it become popular when vert x didnt? plus most of the stack (jdbc) is not async so you're stuck using only nosql tech like mongodb or cassandra express is the library of choice for the api mature and battle tested, great ecosystem of middleware actually we have a nice layer on top of it that is similar to nest js but allows us to have a type safe interaction between our frontend and backend this is made possible through a generic post function that takes request and response as type parameters and wraps the fetch api supplied by all browsers every call gets made through this function sequelize is an orm we use sequelize typescript for the bindings so we can annotate fields on our classes and get a lot of functionality for free because of it all read functionality is done directly writing to our database gets done through a google cloud pub/sub so we don't overrun our database with performance expensive requests this would happen easily because of the automatic save feature for the boards we do throttle it at 2 seconds for each client, but it's still not enough, so we need a queue we contemplated using apache kafka, but for now a simple managed queue is enough mysql stores everything not the best rdmbs for sure, but it's free, has a great ui using mysql workbench and is hosted by google cloud sql which makes things easier and hands free \#infrastructure archbee runs on google cloud that’s because gcp has many good managed services our build system (google cloud build) builds docker images and automatically deploys them to google kubernetes engine we have the same gke cluster running all environments dev, qa, prod, and depending on the branch we push to we use google cloud sql to host a cluster of mysql database instances, and google memorystore to host a cluster of redis instances \#the future if our business continues to steadily grow like it does now, we'll invest in writing our own jointjs replacement that will allow us to do crazier stuff like generating code from some diagramming components like types or even generate diagrams of your code through a command line tool we provide for you to run on your repo we might move to apache kafka from google cloud pub/sub and sink the boards into google cloud storage instead of our rdbms might move to reasonml or f# here's a very high level diagram of https //archbee io/app/public/board/archbee archbee's architecture \#how can archbee help with your system's documentation? archbee wiki provides an easy to adopt solution for documentation & knowledge sharing that is specifically tailored to software development teams we've studied many teams and their workflows, we've identified common usecases and coded them into our software's dna when your team picks archbee, you are guaranteed to see upsides like team happiness, synergy and productivity within less than 3 months of using our product documentation, technical writing tips and trends blog join 5000+ people from around the world that receive a monthly edition of the archbee blog newsletter mailto\ enter your email subscribe continue reading discover more insights and expand your knowledge https //www archbee com/blog/from nothing to v0 docs in one minute introducing documentation new https //www archbee com/blog/from nothing to v0 docs in one minute introducing documentation new https //www archbee com/blog/from nothing to v0 docs in one minute introducing documentation new https //www archbee com/blog/from nothing to v0 docs in one minute introducing documentation new https //www archbee com/blog/new playbook sales knowledge redefined lost info lost leads https //www archbee com/blog/new playbook sales knowledge redefined lost info lost leads https //www archbee com/blog/new playbook sales knowledge redefined lost info lost leads https //www archbee com/blog/new playbook sales knowledge redefined lost info lost leads https //www archbee com/blog/archbee playbook agentic gtm engineering 10x scaling without 10x the work https //www archbee com/blog/archbee playbook agentic gtm engineering 10x scaling without 10x the work https //www archbee com/blog/archbee playbook agentic gtm engineering 10x scaling without 10x the work https //www archbee com/blog/archbee playbook agentic gtm engineering 10x scaling without 10x the work