Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/codelv/enaml-native

Build native mobile apps in python with enaml
https://github.com/codelv/enaml-native

android enaml native python

Last synced: about 2 months ago
JSON representation

Build native mobile apps in python with enaml

Awesome Lists containing this project

README

        

# enaml-native

[![status](https://github.com/codelv/enaml-native/actions/workflows/ci.yml/badge.svg)](https://github.com/codelv/enaml-native/actions) [![codecov](https://codecov.io/gh/codelv/enaml-native/branch/master/graph/badge.svg)](https://codecov.io/gh/codelv/enaml-native) [![Help chat](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/enaml-native/Lobby) [![Downloads](https://pepy.tech/badge/enaml-native/month)](https://pepy.tech/project/enaml-native/)

Build native mobile apps in python using enaml and native widgets!

The goal of this project is to be the python version of [react-native](https://facebook.github.io/react-native/). It targets apps that need to have a "native" look and feel and achieves this by reusing existing native Android and iOS widgets from python. It allows you to declaratively define a UI using python based language called [enaml](http://enaml.readthedocs.io/en/latest/get_started/introduction.html). The rest is "normal" python.

Kivy is still recommended for games and applications that need custom widgets that native Android and iOS libraries do not provide.

This is still a very young project but the results and feedback have been positive and promising. Thanks for dropping by!

### Docs and Examples ###

See the [project site](https://codelv.com/projects/enaml-native/) and [docs](https://codelv.com/projects/enaml-native/docs/getting-started/)

There's also some short tutorials and examples on [youtube](https://www.youtube.com/playlist?list=PLXUaMWWFaOjT2WdIrJdTYjEMJmrjuvVz0).

Slides from a presentation [here](https://prezi.com/p/ysvx5nhbntta/enaml-native/)

Need help? Chat on:

- gitter https://gitter.im/enaml-native/Lobby
- slack workspace https://enaml-native.slack.com/messages

##### Screenshots

[![Drawer Demo](https://user-images.githubusercontent.com/380158/38657098-60a43b9c-3dec-11e8-844b-4ac689417b7c.gif)](https://github.com/codelv/enaml-native/blob/master/examples/nav_drawer.enaml)

### Add-on Packages ###

Enaml-native was redesigned so separate "packages" can be created and installed to add new
native widgets and other apis. Similar to the [kivy-garden](https://github.com/kivy-garden/) but
it borrows the concepts of the [react-native package manager](https://github.com/rnpm/rnpm).

Packages can be created using the `enaml-native init-package ` command. Once
made they can be installed with `pip` or the `enaml-native install` command (recommended).

#### Packages ####

- GoogleMap support via [enaml-native-maps](https://github.com/codelv/enaml-native-maps)
- MPAndroidChart graphing via [enaml-native-charts](https://github.com/codelv/enaml-native-charts)
- ZXing barcode scanning via [enaml-native-barcode](https://github.com/codelv/enaml-native-barcode)
- Iconfiy icons via [enaml-native-icons](https://github.com/codelv/enaml-native-icons)

Created a package? Send a PR and add it here!

### Features ###
1. Enaml's features: declarative syntax, conditional and looper rendering, automatic data binding
2. Layouts with flexbox
3. Live app code reloading (like react-native's live reload)
4. Versioned package management and native library linking
5. Remote debugging with your favorite IDE (like react-native's remote debugger)

### Apps ###

Apps using enaml-native can be found [here](https://codelv.com/projects/enaml-native/apps/).

A short video showing of some of the apps I made are here

[![App examples](https://img.youtube.com/vi/VdV9HiLANyQ/0.jpg)](https://youtu.be/VdV9HiLANyQ)

### Demos ###
1. Try out the beta demo app here [on google play](https://play.google.com/store/apps/details?id=com.frmdstryr.enamlnative.demo)
2. Try out code without installing the android SDK or NDK via the [Python Playground](https://play.google.com/store/apps/details?id=com.frmdstryr.pythonplayground)!

### Status ###

##### Android

Currently enaml-native's Android support is good enough to make real usable app. A lot of components are supported and several apps have already been released using enaml-native.

##### iOS

Currently enaml-native's iOS support is not yet good enough to make a real app. Only a few components are implemented at the moment and a lot of work is needed to get it to the point where it's really usable, but my "proof of concept" demo shows that it does work.

### Thanks to ###

This project is built on top of several existing projects:

1. [enaml](https://github.com/nucleic/enaml)
2. [python-for-android](https://github.com/kivy/python-for-android/)
3. [pybridge](https://github.com/joaoventura/pybridge)
4. [react-native](https://github.com/facebook/react-native) (inspiration)
5. [pyjnius](https://github.com/kivy/pyjnius/)
6. [kivy-ios](https://github.com/kivy/kivy-ios/)

Please give them a star, thanks, and/or donation as without these this project would not exist!

### Contributions

Contributions of any kind are welcome. Please use the [numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) format
for docstrings and the [pep-8](https://www.python.org/dev/peps/pep-0008/) code style to be consistent with enaml.

### Donate

This is a project I develop in my free time. If you use enaml-native or simply like the project and want to help continue the development of it please consider [donating](https://codelv.com/projects/enaml-native/support/).