diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 6fb85bb..dc5f1b3 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -11,7 +11,10 @@ "PowerShell(npx tsc --noEmit 2>&1)", "PowerShell(npx eslint server/services/refund.service.ts server/repositories/refund.repo.ts features/refund app/admin/refunds 2>&1)", "PowerShell(npx eslint server lib features app 2>&1)", - "Bash(npx eslint *)" + "Bash(npx eslint *)", + "Bash(Get-ChildItem -Path \"D:\\\\development\\\\weekly-project\\\\setrip\" -Recurse -Directory -Depth 2)", + "Bash(Select-Object FullName)", + "Bash(Get-Content -Path \"D:\\\\development\\\\weekly-project\\\\setrip\\\\.env.example\" -ErrorAction SilentlyContinue)" ] } } diff --git a/PRIVACY.md b/PRIVACY.md index 9820bcc..34d7e87 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,6 +1,6 @@ # 🔒 Privacy Policy (Kebijakan Privasi) SeTrip -**Terakhir diperbarui: 2026-04-27** +**Terakhir diperbarui: 2026-06-02** SeTrip menghargai privasi Anda. Kebijakan Privasi ini menjelaskan bagaimana kami mengumpulkan, menggunakan, dan melindungi informasi Anda saat menggunakan platform SeTrip. @@ -10,62 +10,83 @@ Dengan menggunakan SeTrip, Anda menyetujui praktik yang dijelaskan dalam Kebijak # 1. Informasi yang Kami Kumpulkan -Kami dapat mengumpulkan informasi berikut: - ## a. Informasi Akun - Nama - Email -- Nomor telepon -- Password (disimpan dalam bentuk terenkripsi) +- Password (disimpan dalam bentuk hash bcrypt, tidak pernah dalam teks asli) -## b. Informasi Profil +Anda dapat mendaftar menggunakan email & password atau melalui akun Google. Jika Anda masuk dengan Google, kami menerima nama, email, foto profil, dan token akun dari Google; tidak ada password yang dibuat untuk akun tersebut. + +## b. Informasi Profil (Publik) + +Informasi yang Anda pilih untuk dibagikan dan ditampilkan ke pengguna lain untuk penemuan teman dan pencocokan trip: - Foto profil -- Deskripsi diri -- Riwayat trip +- Bio / deskripsi diri +- Kota domisili +- Minat/aktivitas favorit (interests) +- Username Instagram (opsional) +- Gaya perjalanan / vibe (chill, balanced, hardcore) +- Riwayat trip yang diikuti -## c. Informasi Transaksi +## c. Verifikasi Identitas Organizer (KYC) -- Data booking trip -- Status pembayaran -- Riwayat aktivitas +Khusus bagi pengguna yang ingin menjadi organizer: -## d. Informasi Teknis +- Nama lengkap sesuai KTP +- Nomor Induk Kependudukan (NIK) +- Tanggal lahir dan alamat +- Foto KTP +- Foto liveness (memegang kertas bertuliskan "SETRIP") +- Data rekening bank (nama bank, nomor rekening, nama pemilik) untuk pencairan dana + +NIK serta foto KTP dan liveness disimpan dalam bentuk terenkripsi (AES-256-GCM) pada penyimpanan privat di luar akses publik. NIK juga di-hash (HMAC) sehingga kami dapat memeriksa keunikannya tanpa membuka data aslinya. + +## d. Informasi Transaksi & Pembayaran + +- Data booking trip dan nominal pembayaran +- Status pembayaran dan metode pembayaran (mis. virtual account, GoPay, QRIS, transfer manual) +- ID transaksi dan catatan callback dari penyedia pembayaran (Midtrans) +- Riwayat refund dan pencairan dana (payout), termasuk data rekening tujuan + +Pembayaran kartu/e-wallet diproses langsung oleh penyedia pembayaran Midtrans. Kami tidak menyimpan nomor kartu, PIN, atau kredensial pembayaran Anda. + +## e. Informasi Teknis - Alamat IP - Browser - Perangkat yang digunakan -- Log aktivitas +- Log aktivitas dan sistem (termasuk log pengiriman email dan log tindakan admin) --- # 2. Cara Kami Menggunakan Informasi -Kami menggunakan informasi Anda untuk: - - Membuat dan mengelola akun -- Menghubungkan pengguna dengan organizer -- Memproses booking dan aktivitas trip +- Menghubungkan pengguna dengan organizer serta mencocokkan teman/trip berdasarkan minat dan vibe +- Memproses booking, pembayaran, escrow, refund, dan pencairan dana +- Memverifikasi identitas organizer (KYC) +- Mengirim email dan notifikasi terkait aktivitas akun dan transaksi - Meningkatkan layanan dan pengalaman pengguna -- Mengirim notifikasi terkait aktivitas - Mencegah penipuan dan penyalahgunaan --- # 3. Pembagian Informasi -Kami tidak menjual data pribadi Anda. +Kami tidak menjual data pribadi Anda. Namun, kami dapat membagikan informasi dalam kondisi berikut: -Namun, kami dapat membagikan informasi dalam kondisi berikut: +## a. Dengan Organizer & Peserta Lain -## a. Dengan Organizer +- Profil publik Anda dan informasi dasar (seperti nama) dapat dibagikan kepada organizer dan peserta lain untuk keperluan trip -- Informasi dasar seperti nama dan kontak dapat dibagikan kepada organizer untuk keperluan trip +## b. Dengan Penyedia Layanan Pihak Ketiga -## b. Dengan Penyedia Layanan - -- Untuk kebutuhan teknis (hosting, analytics, dll) +- Midtrans — untuk memproses pembayaran +- Resend — untuk mengirim email transaksional +- Google — saat Anda memilih masuk dengan akun Google +- Penyedia hosting dan basis data — untuk menjalankan layanan ## c. Kewajiban Hukum @@ -75,82 +96,66 @@ Namun, kami dapat membagikan informasi dalam kondisi berikut: # 4. Keamanan Data -Kami berusaha melindungi data Anda dengan: - -- Enkripsi password -- Pembatasan akses data +- Hash password (bcrypt) +- Enkripsi data KYC sensitif (AES-256-GCM) di penyimpanan privat +- Pembatasan akses data dan pencatatan tindakan admin (audit log) +- Verifikasi tanda tangan (signature) pada callback pembayaran - Sistem keamanan standar industri Namun, tidak ada sistem yang 100% aman. --- -# 5. Penyimpanan Data +# 5. Penyimpanan & Retensi Data -Kami menyimpan data Anda selama: +Kami menyimpan data Anda selama akun aktif dan selama dibutuhkan untuk keperluan layanan. -- Akun Anda aktif -- Dibutuhkan untuk keperluan layanan - -Data dapat dihapus atas permintaan pengguna, kecuali diwajibkan oleh hukum untuk disimpan. +Data dapat dihapus atas permintaan pengguna. Namun, catatan keuangan dan audit (pembayaran, refund, pencairan dana, log email, dan log tindakan admin) bersifat permanen (append-only) dan dapat tetap disimpan meskipun akun dihapus, sepanjang diwajibkan untuk kepatuhan hukum, akuntansi, dan penyelesaian sengketa. Data KYC disimpan selama dibutuhkan untuk verifikasi dan kewajiban hukum. --- # 6. Hak Pengguna -Anda memiliki hak untuk: - - Mengakses data pribadi Anda - Memperbarui informasi - Menghapus akun - Menarik persetujuan +Penghapusan akun tidak menghapus catatan keuangan dan audit yang wajib kami simpan sebagaimana dijelaskan pada bagian 5. + --- # 7. Cookie & Tracking -SeTrip dapat menggunakan: - -- Cookie -- Teknologi pelacakan sederhana - -Untuk: - -- Menyimpan sesi login -- Meningkatkan pengalaman pengguna +SeTrip hanya menggunakan cookie sesi (JWT) untuk menjaga Anda tetap login. Kami **tidak** menggunakan cookie iklan maupun layanan analitik/pelacakan pihak ketiga. --- # 8. Layanan Pihak Ketiga -SeTrip dapat menggunakan layanan pihak ketiga seperti: +SeTrip menggunakan layanan pihak ketiga berikut: -- Hosting -- Analytics -- Payment gateway (di masa depan) +- Google — autentikasi (login dengan Google) +- Midtrans — payment gateway +- Resend — pengiriman email +- Penyedia hosting dan basis data -Kami tidak bertanggung jawab atas kebijakan privasi pihak ketiga tersebut. +Kami tidak bertanggung jawab atas kebijakan privasi pihak ketiga tersebut. Silakan tinjau kebijakan privasi masing-masing penyedia. --- # 9. Perlindungan terhadap Penipuan -Kami dapat menggunakan data untuk: - - Mendeteksi aktivitas mencurigakan - Mencegah penipuan +- Menangguhkan akun yang melanggar - Melindungi pengguna lain --- # 10. Perubahan Kebijakan Privasi -SeTrip dapat memperbarui Kebijakan Privasi ini sewaktu-waktu. - -Pengguna disarankan untuk: - -- Membaca secara berkala -- Memahami perubahan yang berlaku +SeTrip dapat memperbarui Kebijakan Privasi ini sewaktu-waktu. Pengguna disarankan untuk membaca secara berkala dan memahami perubahan yang berlaku. --- diff --git a/TERMS.md b/TERMS.md index 13bd66e..43a49fc 100644 --- a/TERMS.md +++ b/TERMS.md @@ -1,6 +1,6 @@ # 📜 Terms & Conditions (Syarat & Ketentuan) SeTrip -**Terakhir diperbarui: 2026-04-27** +**Terakhir diperbarui: 2026-06-02** Selamat datang di SeTrip. Dengan mengakses atau menggunakan platform SeTrip, Anda menyetujui untuk terikat oleh Syarat & Ketentuan berikut. @@ -12,15 +12,16 @@ Dalam dokumen ini: - **SeTrip**: Platform yang menghubungkan pengguna dengan penyelenggara trip. - **Pengguna (User)**: Individu yang menggunakan aplikasi SeTrip. -- **Organizer (Penyelenggara)**: Pengguna yang membuat dan mengelola trip. +- **Organizer (Penyelenggara)**: Pengguna terverifikasi yang membuat dan mengelola trip. - **Trip**: Kegiatan perjalanan yang dibuat oleh organizer. +- **Escrow**: Penahanan dana peserta oleh SeTrip sampai trip selesai sebelum diteruskan ke organizer. - **Platform**: Website atau aplikasi SeTrip. --- # 2. Peran SeTrip -SeTrip bertindak sebagai **platform perantara** yang menghubungkan pengguna dan organizer. +SeTrip bertindak sebagai **platform perantara** yang menghubungkan pengguna dan organizer serta memfasilitasi pembayaran. SeTrip: @@ -51,7 +52,17 @@ Dengan menggunakan SeTrip, Anda menyatakan bahwa: --- -# 5. Trip & Booking +# 5. Verifikasi Organizer (KYC) + +Untuk dapat membuat dan mengelola trip, pengguna wajib melalui proses verifikasi identitas (KYC): + +- Organizer mengunggah data identitas (KTP, NIK, foto liveness) dan informasi rekening bank untuk pencairan dana +- SeTrip meninjau pengajuan secara manual dan berhak menyetujui, menolak, atau meminta dokumen diunggah ulang +- Data verifikasi disimpan secara terenkripsi sesuai Kebijakan Privasi + +--- + +# 6. Trip & Booking - Organizer bertanggung jawab atas seluruh informasi trip - Pengguna wajib membaca detail trip sebelum melakukan join @@ -59,7 +70,7 @@ Dengan menggunakan SeTrip, Anda menyatakan bahwa: --- -# 6. Pembayaran & Escrow +# 7. Pembayaran & Escrow - Pembayaran dilakukan melalui metode yang tersedia di platform (Midtrans atau transfer manual yang dikonfirmasi organizer) - **Uang peserta ditahan oleh SeTrip (escrow)** sejak pembayaran berhasil hingga trip selesai + 3 hari, baru kemudian diteruskan ke organizer @@ -68,7 +79,7 @@ Dengan menggunakan SeTrip, Anda menyatakan bahwa: --- -# 7. Pembatalan & Refund +# 8. Pembatalan & Refund **Saat peserta membatalkan booking sendiri** (kebijakan default platform): @@ -84,7 +95,7 @@ Kebijakan di atas berlaku platform-wide; organizer tidak dapat menetapkan policy --- -# 8. Tanggung Jawab Organizer +# 9. Tanggung Jawab Organizer Organizer wajib: @@ -94,7 +105,7 @@ Organizer wajib: --- -# 9. Risiko Perjalanan +# 10. Risiko Perjalanan Pengguna memahami bahwa aktivitas perjalanan, terutama kegiatan outdoor, memiliki risiko termasuk namun tidak terbatas pada: @@ -109,7 +120,7 @@ Dengan mengikuti trip, pengguna menyatakan: --- -# 10. Batasan Tanggung Jawab +# 11. Batasan Tanggung Jawab SeTrip tidak bertanggung jawab atas: @@ -120,7 +131,7 @@ SeTrip tidak bertanggung jawab atas: --- -# 11. Larangan Transaksi di Luar Platform +# 12. Larangan Transaksi di Luar Platform Pengguna disarankan untuk tidak melakukan transaksi di luar platform. @@ -132,15 +143,15 @@ SeTrip tidak bertanggung jawab atas: --- -# 12. Sistem Review +# 13. Sistem Review -- Pengguna dapat memberikan review setelah trip +- Peserta dapat memberikan review setelah trip selesai - Review harus jujur dan tidak mengandung unsur fitnah - SeTrip berhak menghapus review yang melanggar --- -# 13. Penangguhan & Penghentian Akun +# 14. Penangguhan & Penghentian Akun SeTrip berhak untuk: @@ -156,7 +167,7 @@ Jika pengguna: --- -# 14. Perubahan Layanan +# 15. Perubahan Layanan SeTrip dapat: @@ -168,7 +179,7 @@ Tanpa pemberitahuan sebelumnya --- -# 15. Perubahan Syarat & Ketentuan +# 16. Perubahan Syarat & Ketentuan SeTrip dapat memperbarui Syarat & Ketentuan ini kapan saja. @@ -179,13 +190,13 @@ Pengguna disarankan untuk: --- -# 16. Hukum yang Berlaku +# 17. Hukum yang Berlaku Syarat & Ketentuan ini diatur oleh hukum yang berlaku di Republik Indonesia. --- -# 17. Kontak +# 18. Kontak Jika Anda memiliki pertanyaan, silakan hubungi: diff --git a/app/(public)/privacy/page.tsx b/app/(public)/privacy/page.tsx index 572e0f0..bf2287b 100644 --- a/app/(public)/privacy/page.tsx +++ b/app/(public)/privacy/page.tsx @@ -16,7 +16,7 @@ export default function PrivacyPage() { Kebijakan Privasi SeTrip
- Terakhir diperbarui: 2026-04-27 + Terakhir diperbarui: 2026-06-02
SeTrip menghargai privasi Anda. Kebijakan Privasi ini menjelaskan @@ -36,30 +36,75 @@ export default function PrivacyPage() {
+ Anda dapat mendaftar menggunakan email & password atau melalui + akun Google. Jika Anda masuk dengan Google, kami menerima nama, + email, foto profil, dan token akun dari Google; tidak ada password + yang dibuat untuk akun tersebut. +
-+ Informasi yang Anda pilih untuk dibagikan dan ditampilkan ke + pengguna lain untuk keperluan penemuan teman dan pencocokan trip: +
+ Khusus bagi pengguna yang ingin menjadi organizer, kami + mengumpulkan data verifikasi identitas: +
+ NIK serta foto KTP dan liveness disimpan dalam bentuk terenkripsi + (AES-256-GCM) pada penyimpanan privat di luar akses publik. NIK + juga di-hash (HMAC) sehingga kami dapat memeriksa keunikannya tanpa + membuka data aslinya. +
-+ Pembayaran kartu/e-wallet diproses langsung oleh penyedia + pembayaran Midtrans. Kami tidak menyimpan nomor kartu, PIN, atau + kredensial pembayaran Anda. +
+ +Kami menggunakan informasi Anda untuk:
Kami berusaha melindungi data Anda dengan:
Namun, tidak ada sistem yang 100% aman.
Kami menyimpan data Anda selama:
- Data dapat dihapus atas permintaan pengguna, kecuali diwajibkan - oleh hukum untuk disimpan. + Data dapat dihapus atas permintaan pengguna. Namun, catatan + keuangan dan audit (pembayaran, refund, pencairan dana, log email, + dan log tindakan admin) bersifat permanen (append-only) dan dapat + tetap disimpan meskipun akun dihapus, sepanjang diwajibkan untuk + kepatuhan hukum, akuntansi, dan penyelesaian sengketa. Data KYC + disimpan selama dibutuhkan untuk verifikasi dan kewajiban hukum.
+ Penghapusan akun tidak menghapus catatan keuangan dan audit yang + wajib kami simpan sebagaimana dijelaskan pada bagian 5. +
SeTrip dapat menggunakan:
-Untuk:
-+ SeTrip hanya menggunakan cookie sesi (JWT) untuk menjaga Anda tetap + login. Kami tidak menggunakan cookie iklan maupun + layanan analitik/pelacakan pihak ketiga. +
SeTrip dapat menggunakan layanan pihak ketiga seperti:
+SeTrip menggunakan layanan pihak ketiga berikut:
Kami tidak bertanggung jawab atas kebijakan privasi pihak ketiga - tersebut. + tersebut. Silakan tinjau kebijakan privasi masing-masing penyedia.
- Terakhir diperbarui: 2026-04-27 + Terakhir diperbarui: 2026-06-02
Selamat datang di SeTrip. Dengan mengakses atau menggunakan platform @@ -38,13 +38,17 @@ export default function TermsPage() { aplikasi SeTrip.
SeTrip bertindak sebagai platform perantara yang - menghubungkan pengguna dan organizer. SeTrip: + menghubungkan pengguna dan organizer serta memfasilitasi + pembayaran. SeTrip:
+ Untuk dapat membuat dan mengelola trip, pengguna wajib melalui + proses verifikasi identitas (KYC): +
++ Saat peserta membatalkan booking sendiri (kebijakan default platform): +
+ Saat organizer membatalkan trip: +
++ Pengembalian dana diproses manual oleh admin SeTrip — perlu 1–3 + hari kerja sejak refund disetujui untuk uang masuk ke rekening + Anda. Setiap pengajuan refund tercatat untuk keperluan audit. + Kebijakan ini berlaku platform-wide; organizer tidak dapat + menetapkan kebijakan yang lebih ketat tanpa persetujuan tertulis + dari SeTrip. +
Organizer wajib:
Pengguna memahami bahwa aktivitas perjalanan, terutama kegiatan
outdoor, memiliki risiko termasuk namun tidak terbatas pada:
@@ -169,7 +232,7 @@ export default function TermsPage() {
SeTrip tidak bertanggung jawab atas:
Pengguna disarankan untuk tidak melakukan transaksi di luar
@@ -196,9 +259,9 @@ export default function TermsPage() {
SeTrip berhak untuk: SeTrip dapat:
SeTrip dapat memperbarui Syarat & Ketentuan ini kapan saja.
@@ -248,7 +311,7 @@ export default function TermsPage() {
Syarat & Ketentuan ini diatur oleh hukum yang berlaku di
Republik Indonesia.
@@ -256,7 +319,7 @@ export default function TermsPage() {
- 10. Batasan Tanggung Jawab
+ 11. Batasan Tanggung Jawab
@@ -182,7 +245,7 @@ export default function TermsPage() {
- 11. Larangan Transaksi di Luar Platform
+ 12. Larangan Transaksi di Luar Platform
12. Sistem Review
+ 13. Sistem Review
-
@@ -206,7 +269,7 @@ export default function TermsPage() {
- 13. Penangguhan & Penghentian Akun
+ 14. Penangguhan & Penghentian Akun
@@ -223,7 +286,7 @@ export default function TermsPage() {
14. Perubahan Layanan
+ 15. Perubahan Layanan
- 15. Perubahan Syarat & Ketentuan
+ 16. Perubahan Syarat & Ketentuan
16. Hukum yang Berlaku
+ 17. Hukum yang Berlaku
17. Kontak
+ 18. Kontak