Modern Codeigniter Project Part 1 – Aplikasi Realtime Online Voting

Advertisements

Assalamualaikum kawan-kawan setia pembaca artikel kcdev. Semoga semangat belajar koding-nya masih tetap membara layaknya api cemburu saat aku melihatmu bersama nya eeh. Pada tahun 2018 ini, dalam bidang pemrograman web saat ini sudah banyak sekali framework-framework dan tools bermunculan yang bertujuan tentunya untuk memudahkan kita menyelesaikan project yang sedang dikerjakan. Dari PHP sendiri kita pasti sudah tidak asing lagi mendengar nama-nama framework mainstream seperti codeigniter, laravel, yii, cakephp, dan lain sebagainya. Belum lagi datang dari dunia gaib node js seperti reactjs, angular, vuejs dan yang tidak boleh dipandang sebelah mata framework yang datang dari dunia fauna flask dan django yang menggunakan python.

Lantas apakah PHP pada tahun ini sudah tidak mumpuni lagi digunakan? tentu saja tidak. Menurut survey yang dilakukan oleh w3techs.com, saat ini PHP digunakan oleh 83% website di seluruh dunia dan beberapa perusahaan besar seperti WordPress, Wikipedia, Flickr, Tumblr, Yahoo dan PHP sudah mencapai versi ke 7 dengan tambahan fitur yang lebih banyak dan optimisasti terkait speed dan perfomance yang sudah lebih baik dan tentunya bisa mengimbangi framework-framework dan bahasa pemrograman lain yang lebih modern.

Kembali ke codeigniter. Disini kita tidak akan membandingkan codeigniter dengan framework php lainnya, tapi kita akan mencoba mengembangkan project PHP codeigniter kita agar bisa menjadi modern dalam arti mengikuti perkembangan standar teknologi web.

Eitss sebentar.. standar apa saja sih yang menjadikan sebuah project web PHP itu modern?

Menurut saya pribadi, project web PHP modern setidaknya harus memiliki salah satu fitur seperti dependency management, command-line interface, unit-testing, continous integration, git integration, mengikuti standarisasi PSR minimal PSR-1 dan PSR-2, dan tentunya memakai salah satu framework php. Jika teman-teman mempunyai pendapat lain, silahkan menuangkan pendapat-nya pada kolom komentar di bawah.

Aplikasi Realtime Online Voting (E-Coblos)

So karena sebentar lagi akan dilaksanakan pilkada, pada project kali ini tema yang akan kita angkat adalah aplikasi realtime online voting, yak seperti kata pepatah sambil koding minum kopi. Dalam membuat sebuah aplikasi voting, ada beberapa teknik yang biasanya digunakan untuk menyimpan data pemilih dan mencegah terjadinya duplikasi voting.

1. Menggunakan Cookies Pada Browser

Teknik yang pertama ini, setelah user melakukan pemilihan maka kita akan menyimpan data user dan ip address yang digunakan user pada localStorage atau pada cookies browser. Kelemahan teknik ini adalah jika user kita cerdas maka dia akan membersihkan cache dan melakukan pemilihan ulang terus menerus.

2. Menggunakan IP Address

Pada teknik ini, kita menyimpan ip address user ke dalam database untuk menandakan bahwa user telah melakukan pemilihan. Kelemahannya adalah user yang memiliki ip address yang sama tidak akan bisa melakukan pemilihan contohnya dalam satu ruangan yang sama ataupun dalam satu isp yang sama. Teknik ini juga mudah untuk dimanipulasi dengan memakai vpn dan web proxy.

3. Menggunakan ID Nasional (Nomor KTP / SIM / Paspor)

Teknik ini sangat aman dan kita bisa menjamin tidak akan ada duplikasi voting dikarenakan nomor ID yang bersifat unik. Sayangnya informasi ID terlalu bersifat sensitif dan terkesan mempersulit user melakukan pemilihan.

4. Menggunakan Email Address

Pada teknik ini user diharuskan menginput alamat email nya untuk melakukan pemilihan. Sayangnya ini juga tidak bisa menjamin keaslian suara karena bisa saja satu orang memiliki 10 email address.

5. Menggunakan Social Media (Facebook dan Google+)

Advertisements

Teknik ini mengharuskan user menggunakan API social media yang mereka miliki untuk bisa melakukan pemilihan. Kekurangan nya sama seperti menggunakan teknik email address di atas, tetapi dengan teknik ini kita bisa mengambil data lain dari user seperti jenis kelamin, umur, dan lokasi nya.

Modern Web Tools

Pada Aplikasi yang akan kita buat, kita akan menggunakan teknik yang ke-5 yaitu menggunakan social media untuk mendapatkan rich-data dan menjaga user experience dengan menghindarkan user mengisi data diri pada form manual. Untuk voting yang bersifat strict dan kecil disarankan menggunakan teknik nomor 3 agar data yang diperoleh bisa lebih akurat. Selanjutnya adalah garis besar teknologi yang akan kita bahas:

  • Codeigniter 3
  • Ajax CRUD
  • CSRF and XSS | Web security
  • PSR-1 dan PSR-2 | Standarisasi penulisan kode pada PHP
  • Ion auth | Authentication library
  • Composer | Dependecy management
  • Socket.io | Realtime communication engine
  • Phpspreadsheet | Export dan import xlsx file
  • mPDF | Export data ke dalam format pdf
  • Materialize | CSSframework
  • Jquery Bootgrid | Datatable plugin
  • Facebook Graph API
  • dan lain-lain akan ditambahkan sesuai kebutuhan.

Oh iya sebelum mengikuti tutorial ini bagi teman-teman yang belum menyelesaikan tutorial kita sebelumnya disilahkan untuk menyelesaikan-nya terlebih dahulu agar dapat memahami konsep dasar dari framework codeigniter. Adapun tools wajib yang perlu disiapkan adalah:

Dan sedikit gambaran interface atau tampilan project kita nantinya:

Advertisements

Desain UI diatas dibuat menggunakan software Balsamiq Mockup 3. Tak lupa kami ucapkan terima kasih banyak kepada tim pengembang-nya (Ms.Valerie Liberty) karena telah memberikan lisensi gratis kepada kcdev.id :D.

Oke sekian dulu artikel ini, tetap semangat belajar dan stay tuned untuk tutorial project ci berikutnya Wassalam. Manaf Out.

“Dan Dia mendapatimu sebagai seorang yang kekurangan, lalu Dia memberikan kecukupan.” – (QS.93:8)

Author: kaceManaf

Founders of kcdev.id, freelance full stack web developer and also a web-tech wanderer. Passionate about code readability and simplicity. https://www.linkedin.com/in/nafplann/

4 Replies to “Modern Codeigniter Project Part 1 – Aplikasi Realtime Online Voting

  1. Assalamualaikum,war,wab
    mantap tutornya gan sngat membantu, untuk yg aplikasi real quik kount ini udah terbitkah ?

Leave a Reply

Your email address will not be published. Required fields are marked *