ref:note

github | refnote.app

Go, TypeScript, Next.js, Node.js, OAuth2, Docker, GCP, Vercel

A web app for students to manage notes for all of their classes. Students can share classes with granular permissions and collaborate on notes in real-time.

Developed by me (frontend, backend, database design, websockets, authentication) and Isaac Nguyen (frontend, websockets, authentication).

  • Next.js app deployed on Vercel. Uses dynamic routing and a mixture of client and server-side rendering.
  • Uses OAuth2 (Google Sign-In) and JWT for authentication. Sessions are managed with cookies and security is ensured by verifying JWT signatures for every API request.
  • Firestore database to store user, class, and note data with granular permissions.
  • Go backend on Google Cloud Run for Firestore database management with cold start times < 100ms.
  • Node.js WebSockets server on Google Cloud Run for real-time collaboration using Yjs, capable of handling hundreds of concurrent connections in the same instance with low latency.
  • Dockerized Go and Node.js servers to leverage Cloud Run's auto scaling and zero-downtime deployments. Used multi-stage builds to significantly reduce image size.