Take the Flutter Clock challenge

Watch video

Lenovo Clock

Create a beautiful clock face UI

Build a beautiful clock face UI with Flutter for the Lenovo Smart Clock for a chance to win an iMac Pro, Lenovo Smart Display, or Lenovo Smart Clock.

All projects must be submitted by January 20, 2020, 11:59PM PST (GMT-8).

Entries will be judged by a panel of Google experts against the following criteria:

Visual
beauty

Novelty of
idea

Code
quality

Overall execution

Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo.

Prizes
  • Grand prize:

    A loaded Apple iMac Pro valued at ~$10,000 USD (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence)

  • 4 winners:

    A Lenovo 10" Smart Display with the Google Assistant valued at ~$249.00 USD (based on availability and applicable law in the potential winner’s country of residence)

  • Up to 25 winners:

    A Lenovo Smart Clock with the Google Assistant valued at ~$79.00 USD (based on availability and applicable law in the potential winner’s country of residence)


All complete and valid submissions will receive a digital certificate of completion. Some of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock faces, or used as inspiration for future clock faces!

Getting Started

Use the following instructions to get started. Also, make sure to familiarize yourself with the submission requirements and contest rules.

  1. Download the Flutter Clock GitHub repo using git clone.
  2. Choose a sample clock and enter that folder using: cd <path-to-repo>/flutter_clock/<name>_clock
    1. Sample clock 1: Basic analog clock.
    2. Sample clock 2: Basic digital clock.
  3. Run the clock app in your IDE, or by using flutter run at the command line.
  4. Build your clock inside a folder called <name>_clock.
    1. You can build upon the existing code (analog_clock or digital_clock), or you can start from scratch (flutter create <name>_clock). If you are new to Flutter, check out the Write your first Flutter app codelab.
  5. Prepare your clock for submission:
    1. Format the Dart code.
    2. Verify that your clock builds and runs on the latest Flutter stable channel.
    3. In your <name>_clock directory, reduce the clock’s size:
      • Delete the <name>_clock/ios, <name>_clock/android, and <name>_clock/web (if present) folders.
      • Run flutter clean.
    4. In your <path-to-repo>/flutter_clock folder, zip these two folders:
      • flutter_clock_helper (unedited)
      • <name>_clock (your clock)
  6. Verify that your <project>.zip file works, using the following steps:
    1. flutter channel stable
    2. flutter upgrade
    3. unzip <project>.zip
    4. cd <name>_clock
    5. flutter create .
    6. flutter run (on Android or iOS in landscape)
  7. Submit your clock.

Enter your clock face for a chance to win

Submit your project

Submission Requirements

Here are the requirements, including some guidelines, for contest submissions. See the contest’s Official Rules for full details.

Design and data notes:

  • The ClockModel API with mock data is provided to you. Using this API is optional, but it provides system information such as the brightness mode, weather, and time format.
  • The clock design should use landscape mode, with a 5:3 aspect ratio.
  • You may use Material Design icons.
  • Your Submission’s code must be licensed under an appropriate open source license (for code, BSD aka University of California license, MIT license or Apache 2.0 license are recommended; for assets, CC BY 4.0 license or Apache 2.0 license are recommended; for fonts, OFL license is recommended).
  • Your clock should not:
    • Have user interaction (such as tapping, gestures, dragging, mouse, keyboard, and so on).
    • Play audio, including an alarm.
    • Make network requests.
    • Collect data in violation of applicable laws (including privacy laws).
    • Contain copyrighted or trademarked content.

Submissions:

  • Submit your final clock by January 20th, 11:59pm PST (GMT-8).
  • Your clock must be made public on GitHub before February 5th, 2020, but can be private during the contest period. Your Submission’s code must be licensed under an appropriate open source license (for code, BSD aka University of California license, MIT license or Apache 2.0 license are recommended; for assets, CC BY 4.0 license or Apache 2.0 license are recommended; for fonts, OFL license is recommended).
  • Specify on the submission form which platform (Android or iOS) you would like the judges to use when evaluating your submission. Judges will not be testing on web.
  • Please also submit a video (of less than 30 seconds) of your clock and a screenshot via the form.

Contest Rules

Full details and rules are provided in our Official Rules. Here’s a summary of some of the key points:

  • All work must be that of the contest entrant.
  • Only one submission per entrant. If you submit multiple, we will review only the most recent.
  • Do not submit a clock that already existed before the announcement of this contest.
  • Clocks may not be submitted by any person who is a minor at the time of entry.
  • Alphabet or Google employees and contractors, Lenovo employees and contractors, contest judges, and members of their immediate families are not eligible to enter.
  • Persons from the following countries or regions can submit entries but will not be considered eligible for the contest due to local rules and restrictions, including exclusion from judging and prizes: Italy, Brazil, Quebec, and Mexico.
  • Persons from the following embargoed countries or regions should not submit entries and will not be considered eligible for the contest, including exclusion from judging and prizes: Crimea, Cuba, Iran, Syria, North Korea, and Sudan.
  • Entries will be collected via the website using an online Google form.
  • Submissions must not be derogatory, offensive, threatening, defamatory, disparaging, libellous or contain any content that is inappropriate, indecent, sexual, profane, torturous, slanderous, discriminatory in any way, or that promotes hatred or harm against any group or person, or otherwise does not comply with the theme and spirit of the contest.
  • Submissions must not contain content, material, or any element that is unlawful, or otherwise in violation of or contrary to all applicable federal, state, or local laws and regulations including the laws or regulations in any state where the clock and supporting statement are created.
  • Submissions must not contain any content, material, or element that displays any third party advertising, slogan, logo, trademark, representation of characters indicating a sponsorship or endorsement by a third party, commercial entity, or that are not within the spirit of the Contest, as determined by the Sponsor, in its sole discretion.
  • Submissions must be original, unpublished works that do not contain, incorporate, or otherwise use any content, material, or element that is owned by a third party or entity.
  • Submissions cannot contain any content, element, or material that violates a third party's publicity, privacy, or intellectual property rights.
  • The submission must not be the subject of any actual or threatened litigation or claim.
  • The entrant does not include any disparaging remarks relating to the Sponsor or a third party.

FAQ

Flutter Clock is a skills-based contest offered by Google, including participation by the Flutter, Google Assistant, and Lenovo teams. Flutter Clock challenges you to use Flutter to build a beautiful and innovative clock face application.
Each entry will be rated against the following rubric: Visual beauty, Novelty of idea, Code quality, and Overall execution (including accessibility).
Entries will be judged by employees of Google and/or individuals from the Flutter open source community that are experienced developers and designers.
You need to have your clock submitted via the Google form by January 20th, 11:59pm PST (GMT - 8), and published publicly on Github by February 5th, 11:59pm PST (GMT - 8).
Yes, as long as your changes occur before January 20th, 11:59pm PST (GMT - 8).
Winners will be selected around February 10th and announced around February 25th.
1 Grand prize winner receives:

A loaded Apple iMac Pro valued at ~$10,000 USD (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence).

4 Winners each receive:

A Lenovo 10" Smart Display with the Google Assistant valued at ~$249.00 USD (based on availability and applicable law in the potential winner’s country of residence).

Up to 25 Winners each receive:

A Lenovo Smart Clock with the Google Assistant valued at ~$79.00 USD (based on availability and applicable law in the potential winner’s country of residence).

In addition, all participants who submit complete and valid entries will receive a digital certificate of completion when their code repository is made public by February 5th, 2020. Also, some submissions may be integrated into the Lenovo Smart Clock's lineup of clock faces, or may be used as inspiration for future clock faces.

See the submission instructions in the ‘Getting Started’ section, and the Official Rules for more details.
We limit entries to one per participant. We encourage you to submit your best entry! In the event of multiple submissions from a single participant, we'll only judge the most recent.
Unfortunately, no. Only new clock faces built after November 18th, 2019 can be submitted for consideration.
No, you must submit a new clock face started for this contest to qualify.
The viewer should be able to tell the time. Whether that be with digits, clock hands, a sundial shadow, or colors flashing in Morse code, there should be some way for a user to reliably determine the time. (It’s OK if telling the time requires some thinking.)
No, this will not be considered by the judges when determining winners.
No. We provide the ClockModel mockable API for system-level information on the Lenovo Smart Clock. This API is available to you in your clock face, but using it is not required.
No, to both questions. The Lenovo Smart Clock has a feature that animates a clock between dark and light mode based on the room's brightness. You can use it to determine a dark and light theme, but it's not required. You can also animate between themes using, for example, an AnimatedBuilder or ValueListenableBuilder, but it's also not required.
No. We provide the ClockModel, a mockable API including weather information on the Lenovo Smart Clock. You don't have to display or use any of this information.
Tap the sample clock face to show/hide the settings cog in the top right corner, and then tap on the settings cog.
Google values accessibility, and it will be a consideration in your submission as part of the “overall execution” criteria. Check the Flutter accessibility page for details.
No. See the judging criteria in the Official Rules for more details.
Take a look at Flutter performance profiling, and enable the performance overlay feature in the Flutter Inspector to see whether frames are being drawn redundantly.
You must not be a minor (per your country of residence) to be eligible for the contest.
Yes, you can use Flare animations in your submission.
Yes. Make sure to include such files as assets in your submission.
Yes. This ensures more consistent and readable code. You can do this from your IDE or at the command line.
Check out Effective Dart. (Note that the Flutter codebase has its own formatting guidelines and doesn't adhere to Effective Dart.)
A team of people can work on a single clock, but the person submitting the clock through our form should be authorized to submit the clock (including all code and assets) on behalf of every person in the entire team, and each winning clock is only eligible for 1 prize.
All assets must comply with our Official Rules for submissions, and participants must either create or have permission to use (e.g. via a license) and submit all parts of their submission.
By submitting, you are agreeing to release the app under an open source license, and are giving Google a license to the app. Please see the Official Rules for more details.
We will not be judging your clock on web. Web is currently in technical preview and is missing some features, but is a great way to share your app with others.
Take a look through our Official Rules and, if you still have questions, please file a Flutter Clock GitHub issue.
We’re glad you asked! Flutter’s web support is in technical preview and you can use to share your clock face online. Once you enable web support, test your app by selecting Chrome as the target device in your IDE, or at the command line with flutter run -d chrome. Build a web version of your app for deployment using flutter build web. Then, you can host it using GitHub Pages, Firebase, or any other web hosting solution. If you share a link to your app on social media, be sure to include the #FlutterClock hashtag!