Kisi Kisi Soal LKS 2021
Kisi Kisi Soal LKS 2021
Kisi Kisi Soal LKS 2021
SPEEDTEST MODULE
Part B: Layout
CSS Grid
Please implement the following layout in CSS grid.
Please use PHP to produce verification code image (captcha), which must comply the
following rules (please see the provided images):
a. It randomly generates four characters, consisting of English Alphabet (A-Z) or digit
numbers (0-9).
b. The four characters must be slightly rotated.
c. The four characters must not be located at the same row.
d. The image contains at least 3 random lines.
e. At least 3 mixed noise points.
CMS MODULE
Introduction
You are a freelance worker working in the field of Web Technology and you have been asked to develop
a new website for COVID-19. Your client has heard that you are good at building content management
systems.
Your job is to develop a website backed by a content management system. Please create your own
theme as a child-theme of a given starter BlankSlate theme. Please name your theme
COVID19_Indonesia.
The purpose of this website is to display the latest news about COVID-19 in Indonesia as well as selected
news stories from selected editors. A newsletter can have a list of upcoming events. The purpose of this
website is to provide information and news regarding COVID-19, from general news, socialization and
urgency of conditions in Indonesia and to provide a list of upcoming events that can be followed for
people who wish to participate. The target audience for this page is all elements of society in Indonesia.
This can vary widely, therefore you will determine your interpretation of the target audience (based on
"Indonesian society"). Also make sure you have the headers and slogans defined in the content
management system.
Admins and editors should have the possibility to add and modify each entry for each story either to
update existing information or to add new news to the list. The site is accessible for visually impaired
visitors.
We want the CMS login page to be white-label. That means the login page should not show the CMS
default logo and add all the editor's logos.
Also the login page should not include any “wp” wordings for white-label reasons. Please make the
backend admin URL as following: <host>/admin/
The client wants to show news posts from all categories in the home page. While in the specific editor
page, the client wants to show news posts from only the category for the news.
Post Categories
- News Updates
- COVID-19 Events
- Each selected editor
DASHBOARD CONFIGURATION
The client wants to have At a Glance, Activity, Quick Draft in the dashboard. Please configure these
dashboard widgets and remove all others in the dashboard.
MENUS
The menu should stick to the top when scrolling down the page. The menu has the following items.
● Home
● Our Category (List from categories)
FRONT-END REQUIREMENT
You will need to create your own theme, based on the given starter themes. You will need to implement
the following elements for your web page:
Feel free to add and change as many elements as you like, but the elements in the list need to be
present and your design should blend in with the given design.
The client does not like refreshing the whole page. Page transition should be loaded via JavaScript with
animated transition effect. (This does not apply to admin area)
Home page on the desktop screen should have a multiple columns layout. Left half is some kind of cover
and images and the right half is the news.
Home page on the mobile screen should have a top-down layout strategy. Each column takes the full
width of the screen, except for the list of selected editors. They should have a left and right 2 columns
layout.
You can choose one of the provided plugins or implement your own SEO.
Remember to optimize certain parts of your website (e.g. urls, sitemap, …).
Note: If the plugin you would like to choose is broken or does not work as expected, you need to choose
another one or feel free to fix this plugin.
For the working folder you need to name your folder to “module_cms”.
MARKING SCHEME
Section Criterion Judgement Measurement Total
marks marks
B1 CMS Theme 0 3.0 3.0
B2 CMS Configuration 0 3.75 3.75
B3 CMS Design 1.5 1.5 3
B4 CMS Layout 3.0 3.5 6.5
B5 CMS Category 0.5 3.25 3.75
B6 CMS Admin 0.25 2.25 2.5
MODULE SERVER
CONTENTS
This module has the following files:
● MODULE_SERVER.doc
● MODULE_SERVER_MEDIA.zip
INTRODUCTION
PT. XYZ decided to create simple anonymous voting system called YukPilih. This system will be used for
asking some company decisions to their employees. Your task is to implement the backend with Laravel
PHP Framework and frontend with JavaScript Framework (VueJS, AngularJS, or ReactJS). The detail
description and tools that you can use will be described below.
These are the list of web service endpoint that requested by the company:
1. Authentication
a. Login
URL: [domain]/api/auth/login
Description: For client to generate and get login token using username and password.
Username and password must be valid.
Method: POST
Request Parameter:
● Body:
o username
o password
Response:
● If login success:
Header: response status: 200
Body:
o access_token (authorization token generated by the system using JSON
Web Token (JWT))
o token_type (always Bearer)
o expires_in (set your token to be expired in 24 hours)
● If login failed (username or password do not match or empty):
o new_password
Response:
● If success:
Header: response status: 200
Body: message: reset success, user logged out
● If failed (old password did not match):
Header: response status: 422
Body: message: old password did not match
● If failed (token invalid):
Header: response status: 401
Body: message: Unauthorized
2. Poll
a. Create new poll
URL: [domain]/api/poll
Headers:
● Authorization: Bearer [access_token]
Description: Create new poll. Admin only.
Method: POST
Request Parameter:
● Body:
o title: String, required.
o description: String, required.
o deadline: Datetime, required.
o choices: array of string, choices must be unique. Validate at least two
items given.
Response:
● If success:
Header: response status: 200
Body: JSON of the new poll data
Header: response status: 422
Body: message: The given data was invalid.
● If unauthorized user access it (only admin can access this endpoint):
Header: response status: 401
Body: message: Unauthorized
Description: Get all poll data. Result only shown to admin or if user already voted for that
poll or if that post already exceeds the deadline. Otherwise, result will be returned as null.
Method: GET
Response:
● If success:
Header: response status: 200
Body: array of JSON of the polls data, including id, title, description, deadline,
created_by (creator user id), created_at, creator (creator username), result, and
choices.
Notes: result will be an array consists of id (choice_id), choice, and point. Check
detailed formula in the end of this document to learn how the point calculated.
● If using invalid token:
Header: response status: 401
Body: message: Unauthorized
c. Get a poll
URL: [domain]/api/poll/[poll_id]
Headers:
● Authorization: Bearer [access_token]
Description: Get one poll data by given poll_id. Result only shown to admin or if user
already voted for that poll or if that post already exceeds the deadline. Otherwise, result
will be returned as null.
Method: GET
Response:
● If success:
Header: response status: 200
Body: JSON of the polls data, including id, title, description, deadline,
created_by (creator user id), created_at, creator (creator username), result, and
choices.
Notes: result will be an array consists of id (choice_id), choice, and point. Check
detailed formula in the end of this document to learn how the point calculated.
● If using invalid token:
Header: response status: 401
Body: message: Unauthorized
d. Vote
URL: [domain]/api/poll/[poll_id]/vote/[choice_id]
Headers:
● Authorization: Bearer [access_token]
Description: Logged user give a vote for given choice_id to the given poll_id. Admin
cannot do a vote.
Method: POST
Response:
● If success:
Menu Detail
● The system’s role can be an Admin or a User
● The user (admin or user) can login (and logout) into the system on the start
page of the application
● After login, if admin or user still using default password, frontend will be
redirected to change password page. Else, redirect to poll page.
Login
● After login, admin will have floating action button (FAB) to create a new poll
● After login, user can view all schedule
Note: the system is not providing register menu, all user data registration is
managed by administrator on the database directly
● After login, if admin or user still using default password, frontend will be
redirected to change password page
Change ● On this page, user will be asked to input old password, new password, and
Password confirm new password. Validate new password and confirm new password
must be match before hitting reset_password backend endpoint.
● After success resetting password, redirect to login page.
● Username and logout button will be displayed on the menu. Admin or user can
use the button for logging out.
● Admin will have floating action button (FAB) to create a new poll
● Admin cannot do vote. Admin always seeing the poll results.
● Admin can delete polls.
● User can do vote only once per poll.
● User only seeing poll results only if the poll already deadline or user already
voted for that poll.
● Polls sorted by created_at descending.
Poll ● Poll results will be shown as percentage with following formula:
Choice’s percentage = choice’s point / [total of all points] x 100%
● Point will be calculated with following standards:
o Regardless number of division members, a division will only have 1
point for each poll.
o All voting will be calculated internally on each division.
o After calculated internally, the winner from each division will be used
for the whole poll.
o If there is more than one winner on a division, the division’s point will
be split equally.
● If admin click the FAB button, this dialog will be shown.
● Admin asked to fill title (string), description (string, can be multiline), deadline
(use date time picker, default value is current time), and choices.
● Choices have special behaviours:
Create Poll o Initially, there is only one input field.
Dialog o After admin typing down on the input field, a new blank input field will
be appended in the bottom of the form.
o Admin can delete input fields, but make sure admin always have at
least one blank input field in the bottom of the form.
● There is a cancel button to close this dialog without creating poll.
Simulation 2:
This poll having 3 choices (‘senin’, ‘rabu’, or ‘jumat’).
- All users from payment division already vote. All of them choosing ‘rabu. ‘rabu’ win on this
division, one point for ‘rabu’.
- Three users from procurement division voted. 1 choosing ‘senin’, 1 choosing ‘rabu’, 1 choosing
‘jumat’. We have 3 winners on this division. 1/3 point will be given for each option.
- Five users from IT division voted. 2 choosing ‘senin’, 2 choosing ‘rabu’, 1 choosing ‘jumat’. We
have 2 winners on this division. 1/2 point will be given for ‘senin’ and ‘rabu’.
- No user from finance division voted. No point given from this division yet.
Result: ‘senin’ 0.8333 points. ‘rabu’ 1.8333 points. ‘jumat’ 0.3333 points.
Percentage calculation:
‘senin’ = 0.8333 / (0.8333 + 1.8333 + 0.3333) * 100% = 27.78%
‘rabu’ = 1.8333 / (0.8333 + 1.8333 + 0.3333) * 100% = 61.11%
‘jumat’ = 0.3333 / (0.8333 + 1.8333 + 0.3333) * 100% = 11.11%
ERD
You can use and improve ERD below:
For this module, you must use one of the three available frameworks provided. Applications developed without
use of any of these frameworks will not be considered. You should take advantage of the framework as much as
possible.
CLIENT MODULE
CONTENTS
THIS MODULE HAS THE FOLLOWING FILES:
1. MODULE_CLIENT_SIDE.doc
2. MODULE_CLIENT_SIDE_MEDIA.zip
INTRODUCTION
In recent years internet has become our basic daily source and needs, enabling the
dissemination of information in an inexhaustible content and interaction. Games uses has
gained a prtominent role in nowadays computer usage, allowing people to get access to
entertainment from any places.
You are asked to develop game called Phytons using HTML and CSS and develop client-side
programming using JavaScript and its open source libraries. Some media files are available to
you in a zip file. You can create more media and modify anything in the media if you want.
Your game needs to be developed in a tablet resolution (960x600 pixels). In bigger resolution,
the game must be centred in the screen both horizontally and vertically.
a. Game instruction: The first screen of the game presents the instructions to the
player, a text field for player’s name, and the Play buttons for starting the game.
The instructions for the game are included in the media files. The “Play” button
should be disabled if the text field is empty.
b. Game board: It must present all elements described above in the game screen.
c. Game icon which represents the game immediately.
2. Develop the initial markup (HTML + CSS) of your game application. Overall screen must
be within 1024x1024 pixels.
3. Buttons must have active and hover effects. The buttons background in hover state
must be #5d96d4 and the active state must use #0069d9.
4. The HTML and CSS code must be valid in the W3C standards for HTML5 and CSS3 rules
in accordance with the WCAG and standard ARIA (Accessible Rich Internet Applications
Suite)
GAME FUNCTIONALITIES
1. Show game icon on the top of the screen.
2. Show game instruction in the centre after page are loaded.
3. Show text field for player to input their name.
4. Player can start game after click “Play” button at the bottom of game instruction.
5. The “Play” button should be disabled if the text field is empty.
6. Phyton’s starting point is in the middle of board and moving east (from left to right)
automatically 4 grid per second. The phyton moves only north, south, east, or west.
7. Phyton cannot move directly into opposite direction.
8. To move phyton, player can use arrow keys or “WASD” keys with the following:
a. North with up arrow or ‘w’
b. South with down arrow or ‘s’
c. East with right arrow or ‘d’
d. West with left arrow or ‘a’
9. Phyton should eat food pellet to increase its length which also increase player’s score.
10. Pellet appear at random location inside board every 3 seconds and will disappear after
5 seconds. Number of pellets in board is minimum 3 and maximum 5 at the same time.
11. Pellets cannot appear on python’s location.
12. Player score are based on phyton’s length. So, the initial score would be 6.
13. There’s a timer at the top of board whose shows elapsed time and player score.
14. If phyton head hit board edge, then its head should appear on the opposite edge.
15. Player can rewind the phyton game for 5 seconds. Rewind features allows player to
rewind the game anytime they want.
16. Rewind button are located at the bottom of game board, or player can activate it using
“space” button.
17. After the rewind feature activated, there will be a seeker in the form of slider which
player can moves below the game board, the game will rewind accordingly. This seeker
can be moved 5 ticks, each tick for each second.
18. Player can cancel the rewind feature using “Cancel Rewind” button.
19. Phyton dies if it hit its own tail. Game should notify player it is over and shows
Highscore. If the current game score is higher, then it should be the highscore.
Highscore should be saved.
20. Your game should work without JavaScript errors or messages shown in the browser
console.
21. Maintain your HTML/CSS and JavaScript code organized and clean to facilitate future
maintenance. Use correct indentation and comments. Use meaningful variable names
and document your code as much as possible so another developer would be able to
modify your work in the future.
22. The game needs to work correctly in Google Chrome.
Example
These following images are for example purpose only. You may design your own game layout.