Natour
← Back to chapters

September 2025 - Designing the Festival

[Expandable Lists · State Management · UI] - Expandable Lineup List

textpost · published

Attachments

🎭 Scenario

This challenge simulates a mobile app that displays a music festival lineup, allowing users to view scheduled performers by stage.

You can find the technical requirements and mockups in the attachments section ☝️


🔗 Useful Links for This Challenge

🤔 What's Allowed?

  • Standard Android/Jetpack libraries

  • No 3rd party libraries are allowed or would be required to complete this challenge

⚠️ What's not important

  • Responsiveness across every device size or orientation is not mandatory.

  • No need for data from a server

  • No gestures or advanced animations

  • No visual styling beyond the mockups


🏆 Submission & Rewards

  • A successful submission of this challenge via the /submit-challenge command on Discord grants you 100 XP. You can use it in any channel on Discord :)

  • A successful submission consists of these parts

    1. A link to a Gist showing your code for this challenge.

    2. A screen recording (max 20 seconds) showing:

      • Tapping a stage to expand the performer list

      • Tapping another stage to switch and collapse the previous

      • Tapping an expanded stage again to collapse it and hide the list

[Dynamic Updates · State Management · UI] – Ticket Builder

textpost · published

Attachments

🎭 Scenario

The user is ordering tickets for a festival. They choose a type and a quantity, see the total update dynamically, and finalize the purchase — all within a single mobile screen.

You can find the technical requirements and mockups in the attachments section ☝️


🔗 Useful Links for This Challenge

🤔 What's Allowed?

  • Standard Android/Jetpack libraries

  • No 3rd party libraries are allowed or would be required to complete this challenge

⚠️ What's not important

  • Responsiveness across every device size or orientation is not mandatory.

  • Real payment logic


🏆 Submission & Rewards

  • A successful submission of this challenge via the /submit-challenge command on Discord grants you 100 XP. You can use it in any channel on Discord :)

  • A successful submission consists of these parts

    1. A link to a Gist showing your code for this challenge.

    2. A screen recording (max 20 seconds) showing:

      • Selecting any ticket type

      • Choosing a quantity of 3 tickets

[Filter Chip · State Management · UI] – Map Chip Filter

textpost · published

Attachments

🎭 Scenario

The user sees a festival map and can toggle filters to show or hide various types of POIs (Stages, Food, WC).

You can find the technical requirements and mockups in the attachments section ☝️


🔗  Useful Links for This Challenge

🤔 What's Allowed?

  • Standard Android/Jetpack libraries

  • You may use any appropriate image loading library, such as Glide, Coil, or Picasso.

⚠️ What's not important

  • Responsiveness across every device size or orientation is not mandatory.

  • Integration with Google Maps or live location

  • Transition animations


🏆 Submission & Rewards

  • A successful submission of this challenge via the /submit-challenge command on Discord grants you 100 XP. You can use it in any channel on Discord :)

  • A successful submission consists of these parts

    1. A link to a Gist showing your code for this challenge.

    2. A screen recording (max 20 seconds) showing:

      • Initial state (no chips selected)

      • Tapping the Stages chip

      • Tapping the Food chip

      • Tapping the WC chip

      • Tapping the Food chip again to hide food markers

[Accessibility · Animation · UI] – Accessible Audio Schedule

textpost · published

Attachments

🎭 Scenario

This challenge simulates a mobile music festival app where the user browses through a scrollable list of scheduled performances. The interface must be fully accessible for visually impaired users: all items should be properly announced by screen readers (TalkBack), and the layout must gracefully adapt to large system font sizes without losing readability.

You can find the technical requirements and mockups in the attachments section ☝️


🔗 Useful Links for This Challenge

🤔 What's Allowed?

  • Standard Android/Jetpack libraries

  • No 3rd party libraries are allowed or would be required to complete this challenge

⚠️ What's not important

  • Responsiveness across every device size or orientation is not mandatory.

  • Any stylistic or visual effects outside what’s clearly shown in the Figma mockup


🏆 Submission & Rewards

  • A successful submission of this challenge via the /submit-challenge command on Discord grants you 200 XP. You can use it in any channel on Discord :)

  • A successful submission consists of these parts

    1. A link to a Gist showing your code for this challenge.

    2. A screen recording (max 30 seconds) showing:

      • TalkBack Setup:

        • Go to: Settings > Accessibility > TalkBack

        • Enable TalkBack

        • Return to the app and demonstrate how one or more list items are read out loud as full sentences

      • Increase Font Size:

        • Go to: Settings > Accessibility > Font Size / Display Size

        • Set to the maximum font size

        • Return to the app

        • Demonstrate:

          • Text is not truncated

          • Minimum 24dp spacing between artist name and time is preserved

          • Marquee animation activates for long lines

[Canvas · Gestures · UI] – Multi-Stage Timeline Painter

textpost · published

Attachments

🎭 Scenario

Imagine this is a screen in the official app of a music festival. Users open it to view the schedule of performances across different stages. The timeline can be scrolled and zoomed for easier navigation and visibility of events.

You can find the technical requirements and mockups in the attachments section ☝️


🔗 Useful Links for This Challenge

🤔 What's Allowed?

  • Standard Android/Jetpack libraries

  • No 3rd party libraries are allowed or would be required to complete this challenge

⚠️ What's not important

  • Animations during scroll or zoom (you can skip them).

  • Real database (hardcoded data is fine).

  • Dark theme support (only light theme is expected).

  • Displaying extra performance details on tap.


🏆 Submission & Rewards

  • A successful submission of this challenge via the /submit-challenge command on Discord grants you 300 XP. You can use it in any channel on Discord :)

  • A successful submission consists of these parts

    1. A link to a Gist showing your code for this challenge.

    2. A screen recording (max 20 seconds) showing:

      • Initial launch with the overlay hint.

      • Zooming in on the timeline — the Zoom Indicator should update and blocks/text scale proportionally.

      • Scrolling horizontally and vertically at the zoomed-in level.

      • Zooming back to 100% (initial state).