• Stars
    star
    511
  • Rank 86,473 (Top 2 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📦 Manage your own internal Android App Store.

Internal App Store

Manage your own internal Android App Store.
Web appAndroid app
🤖 Android CI


App Store

Table of contents

Demo

A public version of the web app is hosted on public-app-store.web.app.
The latest Android apk can also be downloaded here.

Features

  • Public or private access to the store

    • User roles (anonymous or verified users)
    • Account restrictions (only admins have write access)

    📷 Screenshots
    Web Android
  • Manage multiple applications

    • Notifications for new applications
    • Description with html support
    • Shortcuts for frequent actions

    📷 Screenshots
    Web Android
  • Manage multiple versions

    • Notifications for new versions
    • Upload apks or external links
    • Changelog with html support
    • Apk files are cached

    📷 Screenshots
    Web Android

Deploy

Requirements

Configure

  • Replace applicationId with your own unique id in app/build.gradle
  • Create a Firebase project https://console.firebase.google.com
  • Select Add Firebase to your Android app and fill in the form
  • Download the config file google-services.json and move it to your Android app module root directory
  • In the Firebase Authentication page, enable sign-in methods, then create your first admin user
  • In the Firebase project settings, select ADD APP and Add Firebase to your web app
  • When using Firebase Hosting and the CLI, Web SDK auto-configuration is enabled by default
  • Verify the configuration of each module
    • Android: Store.kt

    • Web: index.js

    • Firebase Database: use your own domain

      Database schema
      ├──admins
      │   └──{$uid}
      ├──store
      │   ├──applications
      │   │   └──{$application_id}
      │   │       ├──name
      │   │       ├──packageName
      │   │       ├──description
      │   │       ├──image
      │   │       ├──link_{#}
      │   │       │   ├──name
      │   │       │   └──uri
      │   │       └──silent
      │   └──versions
      │       └──{$application_id}
      │           └──{$version_id}
      │               ├──name
      │               ├──description
      │               ├──timestamp
      │               ├──apkRef
      │               ├──apkGeneration
      │               ├──apkUrl
      │               ├──silent
      │               ├──downloads
      │               └──installs
      └──analytics
          ├──downloads
          │   └──{$application_id}
          │       └──{$version_id}
          │           └──{$uid}
          └──installs
              └──{$application_id}
                  └──{$version_id}
                      └──{$uid}
      
    • Firebase Storage: use your own domain

      Storage schema
      └──applications
          └──{$applicationUid}
              │──image
              └──versions
                  └──{$versionUid}.apk
      

Initialize

  • Initialize Firebase module
    # Move to Firebase root directory
    cd firebase
    # Initialize Firebase (login popup)
    firebase login
    # Set the default Firebase project
    firebase use --add
  • Add your first admin user (uid found in Firebase Authentication page)
    • Firebase Database, add admin uid
      firebase database:update /admins --data '{"<admin-uid>" : "<admin-email>"}'
      # On Windows, create a JSON file instead (unsupported JSON input)
      firebase database:update /admins update.json
    • Firebase Storage, add admin uid

Deploy

  • Test web app on your machine http://localhost:5000
    firebase serve
  • Deploy all Firebase modules (database, storage, hosting, functions)
    firebase deploy
  • Sync, build and install Android module from Android Studio

Settings

A lot of settings can be tweaked in both web and Android apps

  • Store icons and titles
  • Firebase auth providers
  • Maximum apk size
  • Admin write access
  • Store visibility (private or public)

Backup

  • Firebase Database (Link 1, Link 2)
    // Backup
    firebase database:get / --pretty > database.json
    // Restore
    firebase database:set / database.json
  • Firebase Storage (Link)
    // Backup
    gsutil -m cp -R gs://<bucket_name> .
    // Restore
    gsutil -m cp -R . gs://<bucket_name>

License

Copyright 2018 Simon Marquis

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

    http://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.

More Repositories

1

FCM-toolbox

📲 Firebase Cloud Messaging toolbox
Kotlin
388
star
2

Android-SecretCodes

Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone.
Java
296
star
3

AR-Toolbox

🧰 ARCore & Sceneform Playground
Kotlin
282
star
4

Android-PreferencesManager

⚙️ Preferences Manager is an Open Source application that allows you to seamlessly edit application's preferences.
Java
157
star
5

Android-App-Linking

🔗 The ultimate developer guide to Android application linking methods
Kotlin
93
star
6

SleepTimer

💤 Simplest Sleep Timer
Kotlin
90
star
7

Android-InstallReferrer

Install Referrer is an Open Source application that allows you to test the referrer attribute on the Google Play Store
Java
79
star
8

Android-Spans

Kotlin and Java wrappers around SpannableStringBuilder (Inspired by JakeWharton's Truss and Kotlin's kotlinx.html)
Java
71
star
9

QrCode

🏁 Scan and create QR Codes.
Kotlin
62
star
10

Android-UrlSchemeInterceptor

Intercept and debug url scheme on Android
Java
33
star
11

Android-SoundQuickSettings

🔊 A simple Quick Settings Tile to control the sound volume.
Kotlin
28
star
12

SealedObjectInstances

A Kotlin Symbol Processor to list sealed object instances.
Kotlin
26
star
13

Maven-Dependency-Tree

🌲 Kotlin script to list transitive dependencies of a Maven artifact.
Kotlin
21
star
14

Android-Snippets

Snippets for Android developers
19
star
15

Android-Version-Distribution

Kotlin
7
star
16

svg2avd

⚙️ Kotlin script to convert SVG files to AVD (Android Vector Drawable)
Kotlin
4
star
17

TIL

🗓️ Today I Learned
HTML
3
star
18

FTL-segfault

Kotlin
3
star
19

Preferences-filtering

🔎 Search through Android's Preferences screens
Kotlin
2
star
20

Firebase-Test-Lab-Devices

2
star
21

kotlinx.serialization-2385

Reproducer for https://github.com/Kotlin/kotlinx.serialization/issues/2385
Kotlin
1
star
22

GitHub-Actions-Playground

🛝 Playground for GitHub Actions
Kotlin
1
star
23

advent-of-code-2023

🎄
Kotlin
1
star
24

mkdocs-material-7044

Reproducer for https://github.com/squidfunk/mkdocs-material/issues/7044
1
star
25

JavaAgent

👮 Detect suppressed exceptions in unit tests.
Kotlin
1
star
26

Firebase-Remote-Config-Changes-Notifier

🔥 Notify changes in Firebase Remote Config in real time through Slack Webhooks.
JavaScript
1
star
27

ci-gradle-properties-action

🐘 Copy Gradle properties file to the CI's home directory.
1
star
28

android-accept-licenses

Accept Android licenses with `sdkmanager`.
1
star