com
Kisi-kisi LKS Nasional Tahun 2023 Bidang LombokTeknologi Web
Isi
1. MODULE_SPEEDTEST.docx
2. MODULE_SPEEDTEST_MEDIA.zip
Buatlah diagram garis dari data yang disediakan dalam file media. Kanvas harus
berukuran 600x400 dan berada di tengah browser secara vertikal dan horizontal.
Label vertikal, label horizontal, dan garis harus ada di dalam layar.
C3. Cakupan
Anda perlu membuat teks berukuran layar penuh yang tersembunyi, dan kotak berukuran 400x400 di atasnya.
Pengguna tidak dapat melihat teksnya, tetapi mereka dapat melihatnya melalui kotak. Kotak tersebut dapat
dipindahkan oleh pengguna dengan cara menyeretnya. Lihat example.mp4 untuk lebih jelasnya.
D1. Penginternasionalan
Disediakan file json bahasa, Anda perlu menerjemahkan kata-kata yang ada di file HTML
tersebut menggunakan PHP. Ada formulir pilihan di mana pengguna dapat mengubah
bahasa situs web.
Dengan menyediakan file JSON dari pesan pengguna, Anda perlu membuat analisis dari
pesan yang dikirim yang terdiri dari:
- 5 kata terkirim teratas
- Total pesan terkirim
- Total pesan yang diterima
- Rata-rata panjang karakter yang dikirim
- Rata-rata panjang karakter yang diterima
Contoh:
MODUL CMS
ISI
Modul ini memiliki file-file berikut:
1. MODULE_CMS.doc
2. MODULE_CMS_MEDIA.zip
Perkenalan
Pada tahun 2022, sebagian besar masyarakat akan lebih memilih menonton film secara online
dibandingkan pergi ke bioskop. Streaming film online memberikan banyak manfaat bagi pengguna dan
layanan streaming. Ini murah dan dapat diakses lintas platform tanpa harus khawatir tentang harga
berlangganan.
Anda adalah seorang pekerja lepas yang bekerja di bidang Teknologi Web dan Anda telah diminta untuk
mengembangkan situs web baru untuk situs web streaming anime yang disebut “Animer”. Klien Anda
telah mendengar bahwa Anda pandai membangun sistem manajemen konten. Mereka menginginkan
tema yang disebut “AnimerV1”
Juga halaman login tidak boleh menyertakan “wp” Kata-kata untuk latar belakang putih harus
berupa label layar penuh dan alasan keamanan. Silakan buat URL admin backend sebagai berikut:
<tuan rumah>/admeen/
Menu
Menu ini akan muncul di setiap halaman. Klien ingin dapat mengubah menu secara
dinamis melalui halaman admin.
● Rumah
● Daftar Anime
● Genre (daftar genre dropdown)
● Musim (daftar musim dropdown)
● Artikel
Konfigurasi Dasbor
Untuk mempermudah, klien hanya ingin menampilkan beberapa widget di halaman dashboard.
Terdiri dari Sekilas, Aktivitas, Draf Cepat.
Mengelola anime
Klien ingin dapat membuat, mengedit, memperbarui, menghapus rekaman anime. Kolom
yang harus ditampilkan di setiap anime adalah: judul, sinopsis, tanggal rilis, rating, dan
jumlah episode.
Genre Anime
- Tindakan
- Komedi
- Olahraga
- Percintaan
Musim Anime
- Musim Dingin 2022
- Musim panas 2022
- Musim semi 2022
- Musim gugur 2022
Fungsionalitas Anime
Di halaman semua anime, pengguna dapat memilih untuk mengurutkan anime berdasarkan jumlah penayangan atau judul anime, atau
tanggal rilis. Pengguna juga dapat memilih untuk memfilter berdasarkan musim atau genre.
Halaman detail anime akan ditampilkanjudul, sinopsis, tanggal rilis, rating rata-rata,
jumlah episode,link ke setiap episode, dan kumpulan foto (galeri) anime terkini.
Admin atau editor dapat menampilkan galeri melalui shortcode [galeri anime
identitas=GALERI_ID]. Jumlah penayangan akan bertambah setiap kunjungan halaman pada detail anime
halaman.
Pengguna dapat memberikan ratingnya sendiri berdasarkanmengklik salah satu dari lima bintang. Anda perlu membuat
fungsi pemeringkatan.
Fungsi Episode
Disetiap episode anime pasti ada masukan link video youtubenya yang harus admin isi.
Di halaman episode, tautannya harus diubah menjadi video tersemat yang dapat diputar
pengguna. Tautan kekembalike halaman detail anime harusnya ada.
Persyaratan Front-end
Anda perlu membuat tema Anda sendiri, berdasarkan tema awal yang diberikan. Anda
perlu menerapkan elemen berikut untuk halaman web Anda:
● Catatan kaki dengan hak cipta dan tautan media sosial Hai
“Hak Cipta © 2022 - Hak cipta dilindungi undang-undang” dimana tahun harus menjadi
tahun berjalan secara dinamis berdasarkan waktu server.
Hai3 tautan media sosial. Pengguna dapat mengubah tautan untuk setiap
tautan sosial.
Jangan ragu untuk menambah dan mengubah elemen sebanyak yang Anda suka, namun elemen dalam
daftar harus ada dan desain Anda harus menyatu dengan desain yang diberikan.
Halaman tersebut perlu dioptimalkan untuk mesin pencari. Anda dapat memilih salah satu plugin yang
disediakan atau menerapkan SEO Anda sendiri. Ingatlah untuk mengoptimalkan bagian tertentu dari situs web
Anda (misalnya url, peta situs,…). Amankan halaman Anda dengan menginstal dan mengonfigurasi plugin
keamanan.
Catatan: Jika plugin yang ingin Anda pilih rusak atau tidak berfungsi seperti yang diharapkan,
Anda harus memilih plugin lain atau silakan memperbaiki plugin ini.
Untuk folder yang berfungsi, Anda perlu memberi nama folder Anda menjadi “/CMS_MODULE”.
Perkenalan
Perusahaan Anda “Formify Inc.” mengarahkan Anda sebagai Pengembang Web untuk membangun situs web
yang memungkinkan pengguna membuat formulir secara dinamis sesuai dengan jenis pertanyaan seperti
jawaban singkat, paragraf, masukan tanggal, pilihan ganda, dropdown, dan kotak centang. Pengguna yang
membuat formulir dapat membagikan link formulir kepada pengguna untuk mengirimkan respons formulir
dan juga melihat semua respons.
Deskripsi Proyek
Ada 2 fase dalam modul ini. Tahap pertama, Anda akan membuat RESTFul API menggunakan
Laravel Frameworks sesuai dokumentasi yang disediakan. Pada tahap kedua, Anda harus
membangun frontend dengan Peta Interaktif menggunakan salah satu Kerangka Javascript
yang disediakan (React/Vue/Angular) dan datanya harus berasal dari RESTFul API yang
dibuat.
Anda dapat menemukan file media yang disediakan untuk mendukung pekerjaan Anda:
1. Otentikasi
Anda harus membuat titik akhir Login dan Logout. ItuaccessToken harus
dibuat oleh sanctumdan akan ditempatkan di header permintaan
Pembawa Otorisasi.
Gabung
metode : POS
Validasi : surel:
- diperlukan
- alamat email yang sah
kata sandi:
- diperlukan
- minimal 5 karakter
Tubuh (JSON):
{
"pesan": "Login berhasil",
"pengguna": {
"nama": "Pengguna 1",
"email": " pengguna1@webtech.id ",
"accessToken":
"1|QnHFgF0C7ml2LkbDG5QDn34qvJoYGdpxoXy63Poi"
}
}
Tubuh (JSON):
{
"pesan": "Bidang tidak valid",
"kesalahan": {
"surel": [
"Email tersebut harus berupa alamat email yang valid."
],
"kata sandi": [
"Bidang kata sandi wajib diisi."
]
}
}
Jika gagal:
Tajuk:
- Status respons: 401
Tubuh (JSON):
{
"message": "Email atau kata sandi salah"
}
Keluar
Titik akhir : [DOMAIN]/api/v1/auth/logout
metode : POS
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"message": "Logout berhasil"
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
2. Bentuk
Pengguna dapat mengelola (membuat, melihat semua formulir yang dibuat, dan melihat detail formulir) dengan pertanyaan
untuk dibagikan kepada pengguna yang diundang berdasarkan domain email yang akan dikirimkan.
Buat Formulir
Titik akhir : [DOMAIN]/api/v1/forms
metode : POS
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"name": "Tumpukan Anggota Teknologi Web",
"slug": "tumpukan anggota",
"allowed_domains": [ "webtech.id" ], "description": "Untuk
mengumpulkan semua tumpukan favorit", "limit_one_response":
true
}
Validasi : nama:
- diperlukan
siput:
- diperlukan
- unik
- alfanumerik dengan karakter khusus hanya tanda hubung “-” dan titik
“.” dan tanpa spasi
domain_yang diizinkan:
- Himpunan
Tubuh (JSON):
{
"message": "Buat formulir sukses", "form": {
Tubuh (JSON):
{
"pesan": "Bidang tidak valid",
"kesalahan": {
"nama": [
"Bidang nama wajib diisi."
],
"siput": [
"Siputnya sudah diambil."
],
"domain_diizinkan": [
"Domain yang diizinkan harus berupa array."
]
}
}
Tubuh (JSON)
{
"message": "Tidak diautentikasi."
}
Keterangan : Bagi pengguna untuk mendapatkan semua formulir yang mereka buat
metode : MENDAPATKAN
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"message": "Dapatkan semua formulir sukses",
"forms": [
{
"id": 1,
"name": "Biodata - Anggota Teknologi Web",
"slug": "biodata",
"description": "Untuk menyimpan anggota teknologi
web..", "limit_one_response": 1,
"id_pencipta": 1
},
{
"id": 2,
"name": "Keterampilan HTML dan CSS - Kuis",
"slug": "htmlcss-quiz",
"description": "Uji web dasar", "limit_one_response":
1,
"id_pencipta": 1
},
{
"id": 3,
"name": "Tumpukan Anggota Teknologi Web",
"slug": "tumpukan anggota",
"description": "Untuk mengumpulkan semua favorit..",
"limit_one_response": 1,
"id_pencipta": 1
}
]
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
Formulir Detil
metode : MENDAPATKAN
Meminta : -
Tubuh (JSON):
{
"message": "Dapatkan formulir berhasil",
"formulir": {
"id": 1,
"name": "Biodata - Anggota Teknologi Web",
"slug": "biodata",
"description": "Untuk menyimpan data anggota teknologi web",
"limit_one_response": 1,
"id_pencipta": 1,
"domain_diizinkan": [
"webtech.id"
],
"pertanyaan": [
{
"id": 1,
"form_id": 1,
"nama": "Nama",
"choice_type": "jawaban singkat",
"choices": null,
"diperlukan_: 1
},
{
"id": 2,
"form_id": 1,
"nama": "Alamat",
"choice_type": "paragraf", "pilihan":
null,
"diperlukan_: 0
},
{
"id": 3,
"form_id": 1,
"nama": "Tanggal Lahir",
"choice_type": "tanggal",
"pilihan": batal,
"diperlukan_: 1
},
{
"id": 4,
"form_id": 1,
"nama": "Jenis Kelamin",
Tubuh (JSON):
{
"pesan": "Formulir tidak ditemukan"
}
Tubuh (JSON):
{
"message": "Akses terlarang"
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
3. Pertanyaan
Pengguna dapat mengelola pertanyaan (menambah dan menghapus) dari salah satu formulir
yang mereka buat. Bidang pilihan harus diisi jika pengguna memilih pilihan ganda, dropdown,
atau kotak centang. Ada 6 jenis pilihan:
1. Jawaban singkat (Bidang Teks)
2. Paragraf (Area Teks)
3. Tanggal (Tanggal Masukan)
Tambahkan Pertanyaan
metode : POS
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"name": "Framework JS Paling Favorit",
"choice_type": "pilihan ganda", "choices": [
"Reaksi JS",
"VueJS",
"JS Sudut",
"Langsing"
],
"is_required": benar
}
Validasi : nama:
- diperlukan
tipe_pilihan:
- diperlukan
- hanya: pilihan “jawaban singkat”, “paragraf”, “tanggal”, “pilihan
ganda”, “dropdown”, atau “kotak centang”
Tubuh (JSON):
{
"message": "Tambahkan pertanyaan sukses",
"question": {
"nama": "Kerangka JS Paling Favorit",
"choice_type": "pilihan ganda", "is_required":
benar,
"choices": "Reaksi JS,Vue JS,Angular JS,Svelte", "form_id": 3,
"id": 10
}
}
Tubuh (JSON):
{
"pesan": "Bidang tidak valid",
"kesalahan": {
"nama": [
"Bidang nama wajib diisi."
],
"tipe_pilihan": [
"Bidang jenis pilihan wajib diisi."
],
"pilihan": [
"Pilihannya harus berupa array.", "Pilihan
harus berupa string."
]
}
}
Tubuh (JSON):
{
"pesan": "Formulir tidak ditemukan"
}
Tajuk:
- Status respons: 403
Tubuh (JSON):
{
"message": "Akses terlarang"
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
Hapus Pertanyaan
Titik akhir : [DOMAIN]/api/v1/forms/<form_slug>/questions/<question_id>
metode : MENGHAPUS
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"message": "Hapus pertanyaan berhasil"
}
Tubuh (JSON):
{
"pesan": "Formulir tidak ditemukan"
}
Tubuh (JSON):
{
"message": "Pertanyaan tidak ditemukan"
}
Tajuk:
- Status respons: 403
Tubuh (JSON):
{
"message": "Akses terlarang"
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
4. Respon
Jika pembuat formulir menetapkan formulir dengan batas 1 respons, maka pengguna yang diundang
tidak dapat mengirimkan respons dua kali. Kirim Respons hanya dapat diakses oleh pengguna
dengan domain email pengguna yang diizinkan. Jika pembuat formulir tidak mengisi domain yang
diperbolehkan, berarti formulir tersebut dapat diakses oleh siapa saja/publik.
Misalnya:
Pengguna dengan email “pengguna3@worldskills.org ” tidak dapat mengirimkan tanggapan pada
formulir dengan domain yang diizinkan webtech.id dan inaskills.id, karena worldskills.org tidak dapat
mengakses formulir tersebut.
Kirim Tanggapan
Titik akhir : [DOMAIN]/api/v1/forms/<form_slug>/responses
metode : POS
Meminta : Header:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
"jawaban": [
{
"id_pertanyaan": 1,
"nilai": "Ica Amalia"
},
{
"id_pertanyaan": 2,
"nilai": "Bandung"
},
{
"id_pertanyaan": 3,
"nilai": "01-08-2006"
},
{
"id_pertanyaan": 4,
"nilai": "Wanita"
}
]
}
Validasi : jawaban
- Himpunan
[nilai pertanyaan]
- diperlukan jika disetel benar
Tubuh (JSON):
{
"message": "Kirim respons berhasil"
}
Tubuh (JSON):
{
"pesan": "Bidang tidak valid",
"kesalahan": {
"jawaban": [
"Bidang jawaban wajib diisi."
]
}
Tubuh (JSON):
{
"message": "Akses terlarang"
}
Tajuk:
- Status respons: 422
Tubuh (JSON):
{
"message": "Anda tidak dapat mengirimkan formulir dua kali"
}
Tubuh (JSON):
{
"message": "Tidak diautentikasi."
}
metode : MENDAPATKAN
Meminta : Tajuk:
- Otorisasi: “Pembawa <accessToken>”
Tubuh (JSON):
{
}
},
{
"tanggal": "24-10-2022 02:03:27",
"pengguna": {
"id": 2,
"nama": "Pengguna 2",
"email": " pengguna2@webtech.id ",
"email_verified_at": null
},
"jawaban": {
"Nama" : "Ica Amalia",
“Alamat” : “Bandung”,
"Tanggal Lahir": "01-08-2006", "Jenis
Kelamin": "Wanita"
}
}
]
}
Tubuh (JSON):
{
"pesan": "Formulir tidak ditemukan"
}
Tajuk:
- Status respons: 403
Tubuh (JSON)
{
"message": "Akses terlarang"
}
Tubuh (JSON)
{
"message": "Tidak diautentikasi."
}
Masuk dan Keluar - Kesalahan peringatan akan ditampilkan ketika login gagal
- Pengguna dapat logout dengan mengklik tombol logout pada
navbar.
Umum:
- Detail formulir ditampilkan dengan benar
- Tautan formulir ditampilkan dengan benar
Pertanyaan:
Tanggapan:
- Tabel ditampilkan dengan benar sesuai pertanyaan dan
tanggapan.
- Jumlah tanggapan total ditampilkan dengan benar.
tanggapan.
ERD
instruksi
- Simpan REST Api Anda di direktori bernama“SERVER_MODULE/bagian belakang”
dan simpan di folder repositori.
- Simpan aplikasi front-end Anda di direktori bernama“SERVER_MODULE/depan”
dan simpan di folder repositori.
- Saat mengembangkan Frontend, Anda bisamenggunakan/mengkonsumsi REST API yang disediakan.
KLIEN MODUL
Isi
1. MODULE_CLIENT.docx
2. MODULE_CLIENT_MEDIA.zip
Perkenalan
Orang-orang suka memainkan permainan menantang yang membutuhkan usaha berpikir pemainnya.
Permainan akan lebih menantang jika melibatkan angka-angka. Meski demikian, game multipemain
bisa lebih seru jika dimainkan bersama-sama.
Dengan dukungan teknologi yang canggih saat ini, kita dapat membuat sebuah game yang dapat
dimainkan di web browser sehingga orang dapat memainkannya melalui perangkat. Anda harus
membuat game ini berjalan dengan benar di Google Chrome atau Mozilla Firefox versi terbaru.
Deskripsi proyek
Anda perlu membuat game bernama Hexaria, game puzzle matematika multipemain yang menyenangkan
dengan tujuan mendapatkan poin terbanyak di papan heksagonal selama pertandingan.
Ini adalah modul 5 jam di mana Anda perlu membuat tata letak awal game dan fungsionalitas
game menggunakan Javascript. Anda diharuskan membuat game berfungsi dengan sempurna di
browser modern tanpa kesalahan apa pun.
1. Judul permainan
2. Balok segi enam 10x8
3. Nama kedua pemain
4. Kedua pemain mencetak gol
5. Segi enam saat ini
6. Tombol permainan baru
7. Papan Peringkat
8. Sortir Fungsionalitas
Fungsionalitas permainan
14.Merah mengambil giliran pertama.Biru bergantian dengan merah. Pemain 1 atau 2 dengan mengklik segi
enam yang kosong dan bot dengan otomatis mengisi segi enam yang kosong.
15.Setiap giliran, segi enam dengan nomor acak (1-20)dapat digunakan oleh salah satu pemain
untuk ditempatkan di salah satu segi enam yang kosong.
16.Segi enam belokan saat ini harus ditampilkan di layaruntuk memberi tahu pemain
warna dan nomor segi enam apa yang akan mereka masukkan.
17.Saat pemain mengarahkan salah satu segi enam yang kosong,akan ada
pengganti segi enam saat ini tergantung pada warna dan nomor segi enam
saat ini.
18.Ketika segi enam kosong dipilih oleh pemain,itu akan diisi dengan segi enam
belokan saat ini.
19.Pemain dapat mengambil alih segi enam lawanjika pemain menempatkan segi
enamnya pada segi enam lawan yang berdekatan dengan segi enam yang bernilai lebih
tinggi dari segi enam lawan.
20.Diambil alih warna segi enamakan berubah berdasarkan giliran pemain mana.
21.Saat pemain menempatkan segi enam baru berdekatan dengan segi enam warna yang
sama, segi enam yang berdekatan akan dijumlahkan dengan 1 angka.
22.Saat segi enam kosong diarahkan oleh pemain atau bot,tampilan animasi bergerak yang
menunjukkan apa yang akan terjadi pada segi enam yang berdekatan dengan menampilkan
animasi perubahan warna atau jumlahkan 1 animasi.
23.Bot harus meniru gerakan manusia dengan menunjukkan 3 langkahsebelum langkah sebenarnya
selama minimal 1 detik. Tampilkan animasi gerakan apa pun jika suatu langkah harus menampilkan
animasi.
24.Skor akan dihitung berdasarkan jumlah setiap segi enam dengan warna yang identikyang
telah ditempatkan oleh pemain.
25.Segi enam yang dinonaktifkantidak dapat diarahkan atau diklik.
26.Mainkan efek suaradiberikan dalam file media saat pemain menempatkan segi enam
baru.
27.Skor pemain merah dan biru saat iniharus ditampilkan di layar.
28.Ketika tidak ada segi enam kosong yang tersisa,permainan sudah berakhir.
29.Saat permainan selesai, tampilkan popupuntuk menampilkan nama, skor
pemenang, dan tombol restart.