Jetsnack is a sample snack ordering app built with Jetpack Compose.
To try out this sample app, you need to use the latest Canary version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample showcases:
- How to implement a custom design system
- Custom layout
- Animation
Jetsnack is still under development and some screens are not yet implemented.
Jetsnack's major feature is demonstrating how to implement a custom design system. Jetsnack has a bespoke color system and does not use Material color theming.
This is implemented by:
JetsnackColorPalettea class modelling the desired color system.JetsnackColorAmbientan ambient holding the current color set.ProvideJetsnackColorsa composable function providing aJetsnackColorPaletteJetsnackThemeobject, providing convenient access to the current theme colors.JetsnackThemecomposable, the app's theme. Note that while Jetsnack implements a custom color system, it still uses Material's shape and type theming.
Jetsnack wraps Material components, customizing them to use its color system. See the components package e.g. JetsnackButton. Jetsnack makes heavy use of gradients, see Gradient for a number of helpful Modifiers.
Jetsnack utilizes custom Layouts to achieve its design. See:
CollapsingImageLayoutshown above.SearchCategorycustom positioning of an image and text items.JetsnackBottomNavLayouta custom Bottom Navigation implementation which animates the width of selected/unselected items.
Domain types are modelled in the model package, each containing static sample data exposed using fake Repos objects.
Imagery is sourced from Unsplash and loaded using coil-accompanist.
Copyright 2020 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


