Saat ngoding kita tentu harus menguji kodingan kita terlebih dahulu agar kita bisa tau kodingan kita benar atau error. tidak terkecuali saat ngoding aplikasi Android. mungkin kebanyakan dari kita melakukan pengujian aplikasi Android secara manual dengan melakukan prosedur yang telah kita tentukan secara berulang ulang, hal ini sebenarnya cukup melelahkan dan seringkali membuat kita jenuh.
Continue readingCategory: Programming

Setting Assets dan Support Dark Mode iOS Apps
Dalam pengembangan Aplikasi iOS pada jaman sekarang kebutuhan tentang support dark mode semakin sering kita jumpai, kita semua tau kalau dałam mengembangkan iOS apps dibutuhkan Mac untuk bisa menginstall Xcode demi bisa membuat iOS Apps. Di Xcode sendiri sebenarnya sudah disediakan beberapa macam color yang ada di iPhone SDK, antara lain bisa dilihat di gambar 1.


Membuat Planner dengan Microsoft Graph API
Microsoft Graph adalah platform dari Microsoft yang menghubungkan banyak layanan dan perangkat yang sudah disediakan oleh Microsoft. Dengan menggunakan Microsoft Graph, pengembang dapat melakukan integrasi layanan dengan layanan – layanan yang ada di Microsoft 365. Misal dalam tulisan ini saya ingin menggunakan layanan Microsoft Planner untuk membuat Task menggunakan API sendiri.
Berikut adalah langkah – langkahnya:
Continue reading
API testing menggunakan Mocha & Chai
Diskripsi singkat
Hai gaes pasti kalian sudah familiar kan dengan API itu apa? Jadi secara singkatnya API itu adalah seperangkat aplikasi yang bisa berbentuk fungsi, method atau URL endpoint yang dapat kita gunakan untuk mengembangkan aplikasi, baik dalam satu platform maupun lintas platform.
Terus mocha dan chai ini apa sama? jadi gini mocha itu adalah javascript library testing dan Chai sendiri adalah library yang digunakan untuk memudahkan Mocha dalam melakukan assertion pada setiap API yang dipanggil. Nah gimana udah paham kan? sekarang kita eksekusi yok gimana cara pakai mocha dan chai nya.
Persiapan
Pastikan kalian sudah menginstal nodejs, jika belum terinstall silakan install dulu disini!

Aplikasi Video Conference dengan Flutter
Pandemi Covid-19 benar-benar mengubah kebiasaan masyarakat. Mulai dari sekolah sampai bekerja yang awalnya kegiatan dilakukan secara tatap muka, sekarang berubah menjadi serba online dengan memanfaatkan teknologi yang bernama Video Conference.
Video Conference memungkinkan kita berkomunikasi dengan lebih dari satu orang dalam waktu yang bersamaan. Kali ini kita akan mencoba membuat aplikasi Video Conference dengan menggunakan Flutter.
Continue reading
Teknik Materialized View dengan Database MySQL
Apa itu Materialized View?
Materialzied View adalah Hasil fisik / table dari sekumpulan table yang dilakukan Query JOIN, berbeda dengan View dimana Hasil dari Query JOIN. Materialized View memiliki keuntungan dari segi normalisasi Performa database yang cepat, secepat kita GET data Table, sedangkan View untuk mengambil 1 Data dari sekumpulan Query JOIN sangat banyak dan dengan data yang sangat Banyak dari Table akan memakan Waktu. Permasalahan Utama kita kenapa menggunakan Material View adalah GET data dengan JOIN table yang sangat banyak.
Materialized View akan berfungsi dan dibutuhkan pada saat system Anda berjalan dan sudah banyak data yg berjalan serta system membutuhkan data yang Real Time, Apabila optimasi ini belum diterapkan akan lebih bijaknya Anda pertimbangkan untuk menggunakannya.
Beberapa Database Lain sudah support untuk Materialized View diantaranya:
- Oracle (Resource)
- MongoDB (Resource)
- Cassandra (Resource)
- PostgreSql (Resource)
- SQL Server (Biasa disebut Indexed View) (Resource)
Di artikel Ini kita akan membahas Materialized View di MYSQL, benar MYSQL tidak ada dalam list Database yang support untuk Materialized View, namun disini saya akan mencoba memberikan beberapa Teknik yang lumayan mudah untuk diterapkan Apabila System Anda menggunakan Database MYSQL. Berikut Gambaran dasar Materialized View secara garis Besar:

Berdasarkan Gambaran Diatas bisa akita lihat Hasil query dari beberapa table akan menghasilkan single table. Bagaimana caranya?
Berikut kita masuk ke topik utama yaitu Teknik Materialized View di Database MYSQL.
Sebagai Contoh disini saya membuat database untuk penjualan Rumah Makanan yang sederhana:
1. Table user
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`phone` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`role_id` INT(11) NULL DEFAULT NULL,
`status` TINYINT(4) NULL DEFAULT ‘1’,
`created_at` DATETIME NOT NULL DEFAULT current_timestamp(),
`updated_at` DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`) USING BTREE,
INDEX `role_id` (`role_id`) USING BTREE
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
AUTO_INCREMENT=2;
2. Table role
CREATE TABLE `role` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`created_at` DATETIME NOT NULL DEFAULT current_timestamp(),
`updated_at` DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`) USING BTREE
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
AUTO_INCREMENT=4;
3. Table menu (menu makanan)
CREATE TABLE `menu` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`price` DOUBLE(22,0) NULL DEFAULT NULL,
`status` TINYINT(4) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT current_timestamp(),
`updated_at` DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`) USING BTREE
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
AUTO_INCREMENT=6;
4. Table Invoice
CREATE TABLE `invoice` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT current_timestamp(),
`updated_at` DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`) USING BTREE,
INDEX `user_id` (`user_id`) USING BTREE
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
AUTO_INCREMENT=2;
5. Table invoice_detail
CREATE TABLE `invoice_detail` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`invoice_id` INT(11) NULL DEFAULT NULL,
`menu_id` INT(11) NULL DEFAULT NULL,
`price` DOUBLE(22,0) NULL DEFAULT NULL,
`quantity` INT(11) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT current_timestamp(),
`updated_at` DATETIME NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`) USING BTREE,
INDEX `menu_id` (`menu_id`) USING BTREE,
INDEX `invoice_id` (`invoice_id`) USING BTREE
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
AUTO_INCREMENT=2;
6. View invoice_report_list ini adalah view yang akan kita Materialized.
DROP TABLE IF EXISTS `invoice_report_list`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `invoice_report_list` AS SELECT i.id,id.invoice_id, id.price, id.quantity, i.created_at AS sale_date, u.name AS cahsier, m.name AS menu_name, r.name AS role_name, r.id AS role_id FROM invoice_detail id JOIN invoice i ON (id.invoice_id = i.id) JOIN user u ON (i.user_id = u.id) JOIN menu m ON (id.menu_id = m.id) JOIN role r ON (u.role_id = r.id) ;
Berikut beberapa Teknik Materialized View:
1. Materialize View dengan Event Scheduller dan Store Routine (Tidak Real Time).
Event Scheduller digunakan untuk memanagement Eksekusi suatu event dalam Batabase MYSQL dan Task dijalankan secara barkala atau sesuai dengan penjadwalan. Event Scheduller dalam Materialized View ini digunakan sebagai perintah penjadwalan yang kemudian digunakan untuk eksekusi secara berkala sehingga hasil Materialized View akan terupdate berdasarkan Jadwal dari Event Scheduller. Disini selain menggunakan Event scheduler juga menggunakan Store Routine. Store Routine adalah semacam prosedur fungsi yang bisa digunakan di MYSQL. Dengan menggunakan DB Rumah makan diatas, Berikut Langkah Materialized View:
- Kita akan membuat Table dengan nama invoice_report_mv_event_sche sebagai Materialized View nya yang memiliki field sama dengan View invoice_report_list:
CREATE TABLE `invoice_report_mv_event_sche` (
`id` INT(11) NULL DEFAULT NULL,
`invoice_id` INT(11) NULL DEFAULT NULL,
`price` DOUBLE(22,0) NULL DEFAULT NULL,
`quantity` INT(11) NULL DEFAULT NULL,
`sale_date` DATETIME NULL DEFAULT NULL,
`chasier` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`menu_name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`role_name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`role_id` INT(11) NULL DEFAULT NULL
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB;
- Buat Store Routine yang digunakan untuk refresh Table invoice_report_mv_event_sche.
CREATE DEFINER=`root`@`localhost` PROCEDURE `store_routine_mv`(
IN `rc` INT
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ”
BEGIN
TRUNCATE TABLE invoice_report_mv_event_sche;
INSERT INTO invoice_report_mv_event_sche
select * from invoice_report_list;
SET rc = 0;
END
- Buat Event untuk melakukan penjadwalan refresh dari Store Routine yang telah kita buat tadi. Event disini saya buat akan dijadwalkan setiap 1 Jam akan dieksekusi
CREATE DEFINER=`root`@`localhost` EVENT `event_scheduller_mv`
ON SCHEDULE
EVERY 1 HOUR STARTS ‘2020-10-25 10:46:00’
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ”
DO BEGIN
CALL `store_routine_mv`(@rc);
END
- Untuk menjalankan Event Scheduller di system dengan menggunakan command berikut:
SET GLOBAL event_scheduler = ON;
- Apabila semua step diatas sudah dilaksanakan maka table invoice_report_mv_event_sche akan ter refresh setiap 1 Jam.
2. Materialized View dengan Trigger (Real Time)
Materialized View dengan Trigger ini digunakan untuk setiap perubahan 1 data akan menambah data dari Table Material View sehingga akan terlihat Real Time. Jadi INSERT, UPDATE, DELETE akan mempengaruhi Tabel dari material view khusus untuk hanya 1 (INSERT, UPDATE, DELETE) data row saja. Berikut Langkah untuk Materialized View untuk INSERT dengan Trigger:
- Buat Table Materialized View dengan nama invoice_report_mv_trigger
CREATE TABLE `invoice_report_mv_trigger` (
`id` INT(11) NULL DEFAULT NULL,
`invoice_id` INT(11) NULL DEFAULT NULL,
`price` DOUBLE(22,0) NULL DEFAULT NULL,
`quantity` INT(11) NULL DEFAULT NULL,
`sale_date` DATETIME NULL DEFAULT NULL,
`chasier` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`menu_name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`role_name` VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4_general_ci’,
`role_id` INT(11) NULL DEFAULT NULL
)
COLLATE=‘utf8mb4_general_ci’
ENGINE=InnoDB
ROW_FORMAT=DYNAMIC;
- Buat Trigger yang akan update setiap ada penambahan di table invoice_detail kemudian insert ke table Materialized View.
CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_invoice_detail_mv` AFTER INSERT ON `invoice_detail` FOR EACH ROW BEGIN
INSERT INTO invoice_report_mv_trigger SELECT * FROM invoice_report_list WHERE id = NEW.id;
END
Apabila step sudah dilakukan maka data di table Materialized View invoice_report_mv_trigger akan terupdate dan bisa dikatakan Real Time.
3. Materialized View dengan Easy Script
Easy Script disini kita tinggal panggil query SQL setiap ada perubahan dari table utama kemudian kita update hasil View ke Materialized View, car aini hamper sama dengan MV Trigger, ini tergantung dengan logic yang Anda gunakan apaah bisa digunakan atau tidak, tapi tentunya bisa digunakan sesuai dengan alur scripting Anda. Untuk report Rumah Makan kita akan memperhatikan perubahan dari table invoice_detail, untuk setiap penambahan id dari invoice_detail maka akan kita update row di table Materialized View invoice_report_mv_trigger. Untuk query terserah Anda sesuai kreasi Anda namun di Report Rumah Makan ini saya hanya akan menggunakan query INSERT berikut untuk mengupdate:
INSERT INTO invoice_report_mv_trigger SELECT * FROM invoice_report_list WHERE id = $id_invoice_detail
Silahkan menggunakan File SQL Berikut Untuk Mencoba Sendiri Teknik Materialized View di Database MYSQL : Download
Materialized View akan terasa gunanya pada waktunya namun sebaiknya anda impementasikan diawal saat pembuatan system apabila menggunakan MYSQL, ditakutkan apabila diimplementasikan ditengah tengah program berjalan akan mempengaruhi performa dan kestabilan jalannya program apabila tidak berhati hati.
Semoga Bermanfaat
Wassalamualaikum

Mengenal Phoenix Web Framework
Sebelum Masuk ke Phoenix Framework kita mengenal dulu Elixir functional language, Elixir adalah bahasa pemrograman functional yang di build berdasarkan VM dari Erlang. Dan dibuat untuk memenuhi kebutuhan developing scalable system dan maintainable system.
Jika kamu ingin mengembangkan aplikasi yang selalu ada dan tersedia (high-availability), maka Elixir bisa menjadi pilihan yang bagus. Sebagai referensi, Erlang Virtual Machine masuk dalam nine nines reability yang membuat downtime-nya sangat rendah. Downtime-nya tidak sampai satu detik dalam setahun! Hampir tidak pernah crash. Sedari awal, Elixir dibangun dengan fitur toleran-kesalahan (fault-tolerance) yang memungkinkan menjalankan ulang proses yang mengalami kegagalan dalam ketika dijalankan. Setiap kode berjalan pada sebuah lightweight thread terisolasi yang disebut sebagai proses (process) dan berkomunikasi menggunakan pesan (messages). Resource: https://medium.com/phoenixir/kenapa-memilih-elixir-c628dabddc3b

Elixir memiliki Framework bernama Phoenix Framework untuk pengembangan Web, masih jarang yang menggunakan Phoenix Framework terutama di Indonesia namun Apabila anda mencari reability, Aplikasi Web Interaktif dengan less code, dan Real Time data. Maka Phoenix bisa menyajikan dengan sangat Baik.
Kelebihan yang diberikan Phoenix Framework:
1. Real Time
Interaksi dengan berbagai User yang dibuild dengan Phoenix dan tanpa ada kompleksitas untuk develop dari client side.
2. Di build dengan MVC yang rapi
MVC dibuld semudah mungkin dan dengan mudah untukdi maintainace.
3. Scalability
Phoenix menyediakan VM Erlang yang mana untuk membuat realtime data bisa dengan mudah tanpa harus menggunakan pihak ketiga.
Cara penggunaan:
Silahkan Buka Laman untuk versi Phoenix yang terbaru : https://hexdocs.pm/phoenix/Phoenix.html
Dalam Dokumentasi Phoenix memiliki struktur Modul yang rapi dan menurut saya lengkap diantaranya:
- Modul MVC
- Testing
- Adapter dan Plugin
- Socket dan Transport
- Templating
- Exception
Beberapa Contoh Penggunaan Phoenix Web Framework:
1. Build a real-time Twitter clone
Dalam Video ini akan menjelaskan langkah dan cara membuat Real Time Tweets Clone dengan menggunakan Phoenix Framework. Resource : Link
2. Realtime Chat

Realtime Chat sederhana Anda bisa melihat contoh berikut:
Phoenix Web Framework untuk komunitas masih belum sebesar Bahar bahas pemrogramn yang lain, namun Framework ini memiliki feature dan modul yang lengkap dilihat dari segi framework. Silahakan Anda coba mempelajari Phoenix Framework ini nanti Anda akan menumakn dimana simplenya Phoenix Web Framework. Berikut Link Utama Phoenix Framework: Link
Semoga Bermanfaat
Wassalamualaikum

Mengenal Bahasa Pemrograman Elm
Bahasa Pemrograman Elm adalah Bahasa pemrograman fungsional untuk Frontend atau User Interface yang kaya akan fungsi Visualisasi yang bersifat Deklaratif. Elm dibuat untuk pengguna Web Apps dengan fungsionalitas untuk 3D Graphic dan Data Visualisation. Dilihat dari Fungsi dan kinerja Elm sangat berguna untuk membuat Game atau Game Dev berbasis Web Apps yang sangat Interaktif. Elm sendiri rilis versi stabilnya pada 21 Oktober 2019 Elm V 0.19 .1 namun pengguna sudah banyak. Sebelum lebih lanjut ke Elm tentunya kita harus tahu dasar dari Html dan CSS ya karena di Elm akan diintegrasikan dengan HTML dan CSS agar lebih cantik, tenang HTML dan CSS hanya pemanis karena Elm sendiri sudah Manis. Belajar Elm sangat mudah apabila Anda sudah memahami Pemrograman Dasar.
Beberapa kelebihan Elm Sebagai Berikut:
1. No Runtime Exceptions.

2. Great Performance

3. Enforced Sematic Versioning

4. Small Assets

5. Javascript Interop

Beberapa Contoh Game Dibuat dari Elm
Snake
- Elm 0.19
- MartinSnyder/elm-snake – Implementation of classic game “Snake”. [play]
- amarantedaniel/snek – Another implementation of Snake. [play]
Previous Elm versions
- Elm 0.18
- remyferre/snake-elm – Snake game.
- rkrupinski/elm-snake – Snake game. [play]
- nwjlyons/snake – Classic game Snake. [play]
- ktonon/word-snake – Asynchronous word search game. [play]
- freiguy1/elm-snake – Snake game. [play]
- tibastral/elm-snake – Snake in WebGL and Html. [play]
- Elm 0.17
- remyyounes/elm-snake – Snake game. [play]
- bobobobo/elm-game-lab – Snake game. [play]
- remyyounes/elm-snake – Snake game. [play]
- Elm 0.16
- tatut/elmato – Snake Game. [play]
- rikukissa/elm-snake – Snake game. [play]
- franklsf95/smart-snake – Play the snake game or watch AI control the perfect snake.
- Elm 0.15
- liubko/elm-snake [doc] – A Snake game for the web browser. [play]
- Elm 0.14
- Chapter 14 Snake Revisited – Part of the elm-by-example book.
- Dead http://www.elmfiddle.io/view/ciohidiwb0000ittvijce7hy5
Tetris
- Elm 0.19
- TobiasWen/3DelmTRIS – 3D Tetris utilizing WebGL. [play]
- brandly/elm-dr-mario – A Dr. Mario Clone. [play]
- w0rm/elm-flatris – A Flatris clone. [play]
- Elm 0.18
- stil4m/elm-tetris – Tetris game.
- vishalgautamm/tetris-elm – Classic Tetris game.
- hoelzro/elm-tetris – A quick ‘n’ dirty implementation of Tetris.
- marcospri/elmtris – Basic implementation of tetris. [play]
- Elm 0.12
- jcollard/elmtris – A Tetris game for the web browser.
Breakout
- Elm 0.18
- granmoe/elm-brick-breaker – A stripped down brick breaker game. [play]
- Dobiasd/Breakout – A clone of the classical game for your browser. [play]
- hoelzro/elm-breakout – An implementation of Breakout.
- robbethencourt/elm-breakout – Atari 2600 Breakout clone. [play]
- Elm 0.17
- griffinmichl/elm-brickbreaker – Breakout Clone.
- Elm 0.12
Pong
Elm 0.19
- magopian/elm-pong – making of – [play]
- ukikagi/making-pong-in-elm – Pong based on the example from the Elm-lang website
Previous Elm versions
Elm 0.18
- pristap/pong – Pong written in Elm using Elmo-8. [play]
- davydog187/elm-pong – Pong based on the example from the Elm-lang website, with some additional features.
Elm 0.17
- pdamoc/Pong.elm – Pong Example.
Elm 0.16
Elm 0.13
- sonnym/elm-expressway_pong – Multiplayer pong using Node.js and Elm.
Making Pong Tutorial [doc] – Outdated (from 2012).
rmies/fp-ams-elm – Outdated (from 2015).
mitchellwrosen/elm-pong – Outdated (from 2013)
Mario
- Elm 0.18
- avh4/elm-mario – The Elm Mario example from the Elm-lang website. [play]
- Elm 0.17
- pdamoc/Mario.elm – Mario Example.
- Elm 0.13
- dackerman/elm-mario-2 – Modified mario game based on Evan’s Mario.elm example.
- Elm 0.12
- Evan’s Mario Example [resources] – Original example for mario in elm.
Tic Tac Toe
- Elm 0.19
- pwadsworth/TicTacElm – Simple Tic Tac Toe to test-drive Elm language features.
- jjst/ultimate-tictactoe – Tic Tac Toe Clone. An implementation of ultimate tic-tac-toe in Elm.
- multiple authors – [play]
- brslv/elm-ttt – Tic Tac Toe with video of the creation process https://www.youtube.com/watch?v=XSTtUjPjJzg
- Elm 0.18
- AllanNozomu/TicTacToe – Tic Tac Toe Clone.
- franckverrot/tictactoe-elm – Tic Tac Toe game. [play]
- vishaltelangre/elm-tic-tac-toe – Tic Tac Toe game. [play]
- ZeusTheTrueGod/elm-tictactoe – Tic Tac Toe Clone. [play]
- Elm 0.17
- davefancher/ElmTicTacToe – A simple tic tac toe game.
- jah2488/elm-ttt – Tic Tac Toe Clone. [play]
- pel-daniel/elm-tictactoe – Tic Tac Toe Clone. [play]
- davydog187/elm-tic-tac-toe – Tic Tac Toe Clone.
- amcsi/elm-tic-tac-toe – Tic Tac Toe Clone.
- Elm 0.16
- localshred/tic-tac-toe – Tic Tac Toe Clone.
- Chapter 12 Tic Tac Toe – Part of the elm-by-example book. Outdated (from 2015).
Space Invaders
- Elm 0.19
- gege251/space_invaders – Space Invaders game in Elm.
- Elm 0.18
- Genetic Space Invaders game – A functional game written in Elm about classic space invaders game evolved with a genetic algorithm. [play]
- Elm 0.16
- ohanhi/elmvaders – Simple Space Invaders inspired game. [play]
- Elm 0.13
- Pew Pew – A space shooter game.
Memory
- Elm 0.18
- alpacaaa/elm-memory-game – Memory game. [doc]
- DaZzz/melmory-game – Memory game.
- Magic Match – Memory game. [play]
- Pairs.one – A neat multiplayer online memory/concentration game. [play]
- Elm 0.16
- simonewebdesign/elm-memory-game – Memory Game.
- simonewebdesign/elm-simon – Memory Game.
- Elm 0.15
- Nazanin1369/elm-memoryGame – Memmory Game. Memory game using Elm. [play]
- Cape Match – A little web game written in Elm (with some Haskell). [play]
Asteroid
- Elm 0.17
- Elmsteroids – A non-trivial Asteroids clone. [play]
- Elm 0.16
- AppSynergy/asteroids – The classic asteroids game.
- Destroid – A space shooter based on the classic Asteroids.
Pac Man
- Elm 0.18
- abadi199/elman – Pac Man Clone. [play]
- duckmole/elm-pacman – Coding-Dojo : Pacman in ELM.
Minesweeper
- Elm 0.19
- SidneyNemzer/casual-minesweeper – Minesweeper with an undo button. [play]
- Elm 0.18
- CarstenKoenig/ElmSweeper – minesweeper game. [play]
- lydell/elm-minesweeper – The classic game MineSweeper. [play]
- roSievers/elm-sweeper – Elm Sweeper aims to reimplement the puzzle mechanics of Hexcells as a web application. [play]
- brandly/elm-minesweeper – Classic Minesweeper. [play]
- Elm 0.16
- mikegehard/elm-minesweeper – A minesweeper game. [play]
Roguelike
- Elm 0.19
- Dig Dig Boom – Roguelike with breakable walls. [play]
- Elm 0.18
- mordrax/cotwelm – Remake of Castle of the Winds in Elm. [play]
- Elm 0.13
- deadfoxygrandpa/Roguelike – A roguelike.
- sindikat/roguelike – Roguelike draft for testing Elm’s Graphics.Collage performance.
Classic Card & Board Game
- Elm 0.19
- kburton/elm-yahtzee – An implementation of the dice game Yahtzee written in elm. [play]
- RobStallion/chess-elm – Trying to create a chess game in elm.
- Elm 0.18
- Depths – Casual, single-player strategy game.
- topher6345/blackjack-elm Blackjack Card Game. [play]
- arielger/elm-bingo – Bingo Game. [play]
- seandavidross/elm-haggis – A climbing card game.
- Lattyware/massivedecks – A Cards Against Humanity clone. [play]
- alpacaaa/elm-mastermind – Mastermind game written in Elm. [doc]
- Doubleheader – A multiplayer web version of the popular German card game “Doppelkopf”.
- Ring of Worlds – Ring of Worlds: Multiplayer card game written in Haskell and Elm. [play]
- girishso/indian-chess – Multiplayer 18th Century chess like game. [play]
- jinjor/elm-reversi – Reversi Clone. [play]
- cbenz/elm-bridge-game – Experimentations in Elm around Bridge card game using French standard. [play]
- Elm 0.17
- vanwagonet/elm-chess – Chess Game.
- CarstenKoenig/ElmOthello – Reversi Clone. [play]
- inderps/reversi-game-in-elm – Reversi Game.
- Diamondback Railroad – Demonstrates a game engine for a visually-pleasing 2-D game. [play]
- bigardone/phoenix-elm-battleship – battleship clone built with Elixir, Phoenix, and Elm. [play]
- Elm 0.16
- infeo/elm-ninemensmorris – Nine men’s morris Clone.
- Elm 0.15
- Kalevala – A tile-laying game for two players inspired by the board game Völuspá by Scott Caputo. [play]
- Checkerboard Grid Tutorial – Tutorial on Container Components in Elm.
- Elm 0.13
- grzegorzbalcerek/chess-elm – The game of Chess written in Elm.
Real-Time Strategy
- Elm 0.19
- Herzog Drei – RTS game based on Herzog Zwei. [play]
- DRTS Game [play]
Puzzle Games
- Elm 0.19
- m-masataka/elm-puyo – An implementation of the Puyo Puyo [play]
- stepheneb/elm-2048 – 2048 Clone [play]
- darrensiegel/elm-chess – Human vs computer chess game.
- lieberkind/sokoban – An implementation of the Sokoban game from Windows 3.x. [play]
- brian-watkins/mindmaster – Code Breaking Game in Elm.
- Seeds Game – A connect the dots game with seeds. [play]
- battermann/elm-samegame – SameGame clone. [play]
- johncrane/perfect-flood – Drag and drop flood fill game. [play]
- jwbrew/elm-puzzler – puzzle framework, there’s a naieve implmentation of noughts and crosses
- vViktorPL/is-it-my-cow – “Is it my cow?” – find your cow by it’s unique patches pattern. [play]
- Janiczek/river-crossing – River Crossing – Wolf, goat and cabbage … [play]
- O-O-Balance/pairs – Pairs – matching animals [play]
- Elm 0.18
- dam5s/mastermind – Mastermind Clone.
- maorleger/mastermind – Interactive Mastermind solver algorithm. [play]
- girishso/elm-lights-out – Light out clone. [play]
- Juzley/elm-net – Puzzle Game. This is an implementation of the Net puzzle game. [play]
- Drug Wars – arbitrage game. [play]
- campezzi/elm-fifteen – 15 Puzzle Clone. – [play]
- ufocoder/sokoban – Sokoban game.[play]
- ipavelpetrov/elm-floodit – Flood It Game. [play]
- G4BB3R/SokobanElm – Remake of the classical game Sokoban in Elm.
- zindel/game2048elm – 2048 Clone.
- w0rm/elm-cubik – This is an implementation of the Rubik’s cube puzzle in the Elm language using WebGL. [doc] [play]
- jeanettehead/lady-boggle – Boggle Clone. [play]
- Sokoban Player – Sokoban Player provides best experience to play any sokoban level you want! [play]
- w0rm/elm-nim – A live-coded implementation of the Nim game in Elm as done at Berlin Frontend Meetup. [doc]
- ssimono/hexliterate – Multi-player game where one can test their ability to guess a color hex code. [play]
- Elm 0.17
- marcosh/elm-hanoi – Hanoi tower Clone.
- ElmLive/lights-out – Light’s Out Clone. [doc]
- Elm 0.16
- erich-9/elm-sudoku – Sudoku. [play]
- Paint The Town Red – Coloring game. [play]
- Elm 0.15
- adzeitor/tis-100 – tis-100 sandbox clone. [play]
- gdeb/elm-sokoban – Sokoban Clone.
- Elm 0.12
- maxsnew/Scramble – Word Scramble Game. [play]
Racing Game
- Elm 0.18
Tools
- Elm 0.18
- hex grid pathfinding package – A hex-grid package for elm.
- Elm 0.17
- tile editor – A tilemap editor built with elm.
Miscellaneous
- Elm 0.19
- harbingerr/Elm-Game – 2D logic board game [play demo]
- danneu/elm-mmo – MMO RPG Game. MUD-like multiplayer game over websockets.
- mpizenberg/elm-videoball – Videoball clone. Minimalist elm implementation of the game videoball. [play]
- anicholson/elm-hangman – A hangman game.
- Vim Adventures in Elm – Dungeon Crawler. Vim Adventures game in Elm. [play]
- NuAshworld – MMO RPG Game. A game in the vein of the (not playable anymore) Fallout-themed PBBG “Ashworld”. [play]
- Bike-Wars – Tron clone. Bike Wars is a two-player local multiplayer game where each player controls a Light Bike (like the ones in Tron) and tries to survive the longest.
- Mogee – Platformer game. A WebGL platformer that fits into 64x64px screen. [doc] [play]
- sonnym/scorched – Turn-based artillery game. A clone of Scorched Earth.
- JordyMoos/elm-pixel-boulder-game – Boulder Dash Clone. A bit “out-of-hand” experiment to write a game in a pure functional language. [play]
- wolfadex/slime-buddy – get new slime, feed it and play with it. [play]
- lwiedema/kalah-game-elm – Kalah: Two-Player Board Game. [play]
- BKSpurgeon/numberCounter Number Counter: A search and click game: [play]
- w0rm/elm-garden-of-eels – Garden of Eels: Help eels to eat the right kind of plankton: [play]
- JoelQ/ecosystem – Ecosystem: Attempt to balance an ecoystem: [play]
- hasuya1120/forest_maze – Forest maze: escape randomly generated labyrinth [play]
- tnyo43/kirin-rhythm – kirin rhythm: Feed your giraffe at the tempo of fallen leaves! [play]
- robvandenbogaard/giraffe – Giraffe [play]
- jlengrand/sheepgame – The Sheepgame [play]
- miyanokomiya/the-defence-force-19 – The Defence Force 19 [play]
- negiboudu/roly-poly – roly-poly [play]
- Elm 0.18
- listrophy/space_elm – Spaceship Game.
- Fedreg/elmkc-simon – Simon Says Clone. [play] [play]
- Wordy – Spelling Game. A clone of an iOS game called Worder.
- Obscura – Simulation. You are a ghost in a dark universe governed by math and peopled by dullards. [play]
- Village – incremental game. [play]
- lucashm/elmstroyer – Spaceship Game.
- sd0s/elm-gallows – Hangman Game. Elm UI for Hangman game.
- naymspace/elm-bowling-game-kata – This is an adaption of Uncle Bob’s Bowling Game Kata.
- Retrorace – Racing Game. A multiplayer game where the aim is to be the first to reach the top of the screen. [play]
- cjen07/gobblet-gobblers – Gobblet Gobblers Clone. [play]
- The Adventures of Jack O’Lantern – Platform game.
- Constellations – Planarity-inspired Game. [play]
- damien-theuveny/whack-a-fraudster – Whack a Mole Clone.
- xyc0562/editor-maze – Maze Game.
- crazymykl/elm-drench – Drench Clone. [play]
- xpilot.io – Spaceship Game. a simple xpilot-like game. [play]
- billstclair/mineplace – Maze Game. A simple networked 2.5D maze game. [play]
- Boxuuume – Platformer Game. A school project. [play]
- Janiczek/dwarves – Minimal Dwarf Fortress-like behaviour in Elm. [play]
- alpacaaa/elm-star-dodge – Dodge Game. A simple star dodge game clone.
- puemos/elm-hangman – Hangman Clone. The game of Hangman. [play]
- jamonholmgren/rocket-elm – Spaceship Game. A small game where you pilot a rocket ship around.
- stephenbalaban/Gravity – Physic Simulation. An orbital simulation game written in Elm. [play]
- joelchelliah/elm-rex – Chrome’s offline T-rex game written in Elm. [play]
- WeAreWizards/elm-rocket-lander– Rocket lander Game. A simple rocket lander game written in Elm
- Sweet Sweet Friction – Arcade Game. A Gimme Friction Baby clone. [play]
- Elm Street 404 – Pathing Game. Deliver all the fashion to all the customers. [play]
- Safe Tea – Tower Defense. Pirate-themed tower defense game for the Feb 2018 Elm Game Jam. [play]
- eniac314/elmGol – Celluar Automata. Conway’s Game of Life.
- fbonetti/elm-game-of-life – Celluar Automata. Conway’s Game of Life.
- jamonholmgren/rocket-elm – Spaceship Game. A small game where you pilot a rocket ship around.
- bahalperin/planeshift
- rommsen/elm-dots-and-boxes Multiplayer Dots and Boxes. [play]
- stefankreitmayer/elm-joust Fighting game. A minimalistic action game. [play]
- tibastral/elm-koala
- brandly/elm-slime-volleyball – Gravity based game. try to beat the blue slime at volleyball. [play]
- Down the River – Frogger Clone. Roman mythology themed game with procedural generation. [play]
- https://github.com/wolfadex/dodge/ – A simple duck and dodge game, avoid the falling objects as long as possible. [play]
- elm-shooter – A side scrolling shooter game. [play]
- Elm 0.17
- alexspurling/simonsays – Simon Says Clone. [play]
- Bee – Top Down Game. [play]
- Hexagons – Top Down Game.
- ryannhg/seven-seas-elm – Sailing Game.
- gentoid/sea-battle-elm – Battleship Clone. “Sea Battle”.
- LetterSmash – Multiplayer Game. A multiplayer LetterPress game in Elixir, Phoenix and Elm. [play]
- iojichervo/Generic-Elm-Platform-Game – Platformer Game. [play]
- Elm Practice 11 – Space Ship Game. the user must collect resources orbiting a planet and overcome the difficulty of maintaining good orbits! [play]
- Jan – Rock Paper Scissors Clone. A rock paper scissors game written in Elixir and Elm. [play]
- Melted Synapse – Fighting Game. A turn-based game written in Elm that explores Frozen Synapse’s game mechanics [play]
- danneu/elm-space-arena – Space Shooter. A sloppy 2D spaceship shooter. [play]
- https://github.com/krisajenkins/transcodegame – Point&Click Adventure. A point & click adventure written. [play]
- cabaret/elm-supercrypt – Decryption Game. Elm implementation of SuperCrypt.
- krisajenkins/wireworld – Cellular automata. The WireWorld Cellular Automata.
- Elm 0.16
- kurtharriger/elm-battleship – Battleship Game.
- Grodan – Frog Game.
- rainbowbismuth/elm-turn-based-battle – A turn based browser game written in Elm.
- run-time/elm-ui-rocks – Rock Paper Scissors Game. Elm-UI Rock, Paper, Scissors game. [doc]
- Starsystem – spaceship game.
- robinpokorny/elm-hangman – Hangman clone. [play]
- Infinite Monkey Incremental – Incremental Game. An incremental game inspired by the Infinite Monkey Theorem [play]
- jvoigtlaender/labyrinth-elm – Arcade Game. A Pac-Man clone.[play]
- fbonetti/clicker-game – Incremental Game. Cookie clicker clone.
- Elm Plane – Autoscroller. A flappy bird clone written in elm. [play]
- Elm 0.15
- JoelQ/elm-platformer – Platformer Game. [play]
- robertjlooby/elm-bowling-game-kata – The bowling game kata.
- Salem – Sailing Game. [play]
- camspiers/elm-redchaser – Chasing Game. [play]
- celestia – Spaceship Game. Celestia is a two-dimensional cartoon space game. [play]
- avh4/wire-game – Network topology game.
- basti1302/elm-turing-machine-game – Turing machine game.
- krisajenkins/infinite-runner – Autoscroller. A 90 Minute Infinite-Runner hack. [play]
- krisajenkins/lunarlander – Rocket Lander Game. A Lunar Lander clone. [play]
- Elm 0.14
- Vessel – Autoscroller. A “tunnel” game. [play]
- bamboo/take-the-blue-pills – Item Collecting Game. Take the blue pills Elm tutorial.
- Elm 0.12
- GoranM/bluepill – A small avoider game, written in Elm.
- mgold/Sequence-Maze – Educational Game. A game for small children. Outdated (from 2014).
- Lopi/HackMan – Hacking Game. A game to teach users about security and penetration testing. Outdated (from 2015).
- sonnym/petrov – Red Button Game. Don’t press the button. [play]
- monsieurcactus/LearnElm A collection of one-file games.
- nyoronyoro A multi-player game in Elm play
Dilihat dari Contoh diatas bermacam macam game berbasis Web yang menggunaan Bahasa pemrograman Elm, tidak hanya untuk Game tentunya juga digunakan untuk landing page dll untuk mempercantik Website. Apabila Anda tertarik dengan Elm silahkan untuk mempelajari langsung di portal Web nya : Link. Akan banyak sekali contoh yang bisa Anda gunakan untuk belajar lebih lanjut.
Semoga Bermanfaat
Wassalamualaikum

Framework Performance untuk Developer
Performance adalah pilihan bagi pengguna framework, di artikel kali ini saya akan menyajikan beberapa pilihan yang mungkin bisa anda gunakan untuk menentukan framework yang akan anda gunakan.
Realworld adalah salah satu repository yang menyediakan perbandingan pengguna asli dari suatu framework. Realword sudah mendapat binta sebanya 45.2 K dan tentunya masih akan terus bertambah untuk meningkatkan performance sharing to sharing developer. Dari sini akan terlihat mana framework backend maupun frontend yang sering digunakan, juga tentunya bisa digunakan sebagai acuan untuk menentukan envorinment adalam suatu system.
Berikut Peringkat Pengguna asli Frontend.
Sorted by popularity on Sun Jul 19 2020
Berikut Peringkat asli engguna Backend
Sorted by popularity on Sun Jul 19 2020
Tentunya pengguna juga harus mengetahui patokan dalam menentukan ekosistem yang akan dibuat disni kita bandingkan adalah Framework.
1. Performance
Performance dilihat dari seberapa banyak orang atau End User menggunakan Aplikasi dan di build dari framework tertentu dan seberapa bagus feedback dari enduser.

Untuk nilai diatas 90 akan terasa perbedaan dengan yang dibawahnya.
2. Size
Transfer Size bisa di analitik menggunakan inspect element di browser dengan melihat Network dengan melihat GZIPed transfer response dan lama Deliver dari server.
Walaupun semakin banyak library yang digunakan bisa menjadi semakin lama load size nya, namun semakin baik coding maka seharunya library yang tidak berguna tidak boleh di load.

Semakin kecil ukuran file maka semakin cepat download page.
Kesimpulan
Semakin kecil load file coding maka semakin cepat. Svelte menjadi nomor satu karena memiliki Langkah yang keren load tanpa virtual DOM jadi sangat cepat
3. Line Code
Lone Code menunjukkan betapa ringkasnya library / framework / bahasa yang diberikan. Berapa banyak baris kode yang Anda perlukan untuk diterapkan di aplikasi yang sama.

Kesimpulan
Pada dasarnya semua framework bagus, namun didunia kerja kecepatan pengerjaan sangat menentukan. Jadi adanya framework sangatlah membantu, beberapa refrensi diatas saya harap bisa membantu anda para pembaca agar lebih eksplor lagi dan belajar lagi sehingga bisa mengatahui framework terbaik apa yang cocok untuk system Anda.
Wassalamualaikum

Otentikasi praktis dengan Passport JS
Otentikasi pasti digunakan di aplikasi berbasis Web, membuat otentikasi harus ada fungsi sendiri untuk login. di artikel ini akan saya kenalkan otentikasi praktis dengan menggunaan Passport JS. tentunya sebelum lebih dalam silakan pelajari Node JS dan Express JS terlebih dahulu untuk menggunakan Passport JS. Passport JS di GIT sudah mendapatkan 17 Ribu lebih bintang dan sudah digunakan banyak devloper, tentunya sudah sangat stabil unutuk digunakan dalam sebuah projek atau produk baru.
Apa itu Passport JS?
Passport JS adalah otentikasi middleware untuk Node.js. Sangat fleksibel dan modular, Passport dapat dengan mudah digunakan untuk aplikasi web berbasis framework Express JS. Seperangkat strategi komprehensif mendukung otentikasi menggunakan Username dan Password, Facebook, Twitter, dan lainnya.
Security Token dengan JSON Web Token (JWT)
JSON Web Token (JWT) adalah sebuah token berbentuk string panjang yang sangat random yang gunanya sendiri untuk melakukan sistem Autentikasi dan Pertukaran Informasi. Umumnya untuk melakukan login tidak seperti pada aplikasi website biasa dimana kita menggunakan session untuk mengingat siapa yang sedang Login. untuk informasi lebih lengkapnya silakan kunjungi link berikut jwt.io.
Ada banyak modul yangbisa digunakan untuk Otentikasi di Passport JS namun yang akan kita bahas kali ini hanya modul yang paling banyak digunakan.
1. Modul Otentikasi Local
Modul otentikasi Local adalah mekanisme yang sering digunakan yaitu dengan Username dan Password.
Berikut cara menggunakannya:
Install
$ npm install passport-local
Konfigurasi
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
Konfigurasi untuk argument Usernam dan password callback yang mana di submit menggunakan form submit.
Form
<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<input type="submit" value="Log In"/>
</div>
</form>
Route
Route untuk handle form submit dari form dengan metode POST. Menggunakan class authenticate() dari modul passport-local.
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login',
failureFlash: true })
);
Setting redirect apabila sukes maka successRedirect,apabila gagal login maka failureRedirect, dana apabila error flash maka set flashfailure ke true.
2. Modul Otentikasi OpenID
OpenID adalah standar otentikasi gabungan dengan seubah situs website. Saat mengunjungi situs web, pengguna bisa menggabungkan cara login dengan OpenID mereka untuk login. Pengguna kemudian mengautentikasi dengan penyedia OpenID yang mereka pilih, yang mengeluarkan pernyataan atau izin untuk mengonfirmasi identitas pengguna. Situs web akan memverifikasi pernyataan ini untuk login user.
Install
$ npm install passport-openid
Konfigurasi
Ada 2 parameter di OpenID yang harus dipahami yaitu reuturnURL dan realm. returnURL adalah URL yang akan diarahkan dari provider OpenID dan digunaan untuk otentikasi. Realm adalah redirect dari website kia sendiri apabila success untuk login menggunakan OpenID.
var passport = require('passport')
, OpenIDStrategy = require('passport-openid').Strategy;
passport.use(new OpenIDStrategy({
returnURL: 'http://www.example.com/auth/openid/return',
realm: 'http://www.example.com/'
},
function(identifier, done) {
User.findOrCreate({ openId: identifier }, function(err, user) {
done(err, user);
});
}
));
Parameter Identifier adalah indentifikasi apakah user memberi izin untuk informasi diri digunakana untuk webtie yang digunakan untuk login.
Form
Form yang digunakan untuk OpenID dan login di web page.
<form action="/auth/openid" method="post">
<div>
<label>OpenID:</label>
<input type="text" name="openid_identifier"/><br/>
</div>
<div>
<input type="submit" value="Sign In"/>
</div>
</form>
Route
Route untuk OpenID ada 2 yaitu untuk cek OpenID dari provider dan untuk redirect OpenID login dengan web route dari website yang ingin kita untuk login.
// Accept the OpenID identifier and redirect the user to their OpenID
// provider for authentication. When complete, the provider will redirect
// the user back to the application at:
// /auth/openid/return
app.post('/auth/openid', passport.authenticate('openid'));
// The OpenID provider has redirected the user back to the application.
// Finish the authentication process by verifying the assertion. If valid,
// the user will be logged in. Otherwise, authentication has failed.
app.get('/auth/openid/return',
passport.authenticate('openid', { successRedirect: '/',
failureRedirect: '/login' }));
Profile Exchange
OpenID menyediakan profile exchange dimana website provider bisa menyediakan profile pengguna untuk website lain. Profile exchange bisa diaktifkan dengan sett parameter ptofile ke true.
passport.use(new OpenIDStrategy({
returnURL: 'http://www.example.com/auth/openid/return',
realm: 'http://www.example.com/',
profile: true
},
function(identifier, profile, done) {
// ...
}
));
3. Modul Otentikasi Oauth
Oauth adalah protocol authorize yang digunakan untuk akses API dari pihak ketiga yang bisa digunakan untuk login di berbagai platrform. Untuk lebih lengkap silakan pelajari di https://oauth.net/.
Install
$ npm install passport-oauth
Konfigurasi
Dalam Oauth terdapat informasi yang harus dipenuhi diantaranya token, accessToken, authorize, key, secret, dan callback. Tentunya Oath juga bisa berbagi User Profile sesuai dengan izin dair provider dengan mengakifkan parameter profile.
var passport = require('passport')
, OAuthStrategy = require('passport-oauth').OAuthStrategy;passport.use('provider', new OAuthStrategy({
requestTokenURL: 'https://www.provider.com/oauth/request_token',
accessTokenURL: 'https://www.provider.com/oauth/access_token',
userAuthorizationURL: 'https://www.provider.com/oauth/authorize',
consumerKey: '123-456-789',
consumerSecret: 'shhh-its-a-secret'
callbackURL: 'https://www.example.com/auth/provider/callback'
},
function(token, tokenSecret, profile, done) {
User.findOrCreate(..., function(err, user) {
done(err, user);
});
}
));
Route
Route untuk Oauth ada 2 yaitu untuk Provider dan untuk websisete pengguna Oauth. Yang pertama untuk trasaksi denga provider sendangkan yang kedua untuk menyediakan data untuk website pengguna Oauth.
// Redirect the user to the OAuth provider for authentication. When
// complete, the provider will redirect the user back to the application at
// /auth/provider/callback
app.get('/auth/provider', passport.authenticate('provider'));// The OAuth provider has redirected the user back to the application.
// Finish the authentication process by attempting to obtain an access
// token. If authorization was granted, the user will be logged in.
// Otherwise, authentication has failed.
app.get('/auth/provider/callback',
passport.authenticate('provider', { successRedirect: '/',
failureRedirect: '/login' }));
Link Oauth.
Di web page harus ada button utuk proses Oauth berikut contoh link yang bisa digunakan:
<a href="/auth/provider">Log In with OAuth Provider</a>
Kesimpulan
Masih banyak modul atau srategi yang bis digunakan Passport JS diantaranya yang banyak digunakan ada alah: Modul Otentikasi Oauth 2.0, Modul Otentikasi Oauth Profile FB, Modul Otentikasi Oauth Twitter dan Modul Otentikasi Oauth Google. Otentikasi dapat digunakan secara praktis dan tentunya aman dan juga pengerjaan akn lebih cepat dengan adanya modul Otentikasi yang mudah dimengerti. untuk mempelajari lebih dalam lagi silakan explore Jode JS, Express JS dan Passport JS.
Berikut Link untuk belajar Pasport JS: Klik Disini
Semoga Bermanfaat
Wassalamualaikum