Skip to content

levinzonr/jetpack-compose-ui-arch-plugin

Repository files navigation

Jetpack Compose UI Architecture Plugin

Build AndroidWeekly As Seen In - jetc.dev Newsletter Issue #178

Jetpack Compose UI Architecture Plugin provides a set of templates that to make the development of new Jetpack Compose features faster.

Feels like something is missing or can be improved? Please submit a

To learn more about the architecture and templates are based on it, you can check following sources

New Feature Dialog

This dialog allows you to create several files related to Jetpack Compose UI Architecture. After you provide a name for your feature, plugin will generate following:

  • [featname] - package (lowercased) (optional)
    • [FeatName]Contract - contains UIState, Actions emitted from the UI layer and PreviewParameterProvider (optional)
    • [FeatName]Screen - Basic, stateless, UI of your Screen, if PreviewParameterProvider is enabled, it will be used to render the preview
    • [FeatName]Coordinator - Main State holder of the Screen, controls the screen UI logic and Interactions
    • [FeatName]Route - Main entry point, tied to Coordinator and delegates all the Actions to it, Emits Screen
    • [FeatName]ViewModel - Basic implementation of your ViewModel

AI Integration

Starting with version 1.3.0 the plugin now has a dedicated settings page where you can configure the AI client. As a stepping stone right now, we only support Ollama AI. The New Feature Dialog now has a Prompt field. By using this prompt, your basic feature template will be enhanced with some methods and calls prefilled based on your use case. Here is a quick example of how it works:

Prerequisite: You need to have an Ollama model hosted somewhere. You can use the Ollama CLI to host the model on your local machine or use the Ollama cloud service.

Configure AI Client

  1. Go to Settings/Preferences | Tools | Jetpack Compose UI Arch Plugin / Alternatively, you can use the search bar in the settings and type Jetpack Compose UI Arch Plugin or open this dialog from new Feature Dialog
  2. Specify the URL where your Ollama model is hosted
  3. Specify the model name, the default model name is codegemma, this model is recommended
  4. (Optional) Specify the timeout.
  5. Click Apply and then Test Connection to verify the connection

Using AI in New Feature Dialog

To new feature dialog, you will see a new field called Prompt. Here you can specify a prompt for the AI model. The AI model will generate the feature template based on this prompt. By leaving the prompt empty, you will get the default feature template.

The prompt can be anything really, but the recommended way would to provide the short description and element you expect from your UI. For example, given you are creating a login screen you can type: username, password, loading state

Live Templates

Along with the templates provided with the Dialogs, this plugin also provides several live templates. There are currently two groups of Live Templates available: Compose Foundation and UI Arch

Compose Foundation Live Templates

This set of templates contains most commonly used layouts and effects that can be used in any project

  • col -> Create Composable Column with pre-defined Modifier and Arrangement
  • row-> Create Composable Row with pre-defined Modifier and Arrangement
  • box -> Create Composable Box with Modifier
  • laun -> Create Launched Effect with Unit Key
  • disp -> Create Disposable Effect with Unit Key and onDispose Prepared

Compose UI Arch Live Templates

Currently, has only one template, that operates similar to the New Component Dialog

  • compon -> Creates new Compose UI Component with the Modifier as the parameter and a Preview\
  • ppp -> Creates a new PreviewParameterProvider setup

New Component Dialog

New component dialog simply allows you to create new Jetpack Compose UI Component a bit quicker. It will generate simple component with the Modifier as the parameter and Preview setup for you.