⚡ Make information sharing smooth and straightforward.
At the very beginning, TagPost is going to be built as a tool for internal use. As the internship program at Google this year went virtual, we decided to shift this project to be open source. See this
TagPost is a full stack project to support information sharing. It maps a tag
to discussions, comments and statistics(charts). Any keyword can be used as a tag
here, TagPost serves as a forum for tag
. Users will be able to use TagPost to search, retrieve and post info using the tag
.
TagPost is built on an end-to-end gRPC service architecture using gRPC-web. gRPC-web is a JavaScript client library that enables our Angular web app to interact directly with backend gRPC server with the help of Envoy.
Here are some of the amazing tools and librarys we used in TagPost
- Bazel A fast, scalable, multi-language and extensible build system
- gRPC-java The Java gRPC implementation.
- gRPC-web gRPC for web client
- Angular One framework. Mobile & desktop.
- Bulma Modern CSS framework based on Flexbox
- Envoy envoy is an open source edge and service proxy .
-
A spanner instance is required to build TagPost in your local. You need to setup authentication by creating an service account
// SpannerService.java
// Enter YOUR_INSTANCE_ID, YOUR_DATABASE_ID
private void initDb() {
SpannerOptions spannerOptions = SpannerOptions.newBuilder().build();
db = DatabaseId.of(spannerOptions.getProjectId(),YOUR_INSTANCE_ID, YOUR_DATABASE_ID);
spanner = spannerOptions.getService();
}
- Build TagPost backend server locally
# 1. First, please clone the repo
git clone https://github.com/googleinterns/tagpost.git
cd tagpost
# 2. build server
bazel build :tagpost_server
# 3. run server
bazel run :tagpost_server
# 4. run server unit test
bazel test //src/javatests/com/google/tagpost:tagpost_server_test
- Build Envoy Image
bazel build third_party/envoy:envoy_image
- Build TagPost frontend locally
# 1. run script to generate the proto messages and the service client stub
cd ui
./make_ts_proto.sh
# 2. build docker image
./make_docker_image.sh
Here is a few of the things you can do with TagPost:
For a tag of choice, you can:
- Easily search for discussions
- Start your own discussion
- View and add comments under any discussion thread
- View data visualizations for the tag.
See demos for more details.
📍 click to enlarge img
- A list of threads with
experiment-id-was-deleted
as the tag
- A detailed thread page.
- Add new thread.
This project is brought to you by these contributors
This project is part of Google 2020 Summer Internship Program.
This is not an officially supported Google product.