Customized Android apps builder with scalability in mind
Video Demonstration Stack:
- Centrifugo - 🐙 - Scalable real-time messaging server in language-agnostic way. Set up once and forever. Allow users of White-label builder to get build results faster.
- Celery - 🐙 - Distributed Task Queue to scale build workers easily.
- Redis - 🐙 - In-memory database that persists on disk.
- ReactJS - 🛠️ - 🐙 - A declarative, efficient, and flexible JavaScript library for building user interfaces.
- Redux - 🛠 - 🐙 - Predictable state container for JavaScript apps.
- Django - 🛠 - 🐙 - The Web framework for perfectionists with deadlines.
- Webpack - 🛠️ - 🐙 - A static module bundler for modern JavaScript applications.
- Babel - 🛠️ - 🐙 - A JavaScript compiler; use next generation JavaScript, today.
- Node.js - 🛠️ - 🐙 - A JavaScript runtime built on Chrome's V8 JavaScript engine.
- Material UI - 🛠️ - 🐙 - React components that implement Google's Material Design.
- Python - 🛠️ - 🐙 - A programming language that lets you work quickly.
Usage:
- User customize app using web form and create build task
- Server emit task in queue for build workers
- Worker create build flavor, edit app resources and start gradle build
- After build user get QR code to download apk
Android App repo for this demo materkey/white-label.git
is private because it provides Delivery Club API details. Reproducing apk build without android app repository require modifications to existing code. Making it universal solution for arbitrary app is a future plan.
git clone git@github.com:materkey/white-label-builder.git
cd white-label-builder/
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt
cd whitelabelbuilder/
npm install
npm run-script build
ornpm run-script start
cd ../
mkdir white-label
cd white-label
git clone git@github.com:materkey/white-label.git
cd white-label
git checkout develop
and add secrets.xml to values folder of android project res in defaultFlavor- Change directory to
centrifugo/
./centrifugo genconfig
- Setup
django.conf
in root of project, create db for app and and copy centrifuge secret fromconfig.json
todjango.conf
./centrifugo --config=config.json --insecure --web --admin --port=8081 --address=127.0.0.1
- In new terminal tab change dir to white-label-builder/whitelabelbuilder
source ../env/bin/activate
celery -A whitelabelbuilder worker -l INFO -E
- In new tab keep directory to
white-label-builder/whitelabelbuilder/
source ../env/bin/activate
./manage.py migrate
./manage.py runserver
- To create task you have to be logged in through VK OAUTH2