This is a template repository intended to get a quick up and running project for demonstration purposes.

Overview

Android App Template

This is a GitHub template repository intended to kickstart development on an Android application. This project comes set with a handful of tools that Adam finds important and relevant to every project. If you think something is missing, or feel strongly that a setup should be changed, please submit an Issue.

Using This Template

To use this template in your own project, click the "Use this template" button at the top right of the repository. Once you do, a repository will be created for your account that you can clone and use on your device.

Do note that once you do so, you'll need to update anywhere AndroidAppTemplate is referenced. This includes, but might not be limited to:

  • Project packages.
  • AndroidManifest file.
  • Strings.xml (for app_name string).

There is an open issue to automate this process.

What's Included

A number of third party dependencies are included in this template. They are also documented inside the documentation folder. The files inside this documentation folder are written in such a way that you can keep them in your real project, to let team members read up on why dependencies are included and how they work.

The dependencies in the template include:

Templates

There are also templates within this template. This repo comes shipped with a Pull Request Template that will help you and your team write organized and detailed pull request descriptions.

Dependency Setup

You may notice that dependencies are set up in a very specific way. Each of the tools has its own Gradle file in the buildscripts folder. This is by design so that if you chose to have a multi module project, these dependencies can easily be shared between them. This is already configured inside our root build.gradle file, by applying to each sub project:

subprojects {
    apply from: "../buildscripts/ktlint.gradle"
    apply from: "../buildscripts/detekt.gradle"
    apply from: "../buildscripts/versionsplugin.gradle"
}

In addition, there is a versions.gradle file which includes the version numbers of all dependencies used inside the app module. The benefit of moving them here, is that if any dependencies are shared between two modules, we only have to update the version number in one spot. As an added bonus, each dependency version also has a comment linking to the release page, so you can quickly reference to see what's changed.

Comments
  • Fixing build by using valid application ID.

    Fixing build by using valid application ID.

    Summary

    • The previous build failed because the app id was invalid. I've changed it.

    How It Was Tested

    • Added a template_change_test workflow to run on PR.
    enhancement 
    opened by AdamMc331 1
  • Adding Danger for #5.

    Adding Danger for #5.

    Summary

    • Fixes #5 by adding a Dangerfile and a GitHub Actions workflow to run Danger checks.

    How It Was Tested

    • CI running and verifying Danger outputs.
    enhancement 
    opened by AdamMc331 1
  • Automate App Name Change

    Automate App Name Change

    Right now, users of this template have to manually refactor package names, themes, and other resources. It would be really nice to write a script to manually update to the user's preferred naming.

    enhancement 
    opened by AdamMc331 0
  • Suggest moving away from ktlint-gradle

    Suggest moving away from ktlint-gradle

    JLLeitschuh doesn't appear very well maintained these days. There are a ton of github issues and the maintainers admit they don't have time to keep up. I suggest finding a replacement for this plugin.

    https://github.com/JLLeitschuh/ktlint-gradle/issues/569

    opened by stackunderflows 1
  • Using Kotlin build scripts?

    Using Kotlin build scripts?

    I'm wondering if we should change all the gradle files to gradle.kts files. This might be a little opinionated and not something everyone is interested in.

    opened by AdamMc331 2
  • Create detektAll task

    Create detektAll task

    This allows us to run detekt in parallel for each module, which would really help for anyone who uses this app to scale: https://proandroiddev.com/how-to-use-detekt-in-a-multi-module-android-project-6781937fbef2

    opened by AdamMc331 0
Owner
Adam McNeilly
Android developer at @CapsuleHealth, and author of @androidessence. Also an organizer for @GrizzHacks.
Adam McNeilly
This is an example repository to demonstrate the good practices of using ViewModel and how usage of AndroidViewModel can make things worst in a codebase

ViewModel Good Practices ??‍♂️ This is a example repository to demonstrate the good practices of using ViewModel and how usage of AndroidViewModel can

Shreyas Patil 29 Sep 28, 2022
Android Viper template with Kotlin, Dagger 2, Retrofit & RxJava

Android VIPER Architecture Example This repository contains a detailed sample client-server app that implements VIPER(View-Interactor-Presenter-Entity

OmiSoft 33 Nov 4, 2022
Template for MVVM Architecture Clean Code.

MVVM Template Kotlin Template for MVVM Architecture. This is basic template for android app follwing MVVM architecture and latest tech stack. You don'

mohamed tamer 28 Sep 26, 2022
This project was created as a demo project for implementing latest frameworks, Android APIs, tools, and techniques.

IWeather Android Application This project was created as a demo project for implementing latest frameworks, Android APIs, tools, and techniques. It fo

Ali Mansour 9 Dec 30, 2022
This is a simple application through which I connected Students, Courses and Teachers in an a beautiful way. The main purpose of this project is the connection between the Objects.

UniversityApp This is a simple application through which I connected Students, Courses and Teachers in an a beautiful way. The main purpose of this pr

Anas Khalil 3 Aug 21, 2021
This is An Android Project. in which we use SqLite Database. We perform Insert,delete,update and Show The existing data. operations using SqLite.

SqLite Database Keywords : SqLite, Android, Database This is An Android Project. in which we use SqLite Database. We perform Insert,delete,update and

Rudra_deep 1 Nov 7, 2021
ToDoAPP - The project is a task application that works on the basis of creating, editing, reading and deleting from the local database.

ToDoAPP - The project is a task application that works on the basis of creating, editing, reading and deleting from the local database. The project has the educational purpose of learning the latest technologies in Android, which I know so far at a basic level.

Aleks Milchov 0 Jan 2, 2022
Example Android library project that works with jitpack.io

android-example Example Android library project that works with jitpack.io. See this Tutorial on how to publish an Android Library with JitPack. For m

Denys Denysenko 0 Dec 20, 2021
NotesApp is a project which demonstrates the power of Kotlin's Ktor in developing powerful REST APIs with all basic as well as advanced features.

NotesApp NotesApp is a project which demonstrates the power of Kotlin's Ktor in developing powerful REST APIs with all basic as well as advanced featu

Rooparsh Kalia 1 Oct 18, 2021
A Project suggested by the Android Basics Course

Dogglers - Starter Code Starter code for the second independent project for Android Basics in Kotlin. Introduction This is the starter code for the Do

Sorin Noroc 2 Aug 31, 2022
Starter code for the first independent project for Android Basics in Kotlin

Project: Lemonade App - Starter Code Starter code for the first independent project for Android Basics in Kotlin Introduction This is the starter code

null 0 Oct 10, 2021
Starter code for the second independent project for Android Basics in Kotlin.

Dogglers - Starter Code Starter code for the second independent project for Android Basics in Kotlin. Introduction This is the starter code for the Do

Ibrahim Alfaifi 0 Nov 6, 2021
A simple project used for converting currencies

MyCurrencyConverter A simple project used for converting currencies. This project is divided into 2 parts (branches): master - without Dagger Hilt dev

null 0 Nov 5, 2021
Starter code for the second independent project for Android Basics in Kotlin

Dogglers - Starter Code Starter code for the second independent project for Android Basics in Kotlin. Introduction This is the starter code for the Do

null 0 Nov 6, 2021
Starter code for the third independent project for Android Basics in Kotlin

Lunch Tray - Starter Code Starter code for the third independent project for Android Basics in Kotlin Introduction This is the starter code for the Lu

Dania Puertas 0 Nov 11, 2021
Small project on using Room + MVVM + data binding

healthinfo This is a demo project that utilizes Room Database, MVVM, Data binding, Repositories, Retrofit and more to build an app that reads content

Mohammad Ali Fouani 0 Nov 24, 2021
Starter code for the third independent project for Android Basics in Kotlin

Lunch Tray - Starter Code Starter code for the third independent project for And

Aaron Socas Gaspar 0 Dec 29, 2021
The third project for Udacity's Android Nanodegree through Egypt FWD program

LoadApp In this project students will create an app to download a file from Internet by clicking on a custom-built button where: width of the button g

Ahmed Gamal 4 Sep 7, 2022
A collection of samples to discuss and showcase different architectural tools and patterns for Android apps.

Android Architecture Blueprints v2 Android Architecture Blueprints is a project to showcase different architectural approaches to developing Android a

Android 42k Jan 3, 2023