Skip to content

Commit e29ead0

Browse files
committed
Update Docs and Readme
1 parent aac5fa3 commit e29ead0

File tree

5 files changed

+140
-94
lines changed

5 files changed

+140
-94
lines changed

README.md

Lines changed: 35 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,71 @@
11
# :construction: Flaker :construction:
2-
![flaker build](https://github.com/rotbolt/flaker/actions/workflows/flaker-ci.yml/badge.svg)
2+
![flaker build](https://github.com/rotbolt/flaker/actions/workflows/flaker-ci.yml/badge.svg) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.rotbolt/flaker-android-okhttp/badge.svg?style=plastic)](https://maven-badges.herokuapp.com/maven-central/io.github.rotbolt/flaker-android-okhttp)
33

4+
Developing a mobile app that performs flawlessly in the real world requires thorough testing under a variety of network conditions. Introducing Flaker – your assistant tool for recreating real-world network scenarios directly in your mobile app development environment. 📱💡
45

5-
A flaky network simulator for your mobile app.
6+
## What is Flaker?
7+
Flaker is a network simulator designed to make your mobile app development process smoother and more efficient. With Flaker, you can effortlessly emulate a wide range of network conditions, enabling you to fine-tune your app's performance and ensure it delivers an exceptional user experience under any circumstance. 🌐🛠️
68

7-
Imagine effortlessly recreating real-world network scenarios directly for your mobile app development. With Flaker,- you gain the ability to mimic a variety of network conditions tailored for mobile app development.
8-
- **Experience Slow Networks**: Wondering how your app performs on a slow network? Flaker lets you replicate these scenarios, helping you fine-tune your app's responsiveness.
9-
- **Emulate Flaky Networks**: Use fail percentage and variance controls to mirror the unpredictable nature of network connections. Get a firsthand feel for the scenarios your mobile app might encounter.
10-
- **Focused Impact**: Flaker only affects your app's network conditions, leaving your device's overall network functionality undisturbed.
9+
## Key Features:
10+
### Experience Slow Networks 🐢
11+
Ever wondered how your app would perform on a slow and sluggish network? With Flaker, you can replicate these scenarios with ease. Test your app's responsiveness and optimize its behavior under adverse network conditions. 🚀🐌
1112

12-
Whether you're a mobile app developer refining user experiences or a tester validating app resilience, Flaker offers an intuitive solution within your development workflow. Elevate your testing strategies and boost your app's performance with Flaker.
13+
### Emulate Flaky Networks 📶
14+
Network connections in the real world are rarely stable. Flaker allows you to introduce fail percentage and variance controls, mirroring the unpredictable nature of network connections. Gain a firsthand understanding of the challenges your mobile app might face and ensure it remains resilient. 🔮🔌
1315

14-
## Demo
15-
16-
https://github.com/RotBolt/Flaker/assets/24780524/3d00e644-0f47-4755-8402-74001fa96a2c
16+
### Focused Impact 🎯
17+
Flaker is designed to impact only your app's network conditions, leaving your device's overall network functionality undisturbed. This means you can test and fine-tune your app's performance without affecting your entire device's connectivity. 📡🔍
1718

19+
## Who Can Benefit from Flaker?
20+
Whether you're a mobile app developer looking to enhance user experiences or a tester seeking to validate your app's resilience, Flaker provides an intuitive and indispensable tool within your development workflow. Elevate your testing strategies and boost your app's performance with Flaker.
1821

19-
## Getting Started
22+
Flaker empowers you to:
2023

21-
#### Installation (In Progress - Not yet published to maven central)
24+
✅ Test under various network conditions
2225

23-
Add the following dependency to your project.
24-
25-
```kotlin
26-
debugImplementation("io.github.rotbolt:flaker-android-okhttp:${latest_version}")
27-
releaseImplementation("io.github.rotbolt:flaker-android-okhttp-no-op:${latest_version}")
28-
```
26+
✅ Optimize your app for slow networks
2927

30-
**_NOTE:_** It is not yet published to maven central. But you can download all the modules from [github packages](https://github.com/RotBolt?tab=packages&repo_name=Flaker) and add them to your project for now.
31-
32-
#### flaker-android-okhttp
33-
Add the following statement to your app's onCreate method.
34-
```kotlin
35-
class MainApplication: Application() {
36-
override fun onCreate() {
37-
super.onCreate()
38-
FlakerAndroidOkhttpContainer.install(this)
39-
}
40-
}
41-
```
28+
✅ Prepare your app for flaky network connections
4229

43-
Then in your okhttp client builder, add the following interceptor.
44-
```kotlin
45-
val client = OkHttpClient.Builder()
46-
.addInterceptor(FlakerInterceptor.Builder().build())
47-
.build()
48-
```
30+
✅ Ensure your app's stability and reliability
4931

50-
#### flaker-android-ktor (In Progress)
32+
✅ Enhance user satisfaction and retention
5133

52-
#### flaker-ios-ktor (In Progress)
34+
## Demo
35+
📺 Check out the to see Flaker in action.
5336

54-
That's it. Now you can use the companion app to simulate the network conditions.
37+
https://github.com/RotBolt/Flaker/assets/24780524/3d00e644-0f47-4755-8402-74001fa96a2c
5538

56-
## Development
39+
## Usage
40+
Please refer to the [📚 docs](https://rotbolt.github.io/Flaker/) for detailed usage instructions.
5741

58-
### Library Code Map
59-
![library-code-map.png](docs/assets/library-code-map.png#gh-light-mode-only)
60-
![library-code-map.png](docs/assets/library-code-map-dark.png#gh-dark-mode-only)
42+
## Built with
6143

44+
**Kotlin:** 🚀 The primary programming language.
6245

63-
### :hammer: Build
64-
Simply clone this repository in Android Studio Giraffe or above and build the project.
46+
**Kotlin Multiplatform:** 📱🍏 Sharing common logic across Android and iOS.
6547

66-
### Module Details
67-
- **flaker-domain**: Contains domain of flaker library which is used by other modules. Like Network Request and preferences by the user.
68-
- **flaker-data**: Contains data layer of flaker library which is used by other modules to get the locally stored data. All the persistent data should stay here.
69-
- **flaker-okhttp-core**: Core module containing the functionality to intercept the network request and simulate the network conditions using OkHttp Interceptor.
70-
- **flaker-ktor-core**: Core module containing the functionality to intercept the network request and simulate the network conditions using Ktor
71-
- **flaker-android-ui**: Contains the reusable UI elements and components for the android companion app.
72-
- **flaker-android-okhttp**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses OkHttp as their networking library.
73-
- **flaker-android-ktor**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses Ktor as their networking library.
74-
- **flaker-android**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses both okhttp and Ktor as their networking library.
48+
**Jetpack Compose**: 🖼️ For building the UI for the Android companion app. Supports dynamic theming.
7549

76-
### Verify
77-
We use `detekt` for static code analyis and a job is setup in github actions to run it on every PR. You can run it locally using the following command:
78-
```bash
79-
// For android related changes
80-
./gradlew detekt
50+
**SqlDelight:** 📊 For a shared database and persistence layer between multiple platforms.
8151

82-
// For iOS related changes
83-
./gradlew detektMetadataIosMain
52+
**Jetpack DataStore:** 📦 For the shared persistence layer to store user preferences and configuration of Flaker.
8453

85-
// For common code changes
86-
./gradlew detektMetadataCommonMain
87-
```
54+
**Okhttp:** 📡 For creating Flaker for Android apps using Okhttp3 for networking.
8855

89-
If you want to `detekt` to auto correct some of the stuff, please add the flag `--auto-correct` to the above commands.
56+
**Ktor:** 🌐 For creating Flaker targeting both Android and iOS apps using Ktor for networking. (🚧 In Progress)
9057

58+
**SwiftUI:** 🍎 For building the UI for the iOS companion app. Supports dynamic theming. (🚧 In Progress)
9159

9260
## Roadmap
9361
- [x] flaker-android-okhttp
9462
- [ ] flaker-android-ktor
9563
- [ ] flaker-ios-ktor
9664

9765
## Contributing
98-
If you've found an error in this sample, please file an issue.
66+
If you've found an error in this sample, please 🚩 file an issue.
9967

100-
Patches are encouraged and may be submitted by forking this project and submitting a pull request. Since this project is still in its very early stages, if your change is substantial, please raise an issue first to discuss it.
68+
Patches are encouraged and may be submitted by forking this project and submitting a pull request. Since this project is still in its very early stages, if your change is substantial, please raise an issue first to discuss it. 🤝
10169

10270
## License
10371
```

docs/development.md

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
---
2+
hide:
3+
- navigation
4+
---
5+
16
## Development
27

3-
### Library Code Map
48
### Library Code Map
59
![library-code-map.png](assets/library-code-map.png#only-light)
610
![library-code-map.png](assets/library-code-map-dark.png#only-dark)
@@ -10,14 +14,22 @@
1014
Simply clone this repository in Android Studio Giraffe or above and build the project.
1115

1216
### Module Details
13-
- **flaker-domain**: Contains domain of flaker library which is used by other modules. Like Network Request and preferences by the user.
14-
- **flaker-data**: Contains data layer of flaker library which is used by other modules to get the locally stored data. All the persistent data should stay here.
15-
- **flaker-okhttp-core**: Core module containing the functionality to intercept the network request and simulate the network conditions using OkHttp Interceptor.
16-
- **flaker-ktor-core**: Core module containing the functionality to intercept the network request and simulate the network conditions using Ktor
17-
- **flaker-android-ui**: Contains the reusable UI elements and components for the android companion app.
18-
- **flaker-android-okhttp**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses OkHttp as their networking library.
19-
- **flaker-android-ktor**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses Ktor as their networking library.
20-
- **flaker-android**: Contains the companion app which gets installed as a part of library. This should be used for the apps which uses both okhttp and Ktor as their networking library.
17+
18+
**flaker-domain**: Contains the domain of the Flaker library, used by other modules, including network requests and user preferences. 🏠
19+
20+
**flaker-data**: Contains the data layer of the Flaker library, used by other modules to access locally stored data. All persistent data should be kept here. 📊
21+
22+
**flaker-okhttp-core**: Core module containing the functionality to intercept network requests and simulate network conditions using OkHttp Interceptor. 🌐
23+
24+
**flaker-ktor-core**: Core module containing the functionality to intercept network requests and simulate network conditions using Ktor. 🌐
25+
26+
**flaker-android-ui**: Contains reusable UI elements and components for the Android companion app. 📱🎨
27+
28+
**flaker-android-okhttp**: Contains the companion app that gets installed as a part of the library. This should be used for apps that use OkHttp as their networking library. 📱📡
29+
30+
**flaker-android-ktor**: Contains the companion app that gets installed as a part of the library. This should be used for apps that use Ktor as their networking library. 📱🌐
31+
32+
**flaker-android**: Contains the companion app that gets installed as a part of the library. This should be used for apps that use both OkHttp and Ktor as their networking library. 📱📡🌐
2133

2234
### Verify
2335
We use `detekt` for static code analyis and a job is setup in github actions to run it on every PR. You can run it locally using the following command:
@@ -32,4 +44,9 @@ We use `detekt` for static code analyis and a job is setup in github actions to
3244
./gradlew detektMetadataCommonMain
3345
```
3446

35-
If you want to `detekt` to auto correct some of the stuff, please add the flag `--auto-correct` to the above commands.
47+
If you want to `detekt` to auto correct some of the stuff, please add the flag `--auto-correct` to the above commands.
48+
49+
## Contributing
50+
If you've found an error in this sample, please 🚩 file an issue.
51+
52+
Patches are encouraged and may be submitted by forking this project and submitting a pull request. Since this project is still in its very early stages, if your change is substantial, please raise an issue first to discuss it. 🤝

docs/getting-started.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
1+
---
2+
hide:
3+
- navigation
4+
---
5+
16
# Usage
27

3-
#### Installation (In Progress - Not yet published to maven central)
8+
## Installation
49

5-
Add the following dependency to your project.
10+
Add `mavenCentral()` to repositories in your `build.gradle` file.
611

712
```kotlin
8-
debugImplementation("io.github.rotbolt:flaker-android-okhttp:${latest_version}")
9-
releaseImplementation("io.github.rotbolt:flaker-android-okhttp-no-op:${latest_version}")
13+
repositories {
14+
mavenCentral()
15+
}
1016
```
1117

12-
**_NOTE:_** It is not yet published to maven central. But you can download all the modules from [github packages](https://github.com/RotBolt?tab=packages&repo_name=Flaker) and add them to your project for now.
18+
Add the following dependency to your `build.gradle`
19+
20+
```kotlin
21+
dependencies {
22+
debugImplementation("io.github.rotbolt:flaker-android-okhttp:${latest_version}")
23+
releaseImplementation("io.github.rotbolt:flaker-android-okhttp-noop:${latest_version}")
24+
}
25+
```
1326

1427
#### flaker-android-okhttp
1528
Add the following statement to your app's onCreate method.
@@ -28,9 +41,13 @@ Then in your okhttp client builder, add the following interceptor.
2841
.addInterceptor(FlakerInterceptor.Builder().build())
2942
.build()
3043
```
44+
That's it. Now upon installing your app, a companion app `flaker` will be installed on your device. You can use this app to configure the network conditions for your app.
3145

32-
#### flaker-android-ktor (In Progress)
46+
#### flaker-android-ktor
47+
In progress
3348

3449
#### flaker-ios-ktor (In Progress)
50+
In progress
3551

36-
That's it. Now you can use the companion app to simulate the network conditions.
52+
## Releases
53+
For the latest release versions, please check the [github releases](https://github.com/RotBolt/Flaker/releases)

docs/index.md

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,62 @@
1-
# Flaker
1+
---
2+
hide:
3+
- navigation
4+
---
25

3-
A flaky network simulator for your mobile app.
6+
# Flaker: A Flaky Network Simulator for Mobile App Development
7+
Developing a mobile app that performs flawlessly in the real world requires thorough testing under a variety of network conditions. Introducing Flaker – your assistant tool for recreating real-world network scenarios directly in your mobile app development environment. 📱💡
48

5-
Imagine effortlessly recreating real-world network scenarios directly for your mobile app development. With Flaker,- you gain the ability to mimic a variety of network conditions tailored for mobile app development.
9+
## What is Flaker?
10+
Flaker is a powerful network simulator designed to make your mobile app development process smoother and more efficient. With Flaker, you can effortlessly emulate a wide range of network conditions, enabling you to fine-tune your app's performance and ensure it delivers an exceptional user experience under any circumstance. 🌐🛠️
611

7-
- **Experience Slow Networks**: Wondering how your app performs on a slow network? Flaker lets you replicate these scenarios, helping you fine-tune your app's responsiveness.
8-
- **Emulate Flaky Networks**: Use fail percentage and variance controls to mirror the unpredictable nature of network connections. Get a firsthand feel for the scenarios your mobile app might encounter.
9-
- **Focused Impact**: Flaker only affects your app's network conditions, leaving your device's overall network functionality undisturbed.
12+
## Key Features:
13+
### Experience Slow Networks 🐢
14+
Ever wondered how your app would perform on a slow and sluggish network? With Flaker, you can replicate these scenarios with ease. Test your app's responsiveness and optimize its behavior under adverse network conditions. 🚀🐌
1015

11-
Whether you're a mobile app developer refining user experiences or a tester validating app resilience, Flaker offers an intuitive solution within your development workflow. Elevate your testing strategies and boost your app's performance with Flaker.
16+
### Emulate Flaky Networks 📶
17+
Network connections in the real world are rarely stable. Flaker allows you to introduce fail percentage and variance controls, mirroring the unpredictable nature of network connections. Gain a firsthand understanding of the challenges your mobile app might face and ensure it remains resilient. 🔮🔌
18+
19+
### Focused Impact 🎯
20+
Flaker is designed to impact only your app's network conditions, leaving your device's overall network functionality undisturbed. This means you can test and fine-tune your app's performance without affecting your entire device's connectivity. 📡🔍
21+
22+
## Who Can Benefit from Flaker?
23+
Whether you're a mobile app developer looking to enhance user experiences or a tester seeking to validate your app's resilience, Flaker provides an intuitive and indispensable tool within your development workflow. Elevate your testing strategies and boost your app's performance with Flaker.
24+
25+
Flaker empowers you to:
26+
27+
✅ Test under various network conditions
28+
29+
✅ Optimize your app for slow networks
30+
31+
✅ Prepare your app for flaky network connections
32+
33+
✅ Ensure your app's stability and reliability
34+
35+
✅ Enhance user satisfaction and retention
1236

1337
## flaker android demo
38+
📺 Checkout the demo here
1439

1540
<video width="800" controls>
1641
<source src="assets/flaker-android.mp4" type="video/mp4">
1742
</video>
1843

44+
## Built with
45+
46+
**Kotlin:** 🚀 The primary programming language.
47+
48+
**Kotlin Multiplatform:** 📱🍏 Sharing common logic across Android and iOS.
49+
50+
**Jetpack Compose**: 🖼️ For building the UI for the Android companion app. Supports dynamic theming.
51+
52+
**SqlDelight:** 📊 For a shared database and persistence layer between multiple platforms.
53+
54+
**Jetpack DataStore:** 📦 For the shared persistence layer to store user preferences and configuration of Flaker.
55+
56+
**Okhttp:** 📡 For creating Flaker for Android apps using Okhttp3 for networking.
57+
58+
**Ktor:** 🌐 For creating Flaker targeting both Android and iOS apps using Ktor for networking. (🚧 In Progress)
59+
60+
**SwiftUI:** 🍎 For building the UI for the iOS companion app. Supports dynamic theming. (🚧 In Progress)
61+
62+

mkdocs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ nav:
1111
- Development: development.md
1212
theme:
1313
name: 'material'
14-
favicon: assets/images/icon-square.png
14+
favicon: assets/logo.png
1515
logo: assets/logo.png
1616
palette:
1717
- media: "(prefers-color-scheme: light)"
1818
scheme: default
19-
primary: teal
19+
primary: red
2020
accent: blue
2121
toggle:
2222
icon: octicons/sun-24
2323
name: "Switch to Dark Mode"
2424
- media: "(prefers-color-scheme: dark)"
2525
scheme: slate
26-
primary: teal
26+
primary: red
2727
accent: blue
2828
toggle:
2929
icon: octicons/moon-24

0 commit comments

Comments
 (0)