Skip to content

Commit 6f0c791

Browse files
committed
Merge remote and local README
2 parents fd810d6 + fef8df0 commit 6f0c791

5 files changed

Lines changed: 261 additions & 16 deletions

File tree

.github/workflows/blank.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
workflow_dispatch:
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v3
15+
- name: Set up JDK 17
16+
uses: actions/setup-java@v3
17+
with:
18+
java-version: '17'
19+
distribution: 'temurin'
20+
cache: gradle
21+
- name: Grant execute permission for gradlew
22+
run: chmod +x gradlew

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2023 Abdelraouf Sabri
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
# Decompose Tutorial
22

3-
This project demonstrates how to use the Decompose library with clean architecture and feature-based packaging in an Android app.
3+
![Kotlin](https://img.shields.io/badge/kotlin-1.9.0-blue.svg?logo=kotlin)
4+
![Compose](https://img.shields.io/badge/Jetpack_Compose-Latest-green.svg?logo=jetpackcompose)
5+
![Decompose](https://img.shields.io/badge/Decompose-2.1.0-purple.svg)
46

5-
## Architecture
7+
A comprehensive tutorial project showcasing Decompose for reactive UI component architecture in Kotlin Android development.
68

7-
The project follows Clean Architecture principles with a feature-based package structure. This approach allows for better separation of concerns, high cohesion, and easier maintainability.
9+
## 🚀 Overview
10+
11+
Decompose is a powerful Kotlin library for building component-based UIs with clean separation of concerns. This tutorial demonstrates how to create modular, maintainable Android applications using Decompose with Jetpack Compose.
12+
13+
## ✨ Key Features
14+
15+
- **Component-Based Architecture**: Modular UI components with encapsulated logic
16+
- **State Management**: Reactive state with unidirectional data flow
17+
- **Type-Safe Navigation**: Navigation between components without Fragments
18+
- **Back Stack Management**: Support for navigation history
19+
- **Lifecycle Management**: Clean component lifecycle handling
20+
21+
## 🏗️ Architecture
22+
23+
This project follows Clean Architecture principles with a feature-based package structure combined with Decompose component architecture. This approach allows for better separation of concerns, high cohesion, and easier maintainability.
24+
25+
![Architecture Diagram](https://raw.githubusercontent.com/abd3lraouf/decompose-tutorial/master/assets/architecture.svg)
826

927
### Package Structure
1028

@@ -66,22 +84,42 @@ The app uses Decompose's navigation capabilities:
6684
2. **Tab Navigation**: Managed by `TabNavigationComponent` for switching between features
6785
3. **Stack Navigation**: Each feature (like TodoList) has its own stack navigation for its screens
6886

69-
### Clean Architecture Benefits
87+
## 📋 Todo App Implementation
88+
89+
This tutorial implements a Todo application with a three-stage workflow:
7090

71-
- **Separation of Concerns**: Each layer has a clear responsibility
72-
- **Testability**: Domain and data layers can be tested independently of the UI
73-
- **Flexibility**: Easy to change implementations without affecting other parts of the application
74-
- **Scalability**: New features can be added without modifying existing ones
91+
1. **Todo Stage**:
92+
- Display: Play button (no checkbox)
93+
- Action: Clicking play button moves todo to "In Progress" stage
7594

76-
### Feature-Based Benefits
95+
2. **In Progress Stage**:
96+
- Display: Checkbox
97+
- Action: Checking the box moves todo to "Done" stage
7798

78-
- **High Cohesion**: Related code stays together
79-
- **Low Coupling**: Features are independent of each other
80-
- **Parallel Development**: Multiple developers can work on different features simultaneously
81-
- **Clear Boundaries**: Dependencies between features are explicit
99+
3. **Done Stage**:
100+
- Display: Checkbox (checked)
101+
- Action: Unchecking the box moves todo back to "Todo" stage
82102

83-
## Getting Started
103+
## 🛠️ Setup Instructions
84104

85105
1. Clone the repository
86-
2. Open in Android Studio
87-
3. Run the app on an emulator or physical device
106+
2. Open the project in Android Studio
107+
3. Build and run the app
108+
109+
## 📚 Technologies
110+
111+
- **Kotlin**: Modern programming language
112+
- **Jetpack Compose**: UI toolkit
113+
- **Decompose**: Component architecture
114+
- **Kotlin Coroutines**: Asynchronous programming
115+
116+
## 👨‍💻 About the Author
117+
118+
**Abdelraouf Sabri** - Senior Android Developer
119+
120+
- Website: [abd3lraouf.dev](https://abd3lraouf.dev)
121+
- GitHub: [@abd3lraouf](https://github.com/abd3lraouf)
122+
123+
---
124+
125+
⭐️ Star this repository if you find it helpful!

assets/architecture.svg

Lines changed: 83 additions & 0 deletions
Loading

assets/workflow.svg

Lines changed: 81 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)