/hongbomiao.com

Hongbo Miao – Making magic happen

Primary LanguageTypeScriptMIT LicenseMIT

Flying

HONGBO MIAO

Making magic happen


GitHub Actions FOSSA Status Depfu Requires.io requirements status Uptime Robot status Commitizen friendly

Go Report Card Mozilla Observatory grade Codacy grade Code Climate maintainability Code Climate technical debt

HTTP/3 Chromium HSTS preload Codecov Code style

License Lines of code Code size

Twitter follow GitHub follow

Storybook

hongbomiao.com


Introduction

A cutting-edge technology lab powered by automation.

Preview

https://www.hongbomiao.com

hongbomiao.com record

Architecture

Architecture

Tech Stack

Web

  • React - Web framework
  • Redux - State container
  • redux-observable - Side effects
  • RxJS - Asynchronous programming with observable streams
  • graphql-tag - GraphQL query parsing
  • Bulma - CSS framework
  • PurgeCSS - Unused CSS removing
  • Jest - Unit testing, snapshot Testing
  • React Testing Library - React component testing
  • Storybook - Visual testing
  • rxjs/testing - Marble testing
  • Cypress - End-to-end testing
  • Lighthouse CI - Performance, accessibility, SEO, progressive web app (PWA) analysis

Mobile

  • React Native - Mobile application framework
  • UI Kitten - UI library
  • React Native Testing Library - React Native component testing

API Server

  • Express - Node.js web application framework
  • GraphQL.js, express-graphql - GraphQL
  • graphql-ws, graphql-subscriptions - GraphQL subscriptions
  • graphql-upload - GraphQL upload
  • graphql-shield - GraphQL permissions
  • graphql-depth-limit - GraphQL depth limit
  • graphql-disable-introspection - Disable GraphQL introspection
  • graphql-query-complexity - GraphQL query complexity analysis
  • DataLoader - Batching and caching
  • Knex.js - SQL query builder
  • PostgreSQL - Relational database
  • Redis - In-memory database
  • rate-limiter-flexible - Rate limiting
  • expressjs/cors - CORS
  • csurf - CSRF protection
  • jsonwebtoken, express-jwt - JSON Web Tokens (JWT)
  • bcrypt - Password hashing
  • Helmet - HTTP header Content-Security-Policy, Expect-CT, Referrer-Policy, Strict-Transport-Security, X-Content-Type-Options, X-DNS-Prefetch-Control, X-Download-Options, X-Frame-Options, X-Permitted-Cross-Domain-Policies, X-XSS-Protection
  • Report To - HTTP header Report-To
  • Network Error Logging - HTTP header NEL
  • express-request-id - HTTP header X-Request-ID
  • response-time - HTTP header X-Response-Time
  • connect-timeout - Request timeout
  • Terminus - Health check and graceful shutdown
  • Opossum - Circuit breaker
  • pino - Logging
  • dotenv-flow - Environment variables loading
  • Stryker - Mutation testing
  • SuperTest - HTTP testing
  • autocannon - HTTP benchmarking
  • Clinic.js - Performance profiling

API Server - Go

  • Gin - Web Framework
  • graphql-go/graphql - GraphQL
  • gRPC - Remote procedure call (RPC) framework
  • zerolog - Logging
  • GoDotEnv - Environment variables loading
  • Testify - Unit testing
  • Dgraph - Distributed graph database

Cloud Native

  • Linkerd - Service mesh
  • Argo CD - Declarative GitOps CD for Kubernetes
  • Open Policy Agent (OPA) - Policy-based control
  • OPAL - Open-policy administration layer
  • NGINX - Reverse proxy, load balancer
  • Fluent Bit - Data collector for unified logging layer
  • OpenTelemetry - Observability framework
  • Jaeger - Distributed tracing system
  • Elasticsearch - Distributed search and analytics engine
  • Kibana - Data visualization dashboard for Elasticsearch
  • Grafana - Monitoring and observability platform
  • Prometheus - Monitoring system
  • Node Exporter - Monitoring Linux host metrics
  • Docker - Container
  • Kubernetes - Container-orchestration system
  • Skaffold - Continuous development for Kubernetes applications
  • Locust - Load testing
  • CodeQL - Variant analysis

Neural Network

  • PyTorch - Machine learning
  • PyTorch Geometric - PyTorch geometric deep learning extension
  • OGB - Open Graph Benchmark
  • Weights & Biases - Machine learning experiment tracking

Ethereum

  • Solidity - Contract-oriented programming language
  • solc-js - JavaScript bindings for the Solidity compiler

Code

  • Prettier - Code formatter
  • gofmt - Go code formatter
  • opa - Rego code formatter
  • Black - Python code formatter
  • tsc - TypeScript static type checker
  • Mypy - Python static type checker
  • ESLint - JavaScript linter
  • Stylelint - CSS linter
  • golangci-lint - Go linter
  • Buf - Protocol Buffers linter
  • solhint - Solidity linter
  • markdownlint-cli2 - Markdown linter
  • ShellCheck - Shell linter
  • hadolint - Dockerfile linter
  • Kubeval - Kubernetes configuration file linter
  • commitlint - Commit message linter
  • Husky - Bad git commit and push preventing

Services

  • Lightstep - Distributed tracing
  • Sentry - Error tracking
  • Report URI - Security reporting
  • Google Tag Manager - Tag management
  • Google Analytics - Web analytics
  • FullStory - Experience analytics, session replay, heatmaps
  • Heroku - Hosting
  • Redis Enterprise Cloud - Redis hosting
  • Namecheap - Domain
  • Cloudflare - CDN, DNS, DDoS protection
  • GitHub Actions - Continuous integration
  • SonarCloud, Codacy, Code Climate, LGTM - Code reviews and analytics
  • Codecov - Code coverage reports
  • Chromatic - UI reviewing and feedback collecting
  • HTTP/3 Check - HTTP/3 checking
  • hstspreload.org - HSTS checking
  • Mozilla Observatory, Snyk - Security monitoring
  • Depfu, Requires.io - Dependency monitoring
  • Uptime Robot - Uptime monitoring
  • FOSSA - License compliance

Bots

  • Renovate - Dependency update
  • ImgBot - Image compression
  • Mergify - Automatically merging
  • Stale - Stale issues and pull requests closing

Highlights

Cloud Native

Service Mesh - Linkerd

Linkerd

GitOps - Argo CD

Argo CD

Distributed Tracing - OpenTelemetry

The website is using OpenTelemetry as an open specification to standardize collecting and sending telemetry data.

After it processes, Elasticsearch saves the data. You can analyze them using Jaeger, Prometheus, and other observability tools.

Jaeger

Jaeger screenshot

Prometheus

Prometheus screenshot

Kibana

Kibana screenshot

Grafana

Grafana screenshot

Graph Database

Dgraph

Dgraph screenshot

Machine Learning

Distributed hyperparameter optimization result by Weights & Biases.

Weights & Biases screenshot

HTTP/3

The website supports HTTP/3.

HTTP/3 screenshot

AVIF

Images on the website are using AVIF format.

“Roughly speaking, at an acceptable quality, the WebP is almost half the size of JPEG, and AVIF is under half the size of WebP.” – Jake Archibald, 2020

Security

Below is the website security report generated by Mozilla Observatory.

Mozilla Observatory screenshot

Profiling

Profiling result by Clinic.js and autocannon.

Profiling screenshot

Load Testing

Load testing result by Locust.

Load testing screenshot

Automation

This pull request shows how these technologies work together from different aspects to achieve automation.

Automation screenshot