- Handling realtime features with socket.io.
- Optimistic update: Updating UI states before performing a mutation. Users would experience updates immidiately. If the mutation fails however, an error message will popup and changes will be rolled back. This provides a better user experience when using the app.
- Handling complicated states in React using appReducer.
- Drizzle ORM syntax, migration and types.
- Supabase, postgres database, realtime database changes.
Vercel (without realtime collab features) : https://note-app-pi-nine.vercel.app/
Railway (fully functional app): https://cypress-collaboration.up.railway.app/