Knowledge Base

Firebase • React • Tailwind CSS • Algolia

An internal React app to manage workflows, data, and updates for the Webflow Customer Support team.

Knowledge Base

Problem

I joined Webflow as an employee when it was undergoing rapid growth. We were hiring non-stop. As a result, we had to make quick decisions about how we would document internal workflows and other information the wider team needed to perform their daily tasks.

We landed on Coda as a solution. Although it was a good choice in the beginning, we quickly outgrew it. We had all this valuable information but it was difficult to navigate and searching just didn’t work. Finding information became a pain.

Solution

One of the perks of working at Webflow is 10% time. It's 4 hours a week to work on a new skill. I used this time to build a React app to address the pain the team was experiencing. My passion for solving this problem quickly turned into evenings and weekends. After 4 months, I had a solid product with several features that were specific to our use case.

Let’s dive into the details!

Tech Stack

Admin Control

Add or remove the level of authorization for each user. A server-side cloud function is triggered to add/remove a token for a given user. The token is assigned to the cookie when the user signs in and this determines their level of access, what they can see and do in the app.

dashboard showing admin of knowledge base app

This is reinforced with database security rules to ensure users without sufficient permissions don’t perform unauthorized actions.

firestore database security rules

Realtime notifications

Managers and Trainers can send realtime in-app notifications to deliver crucial information to all users. This is possible with Firebase Firestore realtime database. When a new document is added, a cloud function triggers updates the document which forces the notification to be shown if it was hidden by the user.

in-app realtime notification

Managers and Trainers can view all updates. They can also modify or delete updates.

view all updates in admin

Updates can be toggled to move items between new/past notifications.

mark update as read
mark update as unread

Articles

Managers or Trainers can create new articles. Users on the same article are made visible to all users on that article. When a user begins typing, the Editor is locked for all other users. When changes are saved, realtime updates are sent and another editor can continue with the latest version of the article. Each article features a created and updated date. If the user is a Manager or Trainer, they can toggle Edit and Read mode.

create new article in draft mode

Articles can be placed in Draft or Publish mode. Published articles will be available in Global search for all users. Draft articles can only be searched through by Managers and Trainers and they are not available to standard users. If an article is changed to Draft mode, an alert is added to that article notifying users that info may be outdated.

create new article in published mode

Deleting an article requires an extra confirmation step to finalize deleting the article.

delete confirmation step

Users can optionally view all articles by category.

view all article categories

Article Categories

Authorized users can create, update, or delete Article categories. If a category has one or more articles, it cannot be deleted until all articles are deleted in that category. Updating a category name changes the category name across all articles that reference that category. Each category shows an updated on date.

Deleting a category requires the CMD key to be held, to prevent accidental deletion.

edit all article categories

Global Search

Standard users can search through Articles with a global search feature accessible from all pages. Search results are highlighted as the user types.

global search for standard users

Instant Search

Managers and Trainers can search through all Articles by category, draft or published, and by text search. Each article has a label indicating whether it’s in a draft or published state. Results are paginated to ensure performance is optimal.

instantsearch for managers and trainers

Bookmarks

Users can bookmark articles to save important information. Bookmarks can be searched through.

list of bookmarked articles by user

Each article has a bookmark button that can be toggled to add/remove an article from the users bookmarks.

toggle bookmark on
toggle bookmark off

Result

An app of this level is typically built by an entire team, but I was able to build it myself, covering all the key areas. One of my main learnings from this experience was to use a state management library in a future build to simplify global state management.

Other Applications

Movie Trailerz

Movie Trailerz

TMDB API • Typescript • React • Styled Components
Algolia Instantsearch

Algolia Instantsearch

Webflow • HTML • CSS • JS • Algolia