Jetpack Compose Battle เป็นงานแข่งขันที่จะให้นักพัฒนาแอนดรอยด์ในประเทศไทยแข่งกันสร้าง UI ด้วย Jetpack Compose ที่เป็น UI Framework ตัวใหม่ล่าสุดทางทีมแอนดรอยด์
- การเข้าร่วมแข่งขันในรอบคัดเลือกสามารถเริ่มทำโจทย์ได้ตั้งแต่วันที่ 17 มกราคม 2024 จนถึงวันหมดเขต
- ผู้เข้าแข่งขันจะต้องสร้าง UI ด้วย Jetpack Compose ในแต่ละข้อให้ถูกต้องตามที่กำหนดไว้ใน Figma
- คะแนนจะถูกคำนวณจากความถูกต้องของ UI โดยตรวจสอบจาก Snapshot Testing
- การแข่งขันในรอบคัดเลือกจะหมดเขตภายในวันที่ 27 มกราคม 2024 เวลา 23:59 น. และผลการแข่งขันจะประกาศภายในวันที่ 31 มกราคม 2024
- ผู้ที่เข้ารอบคัดเลือกจะได้ไปแข่งขันในรอบสุดท้าย ณ วันเสาร์ที่ 17 กุมภาพันธ์ 2024 ที่จะจัดขึ้นที่บริษัท MuvMi
- อันดับที่ 1 Android Mini Collectible @Work Series - Tech Support / IT / Engineer
- อันดับที่ 2 Android Mini Collectible @Work Series - Developer / Coder / Cyber Security
- อันดับที่ 3 หนังสือ The Team That Built the Android Operating System ของ Chet Haase
- อันดับที่ 4 หุ่นยนต์ไขลาน Android Wind-up
นอกจากนี้ผู้เข้าแข่งขันในรอบสุดท้ายทุกท่านจะได้รับของสมนาคุณจากบริษัท MuvMi อีกด้วย
- ผู้เข้าแข่งขันจะต้องสร้าง UI ด้วย Jetpack Compose ที่ Fork จาก Repository นี้เท่านั้น
- UI ที่จะต้องสร้างมีทั้งหมด 3 หน้าด้วยกัน สามารถดูได้จาก Figma -> โจทย์รอบคัดเลือก
- โจทย์มีทั้งหมด 3 ข้อ โดยจะอยู่ในไฟล์ดังนี้
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify1Screen.kt
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify2Screen.kt
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify3Screen.kt
- สามารถสร้าง Composable Function เพิ่มในไฟล์ดังกล่าวได้ตามใจชอบ ขอแค่ห้ามแก้ไขข้อมูลใน
@Preview
ที่อยู่ในไฟล์ดังกล่าวก็พอ - ห้ามใช้รูปภาพจากภายนอก ให้ใช้รูปที่เตรียมไว้ในโปรเจคนี้เท่านั้น โดยจะอยู่ที่
<project>/common/src/main/res
- ชื่อไฟล์รูปภาพทั้งหมดให้ดูชื่อจากใน Figma และเรียกใช้งานผ่าน Android Resource ได้เลย
- ค่าต่าง ๆ เช่น ขนาด ฟอนต์ ความหนาของตัวอักษรไม่ต้องสร้างขึ้นมาเอง ให้ดูจากใน Figma และเรียกใช้งานผ่าน
MaterialTheme
ได้เลย ยกตัวอย่างเช่นMaterialTheme.typography.headlineMedium.fontSize
เป็นต้น - ค่าสีที่ใช้ใน UI ไม่ต้องสร้างขึ้นมาเอง ให้ดูจากใน Figma และเรียกใช้งานผ่าน
MaterialTheme
ได้เลย เช่นMaterialTheme.colors.primary
เป็นต้น - คะแนนจะถูกคำนวณจากการรัน Snapshot Testing ด้วย Paparazzi โดยผู้เข้าแข่งขันสามารถทดสอบได้ด้วยการใช้คำสั่ง
./gradlew :screenshot-test:verifyPaparazziDebug
เผื่อดูผลลัพธ์ได้ก่อนส่งโจทย์- โดยผลลัพธ์ที่ได้จะอยู่ใน
<project>/screenshot-test/diff/
ที่จะบอกผลต่างของภาพที่ได้จากโค้ดเทียบกับภาพที่ถูกต้อง - ค่าที่ได้จากผลของ Snapshot Testing จะมีค่าเป็น % เมื่อเทียบกับภาพต้นฉบับ
- ถ้าที่ได้มีค่าเท่ากับ 0 แปลว่าผลลัพธ์ถูกต้องแบบ 100%
- โดยผลลัพธ์ที่ได้จะอยู่ใน
- ภาพต้นฉบับที่ใช้เปรียบเทียบใน Snapshot Testing จะอยู่ใน
/screenshot-test/src/test/snapshots/images
(ห้ามแก้ไข)
- ให้ส่งโจทย์เป็น GitHub URL แล้วกรอกข้อมูลส่วนตัวพร้อมกับ URL ดังกล่าว -> ส่งโจทย์รอบคัดเลือก
- สามารถทำเป็น Private Repository เพื่อความสบายใจได้ แต่จะต้องเชิญทีมงานเข้าไปเป็น Admin ใน Repository ดังกล่าวด้วย
judrummer
หรือTipatai Puthanukunkit
akexorcist
หรือAkexorcist
- ผลการแข่งขันจะประกาศภายในวันที่ 31 มกราคม 2024
- Android Studio Hedgehog 2023.1.1 Patch 1 (Latest Stable)
- Embedded JDK (JBR 17.0.7)
Jetpack Compose Battle is a competition challenging Android developers in Thailand to create UIs using Jetpack Compose, the latest UI framework from the Android team.
- Participants can start working on the challenges from January 17, 2024, until the deadline.
- Competitors must create the UIs with Jetpack Compose based on the specifications provided in Figma.
- Scores will be calculated based on the accuracy of the UI as assessed by Snapshot Testing.
- The qualifying round concludes on January 27, 2024, at 23:59, with results announced on January 31, 2024.
- Qualifiers will proceed to the final round on February 17, 2024, at MuvMi's headquarter.
- 1st Place: Android Mini Collectible @Work Series - Tech Support / IT / Engineer
- 2nd Place: Android Mini Collectible @Work Series - Developer / Coder / Cyber Security
- 3rd Place: "The Team That Built the Android Operating System" book by Chet Haase
- 4th Place: Android Wind-up Robot
Additionally, all finalists will receive special gifts from MuvMi.
- Participants must create UIs with Jetpack Compose by forking from this repository only.
- The UI to be created consists of 3 screens, detailed in Figma -> Qualifying Round Challenges
- The challenges are in 3 separate files:
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify1Screen.kt
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify2Screen.kt
<project>/common/src/main/java/com/github/thailandandroiddeveloper/common/ui/screen/Qualify3Screen.kt
- Composable functions can be added as desired, but refrain from modifying data in
@Preview
in those files. - Do not use external images; use those prepared in the project located at
<project>/common/src/main/res
. - All image file names should match those in Figma and be accessed through Android Resource.
- Various values like size, font, and text thickness can be derived from Figma and accessed through
MaterialTheme
. For example:MaterialTheme.typography.headlineMedium.fontSize
- UI color values can be obtained from Figma and accessed through
MaterialTheme
. For example:MaterialTheme.colors.primary
- Scores will be calculated through Snapshot Testing with Paparazzi. Competitors can test using
./gradlew :screenshot-test:verifyPaparazziDebug
before submission.- Results will be in
<project>/screenshot-test/diff/
, indicating differences from the correct images. - Snapshot Testing results are presented as percentages comparing with the original images.
- A result of 0 means 100% accuracy.
- Results will be in
- Original images for Snapshot Testing are in
/screenshot-test/src/test/snapshots/images
(do not modify).
- Submit the GitHub URL of your project and fill in your personal information -> Submission form
- The repository can be private for peace of mind, but the judging team must be invited as Admin:
judrummer
orTipatai Puthanukunkit
akexorcist
orAkexorcist
- Results will be announced on January 31, 2024.
- Android Studio Hedgehog 2023.1.1 Patch 1 (Latest Stable)
- Embedded JDK (JBR 17.0.7)