Chatterbox adalah aplikasi pesan realtime yang dibangun dengan 13 dan Pusher berikutnya.
Anda dapat membuat obrolan grup atau memulai DM. Pengguna dapat mengirim pesan teks, atau mengunggah beberapa video atau gambar.
UI diperbarui secara realtime. Artinya ketika saluran dibuat oleh pengguna lain, atau ketika pesan dikirim, Anda akan langsung melihat pembaruan.
Disarankan di Vercel: https://chatterboxes.vercel.app/
Proyek cache()
menggunakan router aplikasi selanjutnya.
Kami juga menggunakan rute API (digunakan sebagai fungsi tanpa server ke Vercel) untuk tindakan seperti mendaftarkan pengguna baru, membuat pesan, dll.
Setiap kali pengguna mengirim pesan, membuat obrolan, atau datang secara online misalnya, semua pengguna lain akan diberitahu dan UI mereka akan diperbarui secara realtime.
Ini dilakukan dengan pendorong. Kami mendengarkan acara seperti message:new
atau chat:update
. Ketika pengguna membuat tindakan, kami memicu acara di server, dan mendengarkan pengguna lain akan menerima pembaruan.
Selain mendengarkan dan memicu acara, saluran keberadaan Pusher digunakan untuk membuat setiap pengguna saat ini online.
Saat pengguna masuk, kami mendapatkan setiap pengguna aktif dari pendorong dan menyimpannya di toko jotai lokal. Ketika pengguna masuk atau masuk, Pusher mengirimkan pembaruan dan kami memperbarui toko jotai secara lokal.
Proyek ini ditulis dalam TypeScript dan menggunakan prisma yang dihasilkan tipe & skema dan tipe ZOD untuk memastikan pengesahan di seluruh basis kode. Karena prisma menghasilkan jenis otomatis, kita jarang harus menyatakan atau memelihara jenis apa pun.
zod
digunakan untuk memvalidasi setiap bentuk sisi klien untuk memastikan nilainya benar sebelum melakukan panggilan atau mutasi API.
Di server, setiap rute API juga memiliki validasi ZOD untuk memastikan input valid dan sesuai dengan skema ZOD sebelum melanjutkan.
Eslint juga dikonfigurasi dengan aturan ketat untuk memastikan kualitas kode dan meminimalkan bug.
nodemailer