SahrulRamadhani29/portfolio

mailbox.ramstudio.pro

Public sourceMVP

Platform inbox email custom yang menerima email melalui worker, menyimpannya, dan menampilkannya di web.

SoloInbox React, API/session/admin, parsing email worker, dan integrasi D1/R2

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Email domain diterima oleh worker, dipisahkan antara isi pesan dan metadata, lalu ditampilkan melalui inbox yang dibatasi menurut session pengguna.

  1. 01Terima email domain

    1. Email masuk ke worker

      Pengirim & email worker
    2. Periksa penerima

      Worker & data akun
  2. 02Urai dan simpan pesan

    1. Parse isi email

      PostalMime
    2. Pisahkan metadata dan objek

      Cloudflare D1 & R2
  3. 03Akses melalui inbox web

    1. Login dan muat daftar

      Pengguna & API Hono
    2. Baca dan kelola status

      Frontend React
Rincian proses dan percabangan
  1. Email masuk ke workerPengirim & email worker

    Worker menerima raw message dan menormalkan alamat penerima sebelum menentukan akun tujuan.

  2. Periksa penerimaWorker & data akun

    Alamat tujuan dicocokkan dengan akun yang tersedia sebelum pesan diteruskan ke penyimpanan inbox.

    Akun tujuan dikenali?

    • Dikenali. Pesan dikaitkan dengan akun penerima untuk pemrosesan berikutnya.
    • Tidak dikenali. Pesan tidak diteruskan menjadi isi inbox milik akun lain.
  3. Parse isi emailPostalMime

    Raw message diurai menjadi isi teks/HTML serta informasi pesan yang diperlukan untuk cuplikan dan detail inbox.

  4. Pisahkan metadata dan objekCloudflare D1 & R2

    D1 menyimpan metadata, teks, waktu, dan relasi akun. R2 menyimpan pesan asli EML serta isi HTML yang terkait.

  5. Login dan muat daftarPengguna & API Hono

    Session menentukan akun yang boleh diakses. API menyediakan daftar berpaginasi serta detail pesan milik akun tersebut.

  6. Baca dan kelola statusFrontend React

    Tampilkan teks atau HTML yang disanitasi DOMPurify. Pengguna dapat menandai read/unread dan melakukan penghapusan logis.

Alur berfokus pada menerima dan membaca email: worker menangani pesan masuk, sedangkan session membatasi akses inbox menurut akun.

CASE_STUDY.mdProduk & kontribusi saya

Tentang mailbox.ramstudio.pro

mailbox.ramstudio.pro adalah inbox web untuk menerima dan membaca email pada domain sendiri. Email worker menangani pesan masuk, API menyediakan akses menurut pengguna, dan frontend menampilkan daftar serta detail pesan. Metadata disimpan di Cloudflare D1, sedangkan pesan mentah dan isi HTML memakai R2.

Saya membangun frontend React, backend Hono, worker penerima email, autentikasi, serta dashboard admin dalam proyek ini. Cakupan produknya berfokus pada penerimaan dan pengelolaan inbox.

Kontribusi saya

Worker penerima dan validasi alamat tujuan

Saya membuat email worker yang menormalkan alamat penerima dan memeriksa akun tujuan sebelum memproses pesan. Worker membaca raw message dan menghubungkannya dengan pengguna yang sesuai agar pesan masuk dapat diteruskan ke penyimpanan inbox berdasarkan relasi akun.

Parsing MIME dan penyimpanan D1/R2

Saya mengintegrasikan PostalMime untuk mengurai isi teks/HTML serta informasi pesan. Pesan asli disimpan sebagai EML di R2, dengan isi HTML yang terkait. Metadata, cuplikan, teks, waktu terima, dan relasi akun disimpan pada D1 untuk mendukung pembacaan daftar serta detail inbox.

API inbox dan perubahan status pesan

Saya mengembangkan endpoint daftar berpaginasi, detail pesan, read/unread, dan penghapusan logis. Query dibatasi ke akun yang memiliki session. Saya menghubungkan hasil query dan perubahan status ke frontend sehingga pemilihan pesan serta tindakan pengguna diteruskan ke data inbox yang terkait.

Login, session, dan pergantian password

Saya menambahkan login/logout, session cookie, hash password bcrypt, dan penyimpanan hash token session. Saya juga mengerjakan pencatatan serta pembatasan percobaan login dan formulir penggantian password. Bagian ini menghubungkan identitas akun dengan izin menggunakan API inbox.

Pengelolaan akun dan peran admin

Saya membangun proses admin untuk membuat/mengelola akun, reset password, suspend/activate, serta membaca audit log. Pemeriksaan peran memisahkan proses administrasi dari akses inbox pengguna agar operasi pengelolaan akun tersedia pada jalur yang sesuai.

Antarmuka inbox dan navigasi pengguna

Saya mengembangkan layout inbox, daftar dan pemilihan pesan, tampilan detail, password visibility, serta halaman admin dengan React Router. Saya menghubungkan pagination, status baca, dan penghapusan logis ke API sehingga perubahan tindakan dapat diikuti oleh tampilan aplikasi.

Penyajian teks dan sanitasi HTML

Saya menyediakan tampilan body teks dan menghubungkan tampilan HTML melalui DOMPurify sebelum dirender. Pemisahan ini membantu pengguna membaca isi pesan sekaligus memberi lapisan pemrosesan untuk konten HTML yang berasal dari email masuk.

Migrasi, konfigurasi worker, dan tes

Saya menyiapkan schema/migrasi D1, binding worker dan R2, konfigurasi Wrangler, serta dokumentasi setup/deployment. Saya juga menulis tes helper email dan session. Pemisahan email worker, API, dan frontend memungkinkan penerimaan pesan diproses terpisah dari browser yang menampilkan inbox.

Bidang & teknologi inti

Bidang proyek

Cloud & InfrastructureBackend & APIFull-stack WebData & Databases

Teknologi inti

ReactTypeScriptHonoCloudflare WorkersCloudflare Email RoutingCloudflare D1Cloudflare R2PostalMime

3 commit dalam 12 bulan terakhir

Semua branch
NovDesJanFebMarAprMeiJunJulAguSepOktNov
Minggu
Senin
Selasa
Rabu
Kamis
Jumat
Sabtu
Arahkan ke kotak untuk melihat tanggal.
SedikitBanyak
Streak saat ini0 hari
Streak terpanjang dalam periode1 hari
Hari aktif dalam periode2 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 1 branch

Commit milik saya yang terjangkau dari seluruh branch remote saat sinkronisasi. Satu SHA dihitung sekali, termasuk jika ada di beberapa branch atau fork. Merge commit dikecualikan. Tanggal memakai waktu author dalam WIB, bukan waktu push. Streak saat ini tetap berjalan bila commit terakhir kemarin dan hari ini belum selesai.

Ini kalender commit dengan cakupan semua branch, sehingga angkanya dapat berbeda dari kalender contributions GitHub yang juga memiliki jenis aktivitas dan aturan branch sendiri. Kalender ini khusus untuk proyek yang sedang dibaca.

Riwayat kontribusi

3 commit non-merge milik saya · Seluruh branch · Data 3 November 2026.

Contoh commit public
Kembali ke semua proyek