Skip to content

Commit fd1e555

Browse files
committed
deploy: 6c8f269
1 parent 8828178 commit fd1e555

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

getting-started/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,11 @@ <h1 id="getting-started">Getting Started<a class="headerlink" href="#getting-sta
752752
<ul>
753753
<li>Install: <code>pip install pythonnative</code></li>
754754
<li>Create a project: <code>pn init my_app</code></li>
755+
<li>Scaffolds <code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>, <code>.gitignore</code></li>
755756
<li>Run: <code>pn run android</code> or <code>pn run ios</code></li>
757+
<li>Uses bundled templates; copies your <code>app/</code> into the platform project</li>
758+
<li>Clean: <code>pn clean</code></li>
759+
<li>Removes the <code>build/</code> directory safely</li>
756760
</ul>
757761

758762

search/search_index.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"PythonNative","text":"<p>Build native Android and iOS apps with Python. PythonNative provides a Pythonic API for native UI components and a simple CLI to scaffold and run projects.</p>"},{"location":"examples/","title":"Examples","text":"<p>A collection of simple examples showing PythonNative components and patterns.</p>"},{"location":"getting-started/","title":"Getting Started","text":"<pre><code>pip install pythonnative\npn --help\n</code></pre> <ul> <li>Install: <code>pip install pythonnative</code></li> <li>Create a project: <code>pn init my_app</code></li> <li>Run: <code>pn run android</code> or <code>pn run ios</code></li> </ul>"},{"location":"api/pythonnative/","title":"pythonnative package","text":"<p>API reference will be generated here via mkdocstrings.</p>"},{"location":"concepts/components/","title":"Components","text":"<p>High-level overview of PythonNative components and how they map to native UI.</p>"},{"location":"examples/hello-world/","title":"Hello World","text":"<p>A minimal placeholder example. Replace with a real example later.</p>"},{"location":"guides/android/","title":"Android Guide","text":"<p>Basic steps to build and run an Android project generated by <code>pn</code>.</p>"},{"location":"guides/ios/","title":"iOS Guide","text":"<p>Basic steps to build and run an iOS project generated by <code>pn</code>.</p>"},{"location":"meta/contributing/","title":"Contributing","text":"<p>See repository CONTRIBUTING.md for full guidelines.</p>"},{"location":"meta/roadmap/","title":"PythonNative Roadmap (v0.2.0 \u2192 v0.10.0)","text":"<p>This roadmap focuses on transforming PythonNative into a workable, React Native / Expo-like framework from a developer-experience and simplicity standpoint. Releases are incremental and designed to be shippable, with DX-first improvements balanced with platform capability.</p> <p>Assumptions - Current version: 0.1.0 - Scope: Android (Chaquopy/Java bridge) and iOS (Rubicon-ObjC), Python 3.9\u20133.12 - Goals: Zero-config templates, one CLI, fast iteration loop, portable component API, and a curated subset of native capabilities with room to expand.</p> <p>Guiding Principles - Single CLI for init/run/build/clean. - Convention over configuration: opinionated project layout (<code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>). - Hot reload (where feasible) and rapid feedback. - Stable component API; platform shims kept internal. - Progressive enhancement: start with a minimal but complete loop, add breadth and depth over time.</p> <p>Milestones</p> <p>0.2.0 \u2014 Foundations: DX Baseline and Templates - CLI - pn init: generate project with <code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>, <code>.gitignore</code>. - pn run android|ios: scaffold template apps (from bundled zips), copy <code>app/</code>, install requirements, build+install/run. - pn clean: remove <code>build/</code> safely. - Templates - Bundle <code>templates/android_template.zip</code> and <code>templates/ios_template.zip</code> into package to avoid network. - Ensure Android template uses Kotlin+Chaquopy; iOS template uses Swift+PythonKit+Rubicon. - Core APIs - Stabilize <code>Page</code>, <code>StackView</code>, <code>Label</code>, <code>Button</code>, <code>ImageView</code>, <code>TextField</code>, <code>TextView</code>, <code>Switch</code>, <code>ProgressView</code>, <code>ActivityIndicatorView</code>, <code>WebView</code> with consistent ctor patterns. - Add <code>utils.IS_ANDROID</code> fallback detection improvements. - Docs - Getting Started (one page), Hello World, Concepts: Components, Guides: Android/iOS quickstart. - Roadmap (this page). Contributing.</p> <p>Success Criteria - New user can: pn init \u2192 pn run android \u2192 sees Hello World UI; same for iOS.</p> <p>0.3.0 \u2014 Navigation and Lifecycle - API - Page navigation abstraction with push/pop (Android: Activity/Fragment shim, iOS: UINavigationController). - Lifecycle events stabilized and wired from host to Python (on_create/start/resume/pause/stop/destroy). - Templates - Two-screen sample demonstrating navigation and parameter passing. - Docs - Navigation guide with examples.</p> <p>Success Criteria - Sample app navigates between two pages on both platforms using the same Python API.</p> <p>0.4.0 \u2014 Layout and Styling Pass - API - Improve <code>StackView</code> configuration: axis, spacing, alignment; add <code>ScrollView</code> wrapping helpers. - Add lightweight style API (padding/margin where supported, background color, text color/size for text components). - DX - Component property setters return self for fluent configuration where ergonomic. - Docs - Styling guide and component property reference.</p> <p>Success Criteria - Build complex vertical forms and simple horizontal layouts with predictable results on both platforms.</p> <p>0.5.0 \u2014 Developer Experience: Live Reload Loop - DX - pn dev android|ios: dev server watching <code>app/</code> with file-sync into running app. - Implement soft-reload: trigger Python module reload and page re-render without full app restart where possible. - Fallback to fast reinstall when soft-reload not possible. - Templates - Integrate dev menu gesture (e.g., triple-tap or shake) to trigger reload. - Docs - Dev workflow: live reload expectations and caveats.</p> <p>Success Criteria - Edit Python in <code>app/</code>, trigger near-instant UI update on device/emulator.</p> <p>0.6.0 \u2014 Forms and Lists - API - <code>ListView</code> cross-platform wrapper with simple adapter API (Python callback to render rows, handle click). - Input controls: <code>DatePicker</code>, <code>TimePicker</code>, basic validation utilities. - Add <code>PickerView</code> parity or mark as experimental if iOS-first. - Performance - Ensure cell reuse on Android/iOS to handle 1k-row lists smoothly. - Docs - Lists guide, forms guide with validation patterns.</p> <p>Success Criteria - Build a basic todo app with a scrollable list and an add-item form.</p> <p>0.7.0 \u2014 Networking, Storage, and Permissions Primitives - API - Simple <code>fetch</code>-like helper (thin wrapper over requests/URLSession with threading off main UI thread). - Key-value storage abstraction (Android SharedPreferences / iOS UserDefaults). - Permission prompts helper (camera, location, notifications) with consistent API returning futures/promises. - DX - Background threading utilities for long-running tasks with callback to main thread. - Docs - Data fetching, local storage, permissions cookbook.</p> <p>Success Criteria - Build a data-driven screen that fetches remote JSON, caches a token, and requests permission.</p> <p>0.8.0 \u2014 Theming and Material Components (Android parity), iOS polish - API - Theme object for colors/typography; propagate defaults to components. - Material variants: MaterialButton, MaterialProgress, MaterialSearchBar, MaterialSwitch stabilized. - iOS polishing: ensure UIKit equivalents\u2019 look-and-feel is sensible by default. - DX - Dark/light theme toggling hook. - Docs - Theming guide with examples.</p> <p>Success Criteria - Switch between light/dark themes and see consistent component styling across screens.</p> <p>0.9.0 \u2014 Packaging, Testing, and CI - CLI - pn build android|ios: produce signed (debug) APK/IPA or x archive guidance; integrate keystore setup helper for Android. - pn test: run Python unit tests; document UI test strategy (manual/host-level instrumentation later). - Tooling - Add ruff/black/mypy default config and <code>pn fmt</code>, <code>pn lint</code> wrappers. - Docs - Release checklist; testing guide.</p> <p>Success Criteria - Produce installable builds via pn build; run unit tests with a single command.</p> <p>0.10.0 \u2014 Plugin System (Early) and Project Orchestration - Plugins - Define <code>pythonnative.plugins</code> entry point allowing add-ons (e.g., Camera, Filesystem) to register platform shims. - pn plugin add : scaffold plugin structure and install dependency. - Orchestration - Config-driven <code>pythonnative.json</code>: targets, app id/name, icons/splash, permissions, minSDK/iOS version. - Asset pipeline: copy assets to correct platform locations. - Docs - Plugin authoring guide; configuration reference. <p>Success Criteria - Install a community plugin and use it from Python without touching native code.</p> <p>Backlog and Stretch (post-0.10) - Cross-platform navigation stack parity (Fragments vs Activities, or single-activity multi-fragment on Android). - Advanced layout (ConstraintLayout/AutoLayout helpers) with declarative constraints. - Gesture/touch handling unification, animations/transitions. - Expo-like over-the-air updates pipeline. - Desktop/web exploration via PyObjC/Qt bridges (research).</p> <p>Breaking Changes Policy - Pre-1.0: Minor versions may include breaking changes; provide migration notes and deprecation warnings one release ahead when possible.</p> <p>Tracking and Releases - Each milestone will have a GitHub project board and labeled issues. - Changelogs maintained per release; upgrade guides in docs.</p>"}]}
1+
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"PythonNative","text":"<p>Build native Android and iOS apps with Python. PythonNative provides a Pythonic API for native UI components and a simple CLI to scaffold and run projects.</p>"},{"location":"examples/","title":"Examples","text":"<p>A collection of simple examples showing PythonNative components and patterns.</p>"},{"location":"getting-started/","title":"Getting Started","text":"<pre><code>pip install pythonnative\npn --help\n</code></pre> <ul> <li>Install: <code>pip install pythonnative</code></li> <li>Create a project: <code>pn init my_app</code></li> <li>Scaffolds <code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>, <code>.gitignore</code></li> <li>Run: <code>pn run android</code> or <code>pn run ios</code></li> <li>Uses bundled templates; copies your <code>app/</code> into the platform project</li> <li>Clean: <code>pn clean</code></li> <li>Removes the <code>build/</code> directory safely</li> </ul>"},{"location":"api/pythonnative/","title":"pythonnative package","text":"<p>API reference will be generated here via mkdocstrings.</p>"},{"location":"concepts/components/","title":"Components","text":"<p>High-level overview of PythonNative components and how they map to native UI.</p>"},{"location":"examples/hello-world/","title":"Hello World","text":"<p>A minimal placeholder example. Replace with a real example later.</p>"},{"location":"guides/android/","title":"Android Guide","text":"<p>Basic steps to build and run an Android project generated by <code>pn</code>.</p>"},{"location":"guides/ios/","title":"iOS Guide","text":"<p>Basic steps to build and run an iOS project generated by <code>pn</code>.</p>"},{"location":"meta/contributing/","title":"Contributing","text":"<p>See repository CONTRIBUTING.md for full guidelines.</p>"},{"location":"meta/roadmap/","title":"PythonNative Roadmap (v0.2.0 \u2192 v0.10.0)","text":"<p>This roadmap focuses on transforming PythonNative into a workable, React Native / Expo-like framework from a developer-experience and simplicity standpoint. Releases are incremental and designed to be shippable, with DX-first improvements balanced with platform capability.</p> <p>Assumptions - Current version: 0.1.0 - Scope: Android (Chaquopy/Java bridge) and iOS (Rubicon-ObjC), Python 3.9\u20133.12 - Goals: Zero-config templates, one CLI, fast iteration loop, portable component API, and a curated subset of native capabilities with room to expand.</p> <p>Guiding Principles - Single CLI for init/run/build/clean. - Convention over configuration: opinionated project layout (<code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>). - Hot reload (where feasible) and rapid feedback. - Stable component API; platform shims kept internal. - Progressive enhancement: start with a minimal but complete loop, add breadth and depth over time.</p> <p>Milestones</p> <p>0.2.0 \u2014 Foundations: DX Baseline and Templates - CLI - pn init: generate project with <code>app/</code>, <code>pythonnative.json</code>, <code>requirements.txt</code>, <code>.gitignore</code>. - pn run android|ios: scaffold template apps (from bundled zips), copy <code>app/</code>, install requirements, build+install/run. - pn clean: remove <code>build/</code> safely. - Templates - Bundle <code>templates/android_template.zip</code> and <code>templates/ios_template.zip</code> into package to avoid network. - Ensure Android template uses Kotlin+Chaquopy; iOS template uses Swift+PythonKit+Rubicon. - Core APIs - Stabilize <code>Page</code>, <code>StackView</code>, <code>Label</code>, <code>Button</code>, <code>ImageView</code>, <code>TextField</code>, <code>TextView</code>, <code>Switch</code>, <code>ProgressView</code>, <code>ActivityIndicatorView</code>, <code>WebView</code> with consistent ctor patterns. - Add <code>utils.IS_ANDROID</code> fallback detection improvements. - Docs - Getting Started (one page), Hello World, Concepts: Components, Guides: Android/iOS quickstart. - Roadmap (this page). Contributing.</p> <p>Success Criteria - New user can: pn init \u2192 pn run android \u2192 sees Hello World UI; same for iOS.</p> <p>0.3.0 \u2014 Navigation and Lifecycle - API - Page navigation abstraction with push/pop (Android: Activity/Fragment shim, iOS: UINavigationController). - Lifecycle events stabilized and wired from host to Python (on_create/start/resume/pause/stop/destroy). - Templates - Two-screen sample demonstrating navigation and parameter passing. - Docs - Navigation guide with examples.</p> <p>Success Criteria - Sample app navigates between two pages on both platforms using the same Python API.</p> <p>0.4.0 \u2014 Layout and Styling Pass - API - Improve <code>StackView</code> configuration: axis, spacing, alignment; add <code>ScrollView</code> wrapping helpers. - Add lightweight style API (padding/margin where supported, background color, text color/size for text components). - DX - Component property setters return self for fluent configuration where ergonomic. - Docs - Styling guide and component property reference.</p> <p>Success Criteria - Build complex vertical forms and simple horizontal layouts with predictable results on both platforms.</p> <p>0.5.0 \u2014 Developer Experience: Live Reload Loop - DX - pn dev android|ios: dev server watching <code>app/</code> with file-sync into running app. - Implement soft-reload: trigger Python module reload and page re-render without full app restart where possible. - Fallback to fast reinstall when soft-reload not possible. - Templates - Integrate dev menu gesture (e.g., triple-tap or shake) to trigger reload. - Docs - Dev workflow: live reload expectations and caveats.</p> <p>Success Criteria - Edit Python in <code>app/</code>, trigger near-instant UI update on device/emulator.</p> <p>0.6.0 \u2014 Forms and Lists - API - <code>ListView</code> cross-platform wrapper with simple adapter API (Python callback to render rows, handle click). - Input controls: <code>DatePicker</code>, <code>TimePicker</code>, basic validation utilities. - Add <code>PickerView</code> parity or mark as experimental if iOS-first. - Performance - Ensure cell reuse on Android/iOS to handle 1k-row lists smoothly. - Docs - Lists guide, forms guide with validation patterns.</p> <p>Success Criteria - Build a basic todo app with a scrollable list and an add-item form.</p> <p>0.7.0 \u2014 Networking, Storage, and Permissions Primitives - API - Simple <code>fetch</code>-like helper (thin wrapper over requests/URLSession with threading off main UI thread). - Key-value storage abstraction (Android SharedPreferences / iOS UserDefaults). - Permission prompts helper (camera, location, notifications) with consistent API returning futures/promises. - DX - Background threading utilities for long-running tasks with callback to main thread. - Docs - Data fetching, local storage, permissions cookbook.</p> <p>Success Criteria - Build a data-driven screen that fetches remote JSON, caches a token, and requests permission.</p> <p>0.8.0 \u2014 Theming and Material Components (Android parity), iOS polish - API - Theme object for colors/typography; propagate defaults to components. - Material variants: MaterialButton, MaterialProgress, MaterialSearchBar, MaterialSwitch stabilized. - iOS polishing: ensure UIKit equivalents\u2019 look-and-feel is sensible by default. - DX - Dark/light theme toggling hook. - Docs - Theming guide with examples.</p> <p>Success Criteria - Switch between light/dark themes and see consistent component styling across screens.</p> <p>0.9.0 \u2014 Packaging, Testing, and CI - CLI - pn build android|ios: produce signed (debug) APK/IPA or x archive guidance; integrate keystore setup helper for Android. - pn test: run Python unit tests; document UI test strategy (manual/host-level instrumentation later). - Tooling - Add ruff/black/mypy default config and <code>pn fmt</code>, <code>pn lint</code> wrappers. - Docs - Release checklist; testing guide.</p> <p>Success Criteria - Produce installable builds via pn build; run unit tests with a single command.</p> <p>0.10.0 \u2014 Plugin System (Early) and Project Orchestration - Plugins - Define <code>pythonnative.plugins</code> entry point allowing add-ons (e.g., Camera, Filesystem) to register platform shims. - pn plugin add : scaffold plugin structure and install dependency. - Orchestration - Config-driven <code>pythonnative.json</code>: targets, app id/name, icons/splash, permissions, minSDK/iOS version. - Asset pipeline: copy assets to correct platform locations. - Docs - Plugin authoring guide; configuration reference. <p>Success Criteria - Install a community plugin and use it from Python without touching native code.</p> <p>Backlog and Stretch (post-0.10) - Cross-platform navigation stack parity (Fragments vs Activities, or single-activity multi-fragment on Android). - Advanced layout (ConstraintLayout/AutoLayout helpers) with declarative constraints. - Gesture/touch handling unification, animations/transitions. - Expo-like over-the-air updates pipeline. - Desktop/web exploration via PyObjC/Qt bridges (research).</p> <p>Breaking Changes Policy - Pre-1.0: Minor versions may include breaking changes; provide migration notes and deprecation warnings one release ahead when possible.</p> <p>Tracking and Releases - Each milestone will have a GitHub project board and labeled issues. - Changelogs maintained per release; upgrade guides in docs.</p>"}]}

0 commit comments

Comments
 (0)