An end-to-end encrypted chat using public keys and Supabase. Built for Supabase's Holiday-hackdays hackathon.
Available at: https://chat.arnu515.gq
Runner Up in the "Best Realtime" category!
- Sign in using email or github
- Click the + button in the sidebar and enter the ID of your friend. They can see it by visiting the same page.
- Both users have to be online to receive chat messages. This is because the chat messages are NOT stored on the server. They are stored in the browser's local IndexedDB storage.
This project was developed by me (@arnu515)! Here are my links:
- Website: https://arnu515.gq
- Dev.To: https://dev.to/arnu515
Supabase was used for all realtime events. All friend requests and chat message events were sent to supabase. Supabase also stored users' profiles. Other features of Supabase that were used were functions and triggers. It was because of supabase that I got into SQL and PLPGSQL. I am thankful to the Supabase team for building an amazing open-source BaaS that helped me dive in to SQL and PostgreSQL.
Other libraries that were used were:
- ReactJS with Craco
- React Router DOM
- TailwindCSS, PostCSS and classnames for styling
- TweetNaCl for encryption
- @supabase/supabase-js for interacting with supabase
- Nanostores so I didn't have to learn Redux
- Formik for forms and yup for validation
- Dexie for providing a promise-based IndexedDB interface