Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
EiffelFly authored Apr 14, 2023
1 parent 2fe54bb commit 5ce2e13
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,26 @@
# Curioucity

Knowledge management tool built for community and its builder.
## Preface

At first, I built this tool to wire the Discord discussion to be searchable, the process is quite simple, Install a bot in the Discord server with a custom command, and once you use the command on the Discord thread, it will wrap the whole discussion thread and send it to the curioucity server. At the server, curioucity will parse the thread with the help of remark to form a proper AST(Abstract syntax tree) and store them in the edgeDB.

After this step, Curioucity will trigger the event to re-build the Nextjs frontend (Ideally you could put your frontend code in a repo, and the curioucity server will post a request to the repo and open a separate PR).

## Technology highlight

To make our API consistent, I am using protobuf to government the API for both gRPC and REST endpoint. There have lots of challenges within this step.

- I use buf.build to maintain the integrity of the protobuf code
- I use [protoc-gen-prost](https://github.com/neoeinstein/protoc-gen-prost) to generate the desired types included JSON serializer
- I use tokio as gRPC server, axum as REST server then bind then with tower::Steep (This is the most challenging part)
- To use edgeDB, I write a bunch of wrappers on top of it rust crate
- I use k6 to do the API integration-test

## Project status

Right now, the project is stale, I can't find further motivation to push it forward. I will leave this project as is to serve as a playground/example about how to build a server with protobuf and wrap REST and gRPC endpoint around it. Overall, this is a great adventure.

## Philosophy

- [On a way to solve clustered context, my thinking process](https://www.summerbud.org/thoughts/my-thinking-process-of-solving-clustered-context#user-content-fnref-3)
- [Why is the documentation of tech products so hard to use? (In the user’s point of view)](https://www.summerbud.org/thoughts/why-is-the-documentation-of-tech-products-so-hard-to-use)

0 comments on commit 5ce2e13

Please sign in to comment.