Andromeda is a open-source design language system implemented in Jetpack Compose.

Overview

Github Twitter Build and Deploy


Logo

Andromeda

Andromeda is a open-source design language system implemented in Jetpack Compose.
Catalog app

Table of Contents

About The Project

Andromeda

AndromedaVersion

Welcome πŸ‘‹ Andromeda is an open-source Jetpack Compose design system. A collection of guidelines and components which can be used to create amazing compose app user experiences. Foundations introduces you to Andromeda tokens and principles while Components lists out the bolts and nuts that make Andromeda Compose wrapped apps tick.

More details in a blog series: aditlal.dev/Andromeda

Catalog app

6M9n8EkDLLpU_1024_500

Getting Started

In build.gradle of your application module, include this dependency

dependencies {
  implementation("design.andromedacompose:$AndromedaVersion")
}

If you want to use our provided Icons, also add

dependencies {
    implementation("design.andromedacompose-icon:$AndromedaVersion")
}

If you want to use our provided Illustrations, also add

dependencies {
    implementation("design.andromedacompose-illustrations:$AndromedaVersion")
}

Prerequisites

  • Android Studio Bumblee
  • Java 11

Usage

Theme

AndromedaTheme {
 // Your compose content
}

or create an extension theme for your app with custom attributes such as colors, font etc

@Composable
fun CatalogTheme(
    isLightTheme: Boolean = true,
    content: @Composable () -> Unit
) {
    AndromedaTheme(
        colors = if (isLightTheme) defaultLightColors() else defaultDarkColors(),
    ) {
        content()
    }
}

Ref : CatalogTheme.kt

Foundation

Colors

fun myCustomAndromedaColors(
    primaryColors: PrimaryColors = customPrimaryLightColors(),
    secondaryColors: SecondaryColors = customSecondaryLightColors(),
    tertiaryColors: TertiaryColors = customTertiaryLightColors(),
    borderColors: BorderColors = customBorderLightColors(),
    iconColors: IconColors = customIconsLightColors(),
    contentColors: ContentColors = customContentLightColors()
): AndromedaColors = AndromedaColors(
    primaryColors = primaryColors,
    secondaryColors = secondaryColors,
    tertiaryColors = tertiaryColors,
    borderColors = borderColors,
    iconColors = iconColors,
    contentColors = contentColors,
    isDark = false
)

Colors can be broken down into :

  • Primary colors
  • Secondary colors
  • Tertiary colors
  • Border colors
  • Icons colors
  • Content colors

and also AndromedaTheme supports dark/light modes - one can override it for a given screen or entire app by passing true in AndromedaColors.isDark

For more details on Colors - check out Documenation here

Shapes

The library provides the following contract to extend on :

interface BasicShapes {
    val small: CornerBasedShape
    val normal: CornerBasedShape
    val large: CornerBasedShape
}

interface AndromedaShapes : BasicShapes {
    val bottomSheet: Shape
    val buttonShape: Shape
    val dialogShape: Shape
}

with some default shapes :

/**
 * Contains default shapes this library provides for components.
 *
 * @param bottomSheet - The shape of components used as bottom sheets.
 * @param buttonShape - The shape of components used as buttons.
 * @param dialogShape - The shape of components used for showing dialog box.
 * */
DefaultShapes(
    override val bottomSheet: Shape,
    override val buttonShape: Shape,
    override val dialogShape: Shape,
    override val small: CornerBasedShape,
    override val normal: CornerBasedShape,
    override val large: CornerBasedShape,
) : AndromedaShapes

One can extend further or generate cusotm shapes on the fly , for more documentation on shapes go here

Typography

AndromedaTheme provides custom typography for common use cases Typography has default fonts shipped in andromeda artifact - you can also override your own in your app/root module - example of using custom fonts can be found in Catalog app

Typography has following breakdown:

    val titleHeroTextStyle: TextStyle,
    val titleModerateBoldTextStyle: TextStyle,
    val titleModerateDemiTextStyle: TextStyle,
    val titleSmallDemiTextStyle: TextStyle,
    val bodyModerateDefaultTypographyStyle: TextStyle,
    val bodySmallDefaultTypographyStyle: TextStyle,
    val captionModerateBookDefaultTypographyStyle: TextStyle,
    val captionModerateDemiDefaultTypographyStyle: TextStyle

To see them in action , checkout the Catalog app

Components - WIP

Buttons

NavBar

Icon

Divider

Circular Reveal

Text

Surface

BackButton

Releases

  • 1.0.0-alpha01
    • Initial release with a catalog app showcasing icons, illustrations and other components alongside Foundational toekns of AndromedaTheme

Roadmap

  • Multi platform support apart from just Android, desktop , iOS , KMM in near future.

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make aregreatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. SeeLICENSEfor more information.

Contact

Adit Lal - @aditlal - https://aditlal.dev

You might also like...
New style for app design E-commerce Shop App UI made in Jetpack Compose.πŸ˜‰πŸ˜Ž
New style for app design E-commerce Shop App UI made in Jetpack Compose.πŸ˜‰πŸ˜Ž

E-commerceShopAppUI-Android New style for app design E-commerce Shop App UI made in Jetpack Compose. πŸ˜‰ 😎 (Navigation Components, Dagger-Hilt, Materi

Recipes Mobile App UI Design in Jetpack Compose
Recipes Mobile App UI Design in Jetpack Compose

Recipes Mobile App UI Design in Jetpack Compose Watch it on YouTube Beautiful android mobile Recipes App designed using Jetpack Compose. Single screen

New style for app design and Movies App with Movies API JetMaxMovies made in Jetpack Compose.πŸ˜‰πŸ˜Ž
New style for app design and Movies App with Movies API JetMaxMovies made in Jetpack Compose.πŸ˜‰πŸ˜Ž

JetMaxMovie New style for app design and Movies App with Movies API JetMaxMovies made in Jetpack Compose. πŸ˜‰ 😎 (Navigation Compose,Dagger-Hilt, Mater

A Jetpack Compose implementation of Owl, a Material Design study
A Jetpack Compose implementation of Owl, a Material Design study

Owl sample This sample is a Jetpack Compose implementation of Owl, a Material De

FullMangement - an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.
FullMangement - an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries and MVVM design pattern.

ComposeLoginScreen - A sleek design of a simple login screen using Jetpack Compose
ComposeLoginScreen - A sleek design of a simple login screen using Jetpack Compose

ComposeLoginScreen A sleek design of a simple login screen using Jetpack Compose

A setting library for Jetpack Compose with Material You design
A setting library for Jetpack Compose with Material You design

ComposeSetting This is a basic Compose setting library that provides a basic Material3 setting components It also provides a persistent state system b

This app can be used to track open slots for vaccination. This is built using Jetpack Compose.
This app can be used to track open slots for vaccination. This is built using Jetpack Compose.

Covid Vaccine This projects used the Cowin APIs provided by the government. Screenshots Tech Stack Used Kotlin Dagger Hilt Clean Architecture with Mod

Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop πŸš€, using Canvas API 🎨
Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop πŸš€, using Canvas API 🎨

🐜 🐜 🐜 Compose flocking Ants(boids) 🐜 🐜 🐜 Jetpack compose Boids | Flocking Insect. bird or Fish simulation using Jetpack Compose Desktop πŸš€ , usi

Comments
  • Adds publishing setup for Maven

    Adds publishing setup for Maven

    Description

    This PR setups necessary publishing config for all artifacts - Andromeda, icons and illustration modules

    List of General Components affected

    andromeda-icons/build.gradle
    andromeda-icons/src/main/AndroidManifest.xml
    andromeda-icons/src/main/java/design/andromedacompose/icons/AndromedaIcons.kt
    andromeda-illustrations/build.gradle
    andromeda-illustrations/src/main/AndroidManifest.xml
    andromeda-illustrations/src/main/java/design/andromedacompose/illustrations/AndromedaIllustrations.kt
    andromeda-illustrations/src/main/java/design/andromedacompose/illustrations/Illustration.kt
    andromeda/build.gradle
    andromeda/src/main/AndroidManifest.xml
    andromeda/src/main/java/design/andromedacompose/AndromedaTheme.kt
    andromeda/src/main/java/design/andromedacompose/ComposeExtensions.kt
    andromeda/src/main/java/design/andromedacompose/components/BackButton.kt
    andromeda/src/main/java/design/andromedacompose/components/Divider.kt
    andromeda/src/main/java/design/andromedacompose/components/Icon.kt
    andromeda/src/main/java/design/andromedacompose/components/Surface.kt
    andromeda/src/main/java/design/andromedacompose/components/Text.kt
    andromeda/src/main/java/design/andromedacompose/components/buttons/Button.kt
    andromeda/src/main/java/design/andromedacompose/components/buttons/ButtonElevation.kt
    andromeda/src/main/java/design/andromedacompose/components/navbar/AndromedaNavBar.kt
    andromeda/src/main/java/design/andromedacompose/components/reveal/CircularReveal.kt
    andromeda/src/main/java/design/andromedacompose/components/reveal/CircularRevealAnimationItem.kt
    andromeda/src/main/java/design/andromedacompose/components/reveal/CircularRevealScope.kt
    andromeda/src/main/java/design/andromedacompose/components/reveal/CircularRevealShape.kt
    andromeda/src/main/java/design/andromedacompose/components/reveal/Extension.kt
    andromeda/src/main/java/design/andromedacompose/foundation/ContentEmphasis.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/AndromedaColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/BorderColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/ColorExtension.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/ContentColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/DefaultDarkColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/DefaultLightColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/FillColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/IconColors.kt
    andromeda/src/main/java/design/andromedacompose/foundation/colors/tokens/DefaultColorTokens.kt
    andromeda/src/main/java/design/andromedacompose/foundation/shape/AndromedaShapes.kt
    andromeda/src/main/java/design/andromedacompose/foundation/shape/DefaultShapes.kt
    andromeda/src/main/java/design/andromedacompose/foundation/tokens/Spacing.kt
    andromeda/src/main/java/design/andromedacompose/foundation/tokens/TextUnit.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/AndromedaFonts.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/AndromedaTypography.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/BaseTypography.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/TextStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/body/BodyModerateTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/body/BodySmallTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/caption/CaptionModerateBookTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/caption/CaptionModerateDemiTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/caption/CaptionSmallBookTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/caption/CaptionSmallDemiTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleExtraLargeTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleHeroTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleLargeTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleModerateBoldTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleModerateDemiTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleSmallBoldTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleSmallDemiTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleTinyBoldTypographyStyle.kt
    andromeda/src/main/java/design/andromedacompose/foundation/typography/title/TitleTinyDemiTypographyStyle.kt
    build.gradle
    catalog/src/main/AndroidManifest.xml
    catalog/src/main/java/design/andromedacompose/catalog/CatalogTheme.kt
    catalog/src/main/java/design/andromedacompose/catalog/LauncherActivity.kt
    catalog/src/main/java/design/andromedacompose/catalog/NavGraph.kt
    catalog/src/main/java/design/andromedacompose/catalog/Screen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/ButtonScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/ColorsScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/IconsScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/IllustrationsScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/MainScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/NavBarScreen.kt
    catalog/src/main/java/design/andromedacompose/catalog/screens/TypographyScreen.kt
    scripts/publish-module.gradle
    scripts/publish-root.gradle
    

    What are the relevant tickets?

    ac-00

    Status

    • [x] Ready for Review

    Types of changes

    • [x] Adding a feature (non-breaking change which adds functionality)
    • [ ] Fixing a bug (non-breaking change which adds functionality)
    • [ ] Improving the design (non-breaking change which adds functionality)
    • [x] Optimizing resource usage (non-breaking change which adds functionality)

    Non Functional Requirement

    • [x] Follows the code style of this project.
    • [ ] Tests Cover Changes
    • [x] All new and existing tests passed.
    • [x] Documentation
    opened by aldefy 0
Releases(v1.0.0-alpha02)
Owner
Adit Lal
Google Developer Expert For Android Individual consultant | Android | Kotlin
Adit Lal
A sample of how to implement a design system in Jetpack Compose

[WIP] Sample Design System This project aims to hold an example of how to implement a design system with Jetpack Compose. At this moment it only has t

FΓ‘bio Carballo 4 Dec 2, 2021
Fake Toss Design System with Jetpack Compose

FTDS Fake Toss Design System Let's clone TDS with Jetpack Compose! TDS의 λͺ¨λ“  면을 따라

Fake Toss 1 Apr 18, 2022
Super Heroes Kata implemented using Jetpack Compose and Screenshot Testing.

KataSuperHeroes with Jetpack Compose We are here to learn about Jetpack Compose. We are going to use Jetpack Compose Testing Tools to interact with th

Karumi 18 Dec 15, 2022
Microsoft Fluent UI implemented in Jetpack Compose.

fluentui (WIP) Microsoft Fluent UI implemented in Jetpack Compose. Controls Some of the controls available include: ActionBarLayout AppBarLayout Avata

Nthily 15 Aug 28, 2022
Snake-compose-for-desktop - Snake Game - implemented using Compose for Desktop

A Snake game, built with Compose for Desktop snake-compose-for-desktop is my imp

gnu 5 Feb 17, 2022
Decathlon Design System UI components for Compose applications

Vitamin Compose Decathlon Design System libraries for android applications Website Compose Decathlon Design System is based on Material Design compose

Decathlon 168 Dec 22, 2022
A simple Snake game implemented using Compose for Desktop

CompoSnake A simple Snake game implemented using Compose for Desktop. Run: ./gradlew run Author Twitter: @arkann1985 If you like this project you can

Arkadii Ivanov 58 Dec 27, 2022
A lightweight particle system for Jetpack Compose - Quarks

compose-particle-system Quarks is a lightweight particle system for Jetpack Compose. There are endless possibilities for creating generative art with

Nikhil Chaudhari 41 Dec 28, 2022
Customisable Preview of system UI decoration for Jetpack Compose.

AdvancedPreview Customisable Preview of system UI decoration for Jetpack Compose. Use cases Want the Preview in Android Studio to look more like in re

Mobnetic 28 Dec 5, 2022
New style for app design Online Flora Go Go App UI made in Jetpack Compose. πŸ˜‰ 😎

JetComposeLoginUI New style for app design Online Flora Go Go App UI made in Jetpack Compose. ?? ?? (Navigation Components, Dagger-Hilt, Material Comp

Arvind Meshram 95 Dec 22, 2022