Skip to content

shivanshs9/whisper-notes

 
 

Repository files navigation

Whisper Notes

Demo URL: https://whisper-notes.shivanshs9.me/

It's a journal app to write notes on-the-go. Using the latest Whisper models for speech-recognition, right there in your browser, no audio date is sent to any server. Supports WebGPU if your browser provides!

Project Structure

  1. CI/CD with Github Workflows
  2. Backend gRPC API
  3. React Frontend
  4. IAC with Pulumi
  5. Service K8s manifests
  6. Notes ProtoBuf contract used in API

Tech Stack Considerations

  1. Using gRPC as the underlying protocol between frontend and backend, for low latency and faster development with guaranteed service contracts.
  2. Using Pulumi as Infra-as-Code provider, it supports all GCP resources like Terraform along with Kube providers like Helm, Kustomize and custom manifests. Plus the YAML language support is really powerful when combined with JsonNet like I did!
  3. Create a K8s cluster with
    • GCP Managed Prometheus enabled to store the metrics on the cloud. Saves the hassle of managing on-prem prometheus, plus can setup alerts or create dashboards using the metrics to ensure a reliable monitoring data source.
    • Gateway API for Ingress enabled, allows using HttpRoute resource to define Ingress routes. It feels more natural and mature than the ever-changing Ingress or Service resources.
    • Sending Logs to GCP Logging Stack (managed service).
  4. Using GCP's Secret Manager for storing Postgres creds.
  5. Cluster is using private subnet, all workloads are in private network and the communication between backend and postgres is TLS encrypted using private network.
  6. Envoy proxy is used to expose gRPC-Web interface to the backend API, it also forwards the real client IP by detecting the Cloudflare headers.
  7. GCP's Ingress ALB is configured to only listen to HTTPS, by using self-signed TLS certifcate, ensuring end-to-end traffic encryption.

About

Whisper-powered Speech-to-Text Notes app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 72.3%
  • Jsonnet 19.9%
  • JavaScript 4.7%
  • CSS 1.3%
  • Dockerfile 0.9%
  • Shell 0.6%
  • HTML 0.3%