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.