Making Dooitkoo.com – bagian 1

Setelah lebih dari 10 tahun bekerja sebagai contract developer & bikin produk buat orang lain, saya pikir udah waktunya saya punya produk sendiri yang punya nilai komersial. Awalnya saya ingin membuat mobile game atau menjual web template tapi setelah dipikir masak-masak, saya lebih condong ke pembuatan aplikasi yang benar-benar memiliki value dan bisa membantu banyak orang.

Berdasar pengalaman pribadi, saya bukan orang yang bisa mengatur keuangan, timbul ide untuk membuat aplikasi semacam financial assistant untuk membantu mencatat segala macam transaksi dan merencanakan keuangan. Saya yakin bukan hanya saya yang sering sembrono dalam masalah keuangan jadi saya pikir aplikasi ini punya prospek. Apalagi di Indonesia belum banyak aplikasi sejenis, artinya pangsa pasar masih terbuka lebar.

Artikel ini & artikel-artikel lanjutannya saya tulis dan update selama saya mengembangkan aplikasi ini. Jadi semacam developer note yang saya harap bisa bermanfaat buat developer lain.

Planning

Fail to plan, plan to fail

Ide dasar udah ada. Sebelum lanjutin, riset dulu fitur umum yang biasanya ada di aplikasi finansial. Liat-liat Less Accounting, Mint, dan Freshbooks. Bikin daftar fitur yang bisa diaplikasikan di Dooitkoo & cocok untuk orang Indonesia.

Selanjutnya, apa bentuk deliverable-nya.

Web + Mobile Web atau Web + Mobile App

Berikutnya, aplikasi ini mau dibikin web-only atau plus mobile app. Riset lagi, kalo web-only bisa pake responsive layout apa ga. Ternyata, ga ada yang namanya responsive table. Sebenarnya bisa aja bikin tabel responsive, tapi readability harus dikorbankan. Jadi, karena aplikasi ini nantinya banyak tabel, saya putuskan untuk nantinya bikin versi mobile, terpisah dari versi webnya. Mungkin pake Adobe Flex atau Appcelerator Titanium biar bisa write once, deploy anywhere. Faktor kedua yang membuat web-only ga cocok adalah perbedaan antara mobile browser dengan desktop browser khususnya di bagian JavaScript engine & performa.

Application Server

Ruby on Rails, NodeJS, Play framework, atau sekian banyak framework PHP. Banyak pilihannya.

Karena nanti ada mobile apps, saya butuh framework yang mendukung restful API. Semua framework modern bisa. Saya bisa pakai Play, karena berbasis Java yang support static-typing, atau NodeJS yang pake JavaScript, atau mungkin Rails/Django. Saya suka belajar teknologi & bahasa baru jadi semua framework modern, bahasa apapun, sangat menarik buat saya. Apalagi terakhir saya pake PHP itu sekitar 10 tahun yang lalu, jadi semua bahasa relatif baru buat saya. Masalahnya, Dooitkoo bukan sekedar toy application, saya berharap aplikasi ini bisa hidup panjang. Framework di atas semuanya menarik tapi apa bisa nanti cari developer lokal untuk membantu saya. Itu masalahnya. Karena itu saya pilih PHP aja deh. Banyak developernya di sini.

Lihat-lihat framework PHP, saya ketemu Laravel. Dari dokumentasi dan contoh-contohnya, framework ini super menarik. Restful, ada. Scaffolding, ada. ORM atau Raw-query, bisa. Yang paling menarik dari framework ini adalah :

  • Multi-environment, yang memungkinkan saya bikin konfigurasi utk server yang berbeda-beda dalam satu codebase tanpa perlu bergantung pada tool eksternal seperti Capistrano atau Phing.
  • Migrations, semacam version control tapi untuk schema database.
  • Bundle/plugin.
  • Artisan, command-line utility.
  • Routing yang fleksibel.

Web client

Untuk browser, Jquery udah pasti. Tapi ini library untuk manipulasi DOM, bukan untuk aplikasi end-to-end. Bisa aja pake Jquery tok, tapi nanti kodenya jadi ga karuan rumitnya. Riset, lagi.

Pertama ketemu BackboneJS, contoh & tutorial banyak. Tapi terlalu tergantung Jquery & ga banyak solusi yang ditawarkan dibanding pake pure JavaScript. Ketemu juga yang namanya AngularJS, EmberJS, JavaScriptMVC, dll. Kurang menarik. Sampe akhirnya ketemu KnockoutJS.

Knockout (KO) pake sistem data-binding yang mirip punya Flex (2-way). Cocok. Dokumentasinya lengkap cuman kurang tutorial online tapi karena udah kadung tertarik, akhirnya beli ebook Knockout Starter dari Packtpub & langganan video tutorial di Pluralsight plus beli dua video di Tekpub. Ga rugi, video-videonya mantap.

Sebenarnya ada yang lebih menarik daripada KO, namanya Kendo UI. Ini framework lengkap, dari UI sampe ke MVVM framework cuman masalahnya : 1. Mahal 2. Ga ada localization. Yang juga menarik namanya Sencha, sama seperti Kendo, lengkap tapi mahal. Alternatif lainnya, YUI library, gratis tapi rumit & susah.

Jadi untuk JavaScript, saya pake Jquery & KnockoutJS. Untuk layout, karena saya bukan desainer & ga gitu tertarik koding CSS, saya pilih Twitter Bootstrap. Template, beli aja di ThemeForest & WarpBootstrap, hemat waktu.

Persiapan

Setelah corat coret ide di kertas, it’s time for action.

Domain, Server, & Email

Pertama, bikin nama domain. Nama domain harus catchy, relatif mudah diingat, & sedikit bisa menggambarkan situs/aplikasi apa yang ada di dalamnya. Setelah coba-coba beberapa nama domain yg sialnya semua udah didaftarkan oleh orang lain, saya pilih www.dooitkoo.com (dibaca duitku).

Sama seperti domain saya yg lain, domain dooitkoo saya daftarkan di Namecheap. Hanya $8 per tahun.

Kedua, cari hosting. Untuk aplikasi, shared hosting biasa bukan pilihan yang tepat karena keterbatasan fiturnya. Managed VPS terlalu mahal untuk fase awal, sementara unmanaged VPS bikin repot karena saya bukan jagoan linux. Jadi saya pilih Webfaction yang menawarkan shared hosting dengan fleksibilitas seperti VPS. Faktor lain yang membuat Webfaction menarik adalah tersedianya server di Singapura jadi SSH bisa lancar.

Buat saya, bukan ide yang bagus untuk hosting aplikasi dan websitenya di satu tempat. Kalo server lagi down, saya ga bakalan bisa menginformasikan masalahnya ke user atau calon user. Jadi website saya hosting di shared host, terpisah dari application server. Untuk website hosting, saya pilih Hawkhost yang juga saya pake untuk blog ini, sekali lagi karena ada datacenter di Singapura & biayanya murah, cuman sekitar $11 per 3 bulan.

Untuk monitoring server, saya pake Pingdom karena ada fitur SMS nya. Analytics nantinya pake New Relic. Sourcecode saya simpen di Bitbucket, pake Git. Gratis ;-).

Jadi, setingnya begini :

  • Version-control pake Bitbucket
  • Application server (*.dooitkoo.com) di webfaction
  • Website (www.dooitkoo.com) di Hawkhost
  • DNS diatur di webfaction. Domain dooitkoo.com diarahkan ke Hawkhost.
  • Server monitoring pake Pingdom
  • Analytics pake New Relic

Karena buat saya urusan keuangan itu sifatnya sangat personal, untuk menjamin keamanan komunikasi antara client dan server saya pake SSL. Sertifikatnya dari Comodo, beli di Namecheap, cuman $8 per tahun.

Server & domain udah diset, berikutnya atur email. Tadinya saya coba pake outlook.com. Tapi ada bug konyol yang sampe sekarang belum dibenerin yaitu Timezone ga bisa diganti, macet di GMT. Ga semua orang punya masalah ini, mungkin cuman di server tempat akun saya dibuat. Saking konyolnya bug ini, saya putuskan untuk balik ke Google App Domain.

Local Development

Saya pake Mac untuk development jadi saya pilih paket software MAMP Pro untuk local server. $65, relatif mahal tapi worth it lah. Dibanding paket Apache-MySQL-PHP untuk Mac yang lain, MAMP satu satunya yang langsung jalan tanpa masalah.

Tool lain yang saya pakai untuk development adalah :

Rock on Roll

Semua udah disiapin, waktunya coding. Fun!

Tunggu artikel selanjutnya tentant proses development & masalah-masalah yang saya hadapi.

Also in this category ...


2 Comments

  1. sharingnya sangat menginspirasi banget om.. 😀
    jarang nemu developer lokal yang buat artikel tentang aplikasi yang sedang di-developnya 😀

Comments are closed.