s-ayush2903 / KeepItClean

A phenomenal implementation of Pure Architecture
4 stars 5 forks source link
ci cleanarchitecture dagger2 dfm firebase firestore gson kt-dsl kts ktx mvi notesapp retrofit2 room2 statemanagement tdd testing uitesting

pipeline status

KeepItClean

An awesome implementation of MVI and Clean Architecture. The current project makes use of all the latest depedencies and android tools. The project is completely written in kotlin, cherry on the ice is that the gradle files too are writtend using DSLs that make this project up to date till now. The project follows complete Test Driven Development. A star thing in this TDD is that the testing is performed even before the Presentation Layer(UI components) are prepared. The project is stale nowadays due to multiple engagements but will be continued soon

Deploying to Appetize.io

Follow these steps to deploy your app to appetize.io:-

  1. Get an API token from here: https://appetize.io/docs#request-api-token.
  2. Create a CI/CD variable for api token named "APPETIZE_API".
    Follow this guide to learn how to add CI/CD variables to your gitlab repository: https://docs.gitlab.com/ee/ci/variables/#creating-a-custom-environment-variable
  3. Run the following command once to upload the app.
    curl https://API_TOKEN@api.appetize.io/v1/apps -F "file=@path_of_file_to_be_uploaded.apk" -F "platform=android"
    Replace API_TOKEN with the api token you got in step 1.
    Replace file_to_upload.apk with your apk file.
  4. Command in step 3 will return a response. Note the public key from your response and add a CI/CD varible named "APPETIZE_KEY" and enter this public key as value.
    Make sure to make both the varibales protected and make your branch protected too. Follow this guide: https://docs.gitlab.com/ee/user/project/protected_branches.html#configuring-protected-branches

    This is a one time setup, subsequent changes you make in your repository will be reflected in your link you got in the response automatically.

Info regarding the branch(deepenCore)

State Management