Lewati ke konten
Niqcode

Catatan

Kepemilikan source code, akun, dan kunci aplikasi: sepakati sebelum kontrak dengan software house

Siapa yang memegang repositori, akun cloud dan domain, akun Google Play dan App Store, kunci signing, serta akun payment gateway. Apa yang perlu ditulis di penawaran atau kontrak, lengkap dengan daftar periksanya.

Terbit

Saat memesan aplikasi, perhatian biasanya habis untuk fitur, harga, dan timeline. Pertanyaan tentang siapa yang memegang kode, akun, dan kuncinya jarang dibahas, sampai suatu hari Anda ingin pindah vendor, menambah tim internal, atau sekadar merilis update saat vendor lama sudah tidak bisa dihubungi. Di titik itu, jawaban yang tidak pernah ditulis berubah jadi negosiasi.

Tulisan ini membahas aset yang perlu disepakati sebelum kontrak ditandatangani, kenapa masing-masing penting, dan apa yang sebaiknya masuk ke penawaran. Fakta tentang Google Play dan App Store merujuk ke dokumentasi resmi mereka, jadi Anda bisa memeriksanya sendiri. Kalau Anda sedang membandingkan vendor secara umum, mulai dari daftar periksa memilih software house. Tulisan ini mendalami satu bagiannya.

Aplikasi Anda lebih dari sekadar source code

Aplikasi yang berjalan terdiri dari banyak bagian yang dimiliki secara terpisah. Ada kode di repositori. Ada server atau akun cloud tempat kode itu berjalan, domain yang mengarah ke sana, akun developer di Google Play dan App Store, kunci untuk menandatangani setiap rilis, akun payment gateway, layanan email dan notifikasi, sampai akun analytics. Memegang source code tanpa akun-akun ini seperti memegang kunci rumah tanpa sertifikatnya.

Jadi pertanyaannya bukan hanya “apakah kodenya diserahkan?”, tapi untuk setiap bagian: didaftarkan atas nama siapa, siapa yang punya akses selama proyek, dan apa yang terjadi saat kerja sama selesai.

1. Source code dan repositori

Kepemilikan source code setelah pembayaran lunas adalah hal pertama yang perlu tertulis. Tapi kepemilikan di atas kertas belum cukup kalau kodenya hanya ada di akun vendor. Sepakati juga di mana repositori disimpan selama proyek berjalan. Pilihan yang paling aman biasanya repositori di organisasi milik perusahaan Anda, dengan tim vendor diundang sebagai anggota. Kalau repositori ada di akun vendor, minta akses baca sejak awal, bukan hanya salinan di akhir proyek.

Pastikan yang dimaksud “source code” mencakup:

  • Kode aplikasi mobile, web, dan backend, termasuk riwayat commit-nya.
  • Konfigurasi build dan deployment, skrip migrasi database, dan konfigurasi infrastruktur kalau ada.
  • Daftar variabel lingkungan dan kredensial yang dibutuhkan, tanpa nilai rahasianya ditulis di dokumen.
  • Aset desain dan file sumber yang dipakai untuk membangun tampilan.

Satu hal yang wajar ditanyakan: apakah vendor memakai komponen internal yang juga mereka pakai di proyek lain. Itu praktik umum dan tidak salah. Yang penting, lisensi Anda untuk memakai dan mengubah komponen itu ditulis jelas, supaya tidak jadi pertanyaan saat tim lain melanjutkan.

2. Akun cloud, hosting, dan domain

Akun cloud dan domain sebaiknya didaftarkan atas nama perusahaan Anda, memakai email perusahaan, bukan email pribadi salah satu staf vendor. Tagihannya juga lewat metode pembayaran Anda, supaya Anda tahu biaya berjalan sejak hari pertama dan layanan tidak berhenti hanya karena kartu kredit seseorang kedaluwarsa.

Vendor tetap bisa bekerja penuh lewat akun pengguna yang Anda undang, karena penyedia cloud besar mendukung pengguna tambahan dengan hak akses terbatas. Saat kerja sama selesai, Anda cukup mencabut akses itu. Tidak ada yang perlu dipindahkan.

3. Akun developer Google Play dan App Store

Di sinilah kesalahan paling sering terjadi, karena dampaknya baru terasa setelah aplikasi punya pengguna.

Untuk App Store, Apple menjelaskan di halaman pendaftaran Apple Developer Program bahwa nama organisasi yang mendaftar akan tampil sebagai nama penjual aplikasinya di App Store. Organisasi harus berupa badan hukum, punya nomor D-U-N-S (kecuali instansi pemerintah), dan orang yang mendaftar menjadi Account Holder yang berwenang mengikat organisasi secara hukum. Artinya, kalau aplikasi Anda dirilis dari akun vendor, nama vendor yang tampil sebagai penjual. Google Play juga meminta nomor D-U-N-S untuk akun organisasi. Jadi urus nomor itu lebih awal, karena keduanya memintanya saat pendaftaran akun organisasi.

Kabar baiknya, vendor tidak perlu memiliki akun untuk bisa bekerja. Di Google Play, pemilik akun atau admin bisa mengundang pengguna dengan izin di level akun atau hanya untuk aplikasi tertentu. Di App Store Connect, Account Holder, Admin, atau App Manager bisa menambahkan pengguna, dan peran seperti Developer atau App Manager bisa dibatasi ke aplikasi tertentu.

Kalau aplikasinya terlanjur ada di akun vendor, keduanya menyediakan proses transfer aplikasi antar akun. Tapi prosesnya dimulai dari akun lama. Di Google Play, pemilik akun asal yang mengajukan permintaan transfer. Di App Store, Account Holder akun lama yang memulai transfer dan Account Holder penerima yang menyetujuinya. Tanpa kerja sama vendor lama, jalur ini tertutup.

4. Kunci signing aplikasi

Setiap rilis aplikasi Android dan iOS ditandatangani secara digital sebelum diunggah ke store. Kehilangan akses ke kunci atau akun yang menandatanganinya bisa berarti Anda tidak bisa merilis update sama sekali, padahal aplikasinya masih dipakai setiap hari.

Android dan Play App Signing

Dengan Play App Signing, ada dua kunci. Kunci signing aplikasi disimpan dan dilindungi Google, dan dipakai untuk menandatangani aplikasi yang sampai ke perangkat pengguna. Upload key dipegang developer, dan dipakai untuk menandatangani app bundle sebelum diunggah ke Play Console. Kalau upload key hilang atau bocor, menurut Google Anda tidak terkunci dari aplikasi dan bisa mengajukan reset upload key lewat Play Console. Sebaliknya, kunci signing yang dikelola sendiri tanpa Play App Signing tidak bisa direset kalau hilang.

Jadi tanyakan dua hal: apakah aplikasinya memakai Play App Signing, dan di mana upload key serta kata sandinya disimpan. Jawaban yang baik adalah tempat yang bisa Anda akses, misalnya password manager perusahaan, bukan laptop satu developer.

iOS dan sertifikat distribusi

Di sisi Apple, sertifikat distribusi menjadi milik tim pada akun developer, dan hanya peran Account Holder atau Admin yang bisa membuatnya. Apple juga menjelaskan bahwa mencabut sertifikat distribusi tidak memengaruhi aplikasi yang sudah ada di App Store selama keanggotaan masih aktif, tapi update baru harus ditandatangani dengan sertifikat yang masih berlaku. Artinya, di iOS yang paling menentukan adalah siapa yang memegang akunnya. Kalau akun ada di tangan Anda, sertifikat baru bisa dibuat kapan saja.

5. Payment gateway dan layanan pihak ketiga

Aplikasi bisnis jarang berdiri sendiri. Ada payment gateway, layanan email dan SMS, WhatsApp API, peta, push notification, dan analytics. Masing-masing punya akun, API key, dan sering kali kontrak sendiri.

Untuk payment gateway, akun merchant sebaiknya atas nama badan usaha Anda, karena akun itulah yang terhubung dengan dana dan rekening penerimaan Anda. Untuk layanan lain, prinsipnya sama dengan akun cloud: daftarkan atas nama perusahaan, lalu beri vendor akses yang dibutuhkan. Simpan semua API key di satu tempat yang Anda kendalikan, bukan tersebar di percakapan chat.

6. Dokumentasi dan serah terima

Kepemilikan baru berguna kalau orang lain bisa melanjutkan pekerjaannya. Minta serah terima yang setidaknya memuat:

  • Cara membangun aplikasi dari source code, langkah demi langkah.
  • Cara deploy ke server dan cara merilis ke store.
  • Gambaran arsitektur dan daftar integrasi pihak ketiga.
  • Daftar semua akun, siapa pemegangnya, dan di mana kredensialnya disimpan.

Cara menguji dokumen ini sederhana: apakah developer yang belum pernah melihat proyeknya bisa membangun dan merilis aplikasinya hanya dengan dokumen itu? Kalau belum, dokumennya belum selesai.

Apa yang perlu ditulis di penawaran atau kontrak

Tidak ada satu susunan yang benar untuk semua proyek. Ada perusahaan yang ingin memegang semuanya sejak hari pertama, ada yang sengaja menyerahkan operasional ke vendor. Keduanya sah, selama tertulis. Poin yang sebaiknya ada:

  1. Siapa pemilik source code, dan sejak kapan kepemilikan berpindah.
  2. Daftar akun yang dipakai proyek, didaftarkan atas nama siapa, dan siapa yang menanggung biayanya.
  3. Akses apa yang Anda punya selama proyek berjalan.
  4. Apa saja yang diserahkan saat proyek selesai, dalam bentuk apa, dan pada tanggal berapa.
  5. Kapan dan bagaimana akses vendor dicabut setelah kerja sama berakhir.
  6. Lisensi untuk komponen internal vendor yang ikut dipakai, kalau ada.

Untuk bahasa hukumnya, libatkan penasihat hukum Anda. Tugas Anda sebagai pembeli adalah memastikan poin-poinnya dibahas sebelum tanda tangan, bukan ditemukan belakangan.

Daftar periksa sebelum tanda tangan

  • Kepemilikan source code tertulis di penawaran atau kontrak.
  • Repositori ada di akun perusahaan, atau Anda punya akses sejak awal.
  • Akun cloud, hosting, dan domain atas nama perusahaan, dengan email perusahaan.
  • Akun Google Play dan App Store atas nama badan usaha Anda, dan nomor D-U-N-S sudah diurus.
  • Vendor bekerja lewat akun pengguna yang Anda undang, bukan akun miliknya.
  • Aplikasi Android memakai Play App Signing, dan upload key tersimpan di tempat yang bisa Anda akses.
  • Akun merchant payment gateway atas nama badan usaha Anda.
  • API key dan kredensial tersimpan di satu tempat milik perusahaan.
  • Isi dan tanggal serah terima disepakati, termasuk cara pencabutan akses vendor.

Bagaimana kami menanganinya

Di proyek pembuatan aplikasi Android dan iOS, akun store dan kredensial signing dipegang Anda, dan alur rilisnya diserahkan ke tim Anda. Kepemilikan source code, serta server dan akun tempat sistem berjalan, kami sepakati di penawaran sebelum pekerjaan dimulai, bersama lingkup tertulis dan harga tetap. Data Anda tetap milik Anda. Pertanyaan yang sama juga muncul saat memilih teknologinya, dan kami bahas di panduan Flutter vs React Native.

Kalau aplikasi Anda sudah berjalan dan kepemilikannya belum jelas, langkah pertamanya adalah audit. Kami tulis apa yang perlu diperiksa di panduan mengambil alih aplikasi dari vendor lain, dan managed service kami memang dimulai dari audit untuk sistem yang bukan kami bangun. Atau langsung ceritakan kondisinya.

Rujukan