Project
SynapseFlow
A unified academic workspace combining study materials, AI assistance, flashcards, planning, and real-time collaboration through group chat and a shared whiteboard.
- Node.js
- Express
- React
- PostgreSQL
- pgVector
- Gemini AI

Overview
When studying for exams, I often had my notes on my laptop, past papers on GitHub, an AI chat open separately, and another space for studying with friends. Everything felt scattered.
SynapseFlow grew out of that experience. Built collaboratively, it brings uploaded study materials, AI-assisted practice, study planning, and live collaboration into one academic workspace. My contribution focused on authentication and the tools students use to interact with the assistant and each other.
My contribution
I implemented the authentication flow, including password hashing, JWT sessions with refresh-token rotation, and password recovery through emailed single-use tokens.
For group study, I built real-time chat with Socket.io, including member presence, message moderation, and commands for AI summaries and document-based questions. These commands let students bring AI assistance into a shared discussion.
I also built the embedded AI chatbot with streamed responses and conversation history, plus a collaborative whiteboard using tldraw’s synchronization system and PostgreSQL snapshot persistence.
Technical notes
Supporting different kinds of collaboration:
Chat and whiteboard interactions have different synchronization needs. Chat exchanges discrete messages and presence events; a whiteboard must coordinate ongoing changes to shared drawing state.
The implementation uses Socket.io for chat and tldraw’s synchronization protocol over a separate WebSocket connection for the whiteboard. This supports each interaction through its own protocol, while adding separate connection lifecycles to manage and troubleshoot.
Managing access to the AI assistant:
The chatbot combines streamed responses with a token-bucket rate limiter. The limiter allows a small burst of requests and replenishes capacity over time, placing a concrete limit on how frequently users can call the assistant.
An educational prompt guides the assistant toward study-related responses. That guidance shapes its behavior, but its effectiveness still needs evaluation against realistic student questions.
Result and reflection:
My contribution connected account access, AI conversation, group messaging, and shared drawing within the same application. The resulting workspace supports both individual study and collaborative sessions—the fragmented workflow that originally motivated the project.
The work brought together several engineering concerns: session management, streamed AI responses, event-based messaging, and synchronized shared state.
The next step is to evaluate these flows under realistic study conditions, particularly reconnection during group sessions, recovery of saved whiteboards, and the usefulness of AI responses. That would provide stronger evidence of reliability and learning value beyond the implemented feature set.
Published on
Back to projects