assayflux 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. assayflux-0.1.0/LICENSE +17 -0
  2. assayflux-0.1.0/MANIFEST.in +10 -0
  3. assayflux-0.1.0/PKG-INFO +214 -0
  4. assayflux-0.1.0/README.md +181 -0
  5. assayflux-0.1.0/RELEASE_NOTES_0.1.0.md +13 -0
  6. assayflux-0.1.0/RELEASE_NOTES_0.5.0.md +26 -0
  7. assayflux-0.1.0/RELEASE_NOTES_0.6.0.md +9 -0
  8. assayflux-0.1.0/RELEASE_NOTES_0.7.0.md +16 -0
  9. assayflux-0.1.0/docs/ARCHITECTURE.md +12 -0
  10. assayflux-0.1.0/docs/GOOGLE_COLAB_ANDROID.md +105 -0
  11. assayflux-0.1.0/docs/PUBLISHING_CHECKLIST.md +20 -0
  12. assayflux-0.1.0/docs/ROADMAP.md +21 -0
  13. assayflux-0.1.0/docs/RUNTIME_SETUP.md +30 -0
  14. assayflux-0.1.0/docs/VERIFICATION_MATRIX_0.1.0.md +24 -0
  15. assayflux-0.1.0/docs/WEB_TO_ANDROID.md +35 -0
  16. assayflux-0.1.0/pyproject.toml +52 -0
  17. assayflux-0.1.0/scripts/setup_colab_android.sh +20 -0
  18. assayflux-0.1.0/scripts/termux_install.sh +9 -0
  19. assayflux-0.1.0/setup.cfg +4 -0
  20. assayflux-0.1.0/src/assayflux/__init__.py +5 -0
  21. assayflux-0.1.0/src/assayflux/__main__.py +2 -0
  22. assayflux-0.1.0/src/assayflux/builder.py +196 -0
  23. assayflux-0.1.0/src/assayflux/cli.py +101 -0
  24. assayflux-0.1.0/src/assayflux/doctor.py +19 -0
  25. assayflux-0.1.0/src/assayflux/engines/__init__.py +23 -0
  26. assayflux-0.1.0/src/assayflux/engines/base.py +29 -0
  27. assayflux-0.1.0/src/assayflux/errors.py +11 -0
  28. assayflux-0.1.0/src/assayflux/generator.py +343 -0
  29. assayflux-0.1.0/src/assayflux/planner.py +8 -0
  30. assayflux-0.1.0/src/assayflux/project.py +43 -0
  31. assayflux-0.1.0/src/assayflux/relay.py +26 -0
  32. assayflux-0.1.0/src/assayflux/runtimes.py +98 -0
  33. assayflux-0.1.0/src/assayflux/validation.py +22 -0
  34. assayflux-0.1.0/src/assayflux.egg-info/PKG-INFO +214 -0
  35. assayflux-0.1.0/src/assayflux.egg-info/SOURCES.txt +39 -0
  36. assayflux-0.1.0/src/assayflux.egg-info/dependency_links.txt +1 -0
  37. assayflux-0.1.0/src/assayflux.egg-info/entry_points.txt +2 -0
  38. assayflux-0.1.0/src/assayflux.egg-info/requires.txt +5 -0
  39. assayflux-0.1.0/src/assayflux.egg-info/top_level.txt +1 -0
  40. assayflux-0.1.0/tests/test_cli.py +51 -0
  41. assayflux-0.1.0/tests/test_project.py +232 -0
@@ -0,0 +1,17 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AssayFlux
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -0,0 +1,10 @@
1
+ include README.md
2
+ include LICENSE
3
+ include RELEASE_NOTES_0.5.0.md
4
+ include RELEASE_NOTES_0.6.0.md
5
+ include RELEASE_NOTES_0.7.0.md
6
+ recursive-include docs *.md
7
+ recursive-include scripts *.sh
8
+ recursive-include tests *.py
9
+
10
+ include RELEASE_NOTES_0.1.0.md
@@ -0,0 +1,214 @@
1
+ Metadata-Version: 2.4
2
+ Name: assayflux
3
+ Version: 0.1.0
4
+ Summary: A cross-platform developer toolkit for generating projects, checking language toolchains, running code, validating websites, and orchestrating native and Android builds.
5
+ Author-email: Md Safarujjaman <assayflux@gmail.com>, Md Sahanujjaman <assayflux@gmail.com>
6
+ Maintainer-email: AssayFlux Scientific Systems <company@assayflux.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://www.assayflux.org
9
+ Project-URL: Official Website (.com), https://www.assayflux.com
10
+ Project-URL: Organization, https://www.assayflux.org
11
+ Project-URL: GitHub, https://github.com/AssayFlux
12
+ Keywords: AssayFlux,AssayFlux Scientific Systems,Md Safarujjaman,Md Sahanujjaman,India,West Bengal,Kolkata,build-tool,project-generator,website,android,apk,aab,multi-language,Python,C++,R,TypeScript,Go,Rust,SQL,scientific-computing,developer-tools
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Software Development :: Build Tools
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=8.0; extra == "dev"
30
+ Requires-Dist: build>=1.2; extra == "dev"
31
+ Requires-Dist: twine>=5.1; extra == "dev"
32
+ Dynamic: license-file
33
+
34
+ # AssayFlux
35
+
36
+ **Version:** 0.1.0
37
+ **Authors:** Md Safarujjaman and Md Sahanujjaman
38
+ **Company:** AssayFlux Scientific Systems · **Country:** India · **State:** West Bengal · **Region:** Kolkata
39
+ **Author email:** assayflux@gmail.com · **Company email:** company@assayflux.com
40
+ **GitHub:** [AssayFlux](https://github.com/AssayFlux)
41
+ **Official websites:** [assayflux.org](https://www.assayflux.org) · [assayflux.com](https://www.assayflux.com)
42
+
43
+ **AssayFlux is a cross-platform developer toolkit for turning project ideas into organized, runnable software workspaces.** Its Python-powered CLI generates starter projects, checks language toolchains, plans tasks, runs supported code, validates website assets, packages source, and orchestrates Android APK/AAB builds when the required SDK and build tools are installed. It is designed to bring multiple development workflows under one consistent interface while preserving the role of each language's native runtime, compiler, and build system.
44
+
45
+ AssayFlux does not translate arbitrary source code between languages. A reported successful build means the requested build command and artifact checks succeeded; it does not replace runtime testing on a device or deployment environment.
46
+
47
+ ## Project ownership and official links
48
+
49
+ - Authors: **Md Safarujjaman** and **Md Sahanujjaman**
50
+ - Author email: **assayflux@gmail.com**
51
+ - Company: **AssayFlux Scientific Systems**
52
+ - Company email: **company@assayflux.com**
53
+ - Country: **India**
54
+ - State: **West Bengal**
55
+ - Region: **Kolkata**
56
+ - GitHub: **AssayFlux** — https://github.com/AssayFlux
57
+ - Official websites: https://www.assayflux.org and https://www.assayflux.com
58
+
59
+ These details are included in package metadata and documentation where the packaging standards support them. PyPI does not provide dedicated author country, state, or region fields, so the location is documented here rather than represented as a verified package-index attribute.
60
+
61
+ ## Install
62
+
63
+ ```bash
64
+ python -m pip install --upgrade assayflux
65
+ assayflux --version
66
+ assayflux doctor
67
+ ```
68
+
69
+ For local development:
70
+
71
+ ```bash
72
+ python -m pip install -e '.[dev]'
73
+ python -m pytest -q
74
+ ```
75
+
76
+ ## Quick start
77
+
78
+ Create a starter website:
79
+
80
+ ```bash
81
+ assayflux create MyWebsite --target website
82
+ assayflux run --project-dir MyWebsite --target website
83
+ ```
84
+
85
+ Open `http://127.0.0.1:8000` in your browser. In another terminal, inspect the plan and test the project:
86
+
87
+ ```bash
88
+ assayflux plan MyWebsite
89
+ assayflux test MyWebsite
90
+ assayflux build MyWebsite
91
+ ```
92
+
93
+ Build output is placed in `deliverables/MyWebsite/`; the editable project remains in `MyWebsite/`.
94
+
95
+ ## Wrap an existing static website into an Android APK project
96
+
97
+ AssayFlux can create an Android WebView wrapper and bundle local HTML, CSS, JavaScript, images, and other static assets into the Android project:
98
+
99
+ ```bash
100
+ assayflux wrap-web MyMobileSite --source ./path/to/website --root ./mobile-projects
101
+ cd ./mobile-projects/MyMobileSite
102
+ assayflux build . --android-artifacts apk
103
+ ```
104
+
105
+ The `--source` directory must contain `index.html`; a project containing `web/index.html` is also accepted. Website files are copied into `app/src/main/assets/site/`. The generated wrapper uses AndroidX WebKit's `WebViewAssetLoader`, disables direct file access, and opens external navigation in the device browser.
106
+
107
+ **Scope:** This wraps a static frontend. It does not automatically embed a Python/PHP backend, create a database server, add authentication, or integrate payment processing. Backend APIs need a separate deployment or explicit native integration. The generated Gradle project downloads its declared AndroidX WebKit dependency during a build, so the first build generally needs network access.
108
+
109
+ ## Generate other project types
110
+
111
+ ```bash
112
+ assayflux new DataTool --target python
113
+ assayflux new MultiTool --target python --target website --target backend
114
+ assayflux new NativeDemo --target android
115
+ ```
116
+
117
+ Supported starter targets: `website`, `html`, `css`, `backend`, `cli`, `python`, `r`, `c`, `cpp`, `javascript`, `typescript`, `java`, `kotlin`, `php`, `bash`, `go`, `rust`, `sql`, and `android`. Engine detection is capability discovery; it does not imply every target is compiled by the generic `build` command.
118
+
119
+ ## Scientific and multi-language starter workflows
120
+
121
+ AssayFlux 0.1.0 includes R, TypeScript, Go, Rust, and SQLite SQL starter workflows. R runtime execution still requires R and Rscript to be installed. Generate an R analysis workspace with:
122
+
123
+ ```bash
124
+ assayflux new ResearchAnalysis --target r
125
+ assayflux doctor
126
+ assayflux run --project-dir ResearchAnalysis --target r
127
+ ```
128
+
129
+ The generated `src/analysis.R` is a minimal working starter, not a full statistical-analysis framework. R must be installed separately and `Rscript` must be available on `PATH`. Package installation and advanced R/Python interoperability are not performed automatically.
130
+
131
+ Other added targets:
132
+
133
+ ```bash
134
+ assayflux new TypeScriptDemo --target typescript # requires tsc + Node.js
135
+ assayflux new GoDemo --target go # requires Go
136
+ assayflux new RustDemo --target rust # requires rustc
137
+ assayflux new SQLDemo --target sql # Python standard-library SQLite, in-memory
138
+ assayflux run --project-dir SQLDemo --target sql
139
+ assayflux validate-web ./web # checks index.html and local referenced assets
140
+ ```
141
+
142
+ `validate-web` is a lightweight sanity check; it is not a full HTML validator or security audit. TypeScript, Go, Rust, and R targets need their respective toolchains for execution.
143
+
144
+ ## Toolchain setup and automatic requirements
145
+
146
+ AssayFlux's core CLI is written using the Python standard library, so a basic install does not need a separate third-party Python runtime dependency. Install the optional development tools with `python -m pip install --upgrade "assayflux[dev]"` when you need to run tests or build/publish a release.
147
+
148
+ **System toolchains are different from Python dependencies.** Java/JDK, Gradle, Android SDK/build-tools, Node.js, C/C++ compilers, PHP, and similar tools are OS-level programs with different installation methods, licenses, sizes, and permissions. `pip install assayflux` cannot safely and reliably install all of them on every Windows, macOS, Linux, Termux, and Colab environment. Run `assayflux doctor` to check what is available. For supported Android build environments, use the included setup guide/script; it installs the documented toolchain for its target environment and may download several gigabytes and request Android SDK license acceptance. Review scripts before running them and do not run them on systems where you lack administrator permission.
149
+
150
+ ## Android build requirements
151
+
152
+ Android builds require a compatible JDK (17 recommended), Gradle compatible with Android Gradle Plugin 8.7.3, Android SDK platform 35 and build-tools 35.0.0, and `ANDROID_HOME` or `ANDROID_SDK_ROOT`. See [Google Colab Android setup](docs/GOOGLE_COLAB_ANDROID.md).
153
+
154
+ ```bash
155
+ assayflux build . --android-artifacts apk # debug APK
156
+ assayflux build . --android-artifacts aab # release AAB
157
+ assayflux build . --android-artifacts both # both
158
+ ```
159
+
160
+ Release AAB signing is not configured automatically. Configure signing credentials securely before publishing. Test APKs on real devices or emulators.
161
+
162
+ ## CLI commands
163
+
164
+ - `assayflux --version`, `assayflux info`
165
+ - `assayflux engines` — show registered engines and detected tools
166
+ - `assayflux doctor [--json]` — inspect local build prerequisites
167
+ - `assayflux new NAME` / `assayflux create NAME` — generate a starter workspace
168
+ - `assayflux wrap-web NAME --source DIR [--root DIR]` — bundle a static site into an Android WebView project
169
+ - `assayflux validate-web [WEBSITE_DIR]` — check `index.html` and referenced local assets
170
+ - `assayflux plan [PROJECT_DIR]` — print the task plan
171
+ - `assayflux test [PROJECT_DIR]` — run project tests
172
+ - `assayflux build [PROJECT_DIR] [--force] [--android-artifacts apk|aab|both|none]` — package source and run requested Android build tasks
173
+ - `assayflux run --project-dir DIR --target TARGET` — run a supported target
174
+
175
+ `--force` replaces only the existing delivery folder, not the editable project source. Review the destination before using it.
176
+
177
+ ## Delivery report
178
+
179
+ `BUILD_REPORT.json` distinguishes `built` (requested Android artifact built and found), `source_packaged` (source snapshot packaged without a requested Android build), and `partial` (requested Android build was blocked or failed). Build stdout/stderr are retained under `logs/`; inspect them when a build fails.
180
+
181
+ ## Python API
182
+
183
+ ```python
184
+ from assayflux import Project
185
+
186
+ project = Project.create("ResearchPortal", root=".", targets=["website", "backend"])
187
+ project.generate()
188
+ result = project.build()
189
+ print(result.report["status"])
190
+ ```
191
+
192
+ ## Security and limitations
193
+
194
+ - Build, test, and run commands may execute project-local code. Do not run untrusted projects; AssayFlux is not a sandbox.
195
+ - Generated backend code is a minimal starter, not a hardened internet-facing API.
196
+ - Website-to-APK wrapping is for static frontends; server-side routes, local database services, login backends, and payments are not automatically ported.
197
+ - Generic non-Android `build` packages source; it does not claim to compile every language target.
198
+ - APK build success does not prove the app's full runtime behavior. Test the resulting app on a device/emulator.
199
+ - Release signing and store publication require separate configuration and credentials.
200
+
201
+ ## Build and validate a release
202
+
203
+ ```bash
204
+ python -m pip install --upgrade build twine
205
+ python -m pytest -q
206
+ python -m build
207
+ python -m twine check dist/*
208
+ ```
209
+
210
+ Review [the publishing checklist](docs/PUBLISHING_CHECKLIST.md) before releasing. PyPI publishing is a separate authenticated action; building a wheel does not publish it.
211
+
212
+ ## Runtime detection and setup (0.1.0)
213
+
214
+ Use `assayflux runtimes` to check Python, R/Rscript, Java, Gradle, Android SDK manager, Node.js/npm, TypeScript, PHP, Go, Rust and C/C++ compilers. `assayflux setup` is detection-only unless you explicitly provide `--install --yes`; it then uses a supported OS package manager to install a baseline set of tools. Android SDK command-line tools, SDK platform/build-tools and licence acceptance may still require separate setup. See [`docs/RUNTIME_SETUP.md`](docs/RUNTIME_SETUP.md).
@@ -0,0 +1,181 @@
1
+ # AssayFlux
2
+
3
+ **Version:** 0.1.0
4
+ **Authors:** Md Safarujjaman and Md Sahanujjaman
5
+ **Company:** AssayFlux Scientific Systems · **Country:** India · **State:** West Bengal · **Region:** Kolkata
6
+ **Author email:** assayflux@gmail.com · **Company email:** company@assayflux.com
7
+ **GitHub:** [AssayFlux](https://github.com/AssayFlux)
8
+ **Official websites:** [assayflux.org](https://www.assayflux.org) · [assayflux.com](https://www.assayflux.com)
9
+
10
+ **AssayFlux is a cross-platform developer toolkit for turning project ideas into organized, runnable software workspaces.** Its Python-powered CLI generates starter projects, checks language toolchains, plans tasks, runs supported code, validates website assets, packages source, and orchestrates Android APK/AAB builds when the required SDK and build tools are installed. It is designed to bring multiple development workflows under one consistent interface while preserving the role of each language's native runtime, compiler, and build system.
11
+
12
+ AssayFlux does not translate arbitrary source code between languages. A reported successful build means the requested build command and artifact checks succeeded; it does not replace runtime testing on a device or deployment environment.
13
+
14
+ ## Project ownership and official links
15
+
16
+ - Authors: **Md Safarujjaman** and **Md Sahanujjaman**
17
+ - Author email: **assayflux@gmail.com**
18
+ - Company: **AssayFlux Scientific Systems**
19
+ - Company email: **company@assayflux.com**
20
+ - Country: **India**
21
+ - State: **West Bengal**
22
+ - Region: **Kolkata**
23
+ - GitHub: **AssayFlux** — https://github.com/AssayFlux
24
+ - Official websites: https://www.assayflux.org and https://www.assayflux.com
25
+
26
+ These details are included in package metadata and documentation where the packaging standards support them. PyPI does not provide dedicated author country, state, or region fields, so the location is documented here rather than represented as a verified package-index attribute.
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ python -m pip install --upgrade assayflux
32
+ assayflux --version
33
+ assayflux doctor
34
+ ```
35
+
36
+ For local development:
37
+
38
+ ```bash
39
+ python -m pip install -e '.[dev]'
40
+ python -m pytest -q
41
+ ```
42
+
43
+ ## Quick start
44
+
45
+ Create a starter website:
46
+
47
+ ```bash
48
+ assayflux create MyWebsite --target website
49
+ assayflux run --project-dir MyWebsite --target website
50
+ ```
51
+
52
+ Open `http://127.0.0.1:8000` in your browser. In another terminal, inspect the plan and test the project:
53
+
54
+ ```bash
55
+ assayflux plan MyWebsite
56
+ assayflux test MyWebsite
57
+ assayflux build MyWebsite
58
+ ```
59
+
60
+ Build output is placed in `deliverables/MyWebsite/`; the editable project remains in `MyWebsite/`.
61
+
62
+ ## Wrap an existing static website into an Android APK project
63
+
64
+ AssayFlux can create an Android WebView wrapper and bundle local HTML, CSS, JavaScript, images, and other static assets into the Android project:
65
+
66
+ ```bash
67
+ assayflux wrap-web MyMobileSite --source ./path/to/website --root ./mobile-projects
68
+ cd ./mobile-projects/MyMobileSite
69
+ assayflux build . --android-artifacts apk
70
+ ```
71
+
72
+ The `--source` directory must contain `index.html`; a project containing `web/index.html` is also accepted. Website files are copied into `app/src/main/assets/site/`. The generated wrapper uses AndroidX WebKit's `WebViewAssetLoader`, disables direct file access, and opens external navigation in the device browser.
73
+
74
+ **Scope:** This wraps a static frontend. It does not automatically embed a Python/PHP backend, create a database server, add authentication, or integrate payment processing. Backend APIs need a separate deployment or explicit native integration. The generated Gradle project downloads its declared AndroidX WebKit dependency during a build, so the first build generally needs network access.
75
+
76
+ ## Generate other project types
77
+
78
+ ```bash
79
+ assayflux new DataTool --target python
80
+ assayflux new MultiTool --target python --target website --target backend
81
+ assayflux new NativeDemo --target android
82
+ ```
83
+
84
+ Supported starter targets: `website`, `html`, `css`, `backend`, `cli`, `python`, `r`, `c`, `cpp`, `javascript`, `typescript`, `java`, `kotlin`, `php`, `bash`, `go`, `rust`, `sql`, and `android`. Engine detection is capability discovery; it does not imply every target is compiled by the generic `build` command.
85
+
86
+ ## Scientific and multi-language starter workflows
87
+
88
+ AssayFlux 0.1.0 includes R, TypeScript, Go, Rust, and SQLite SQL starter workflows. R runtime execution still requires R and Rscript to be installed. Generate an R analysis workspace with:
89
+
90
+ ```bash
91
+ assayflux new ResearchAnalysis --target r
92
+ assayflux doctor
93
+ assayflux run --project-dir ResearchAnalysis --target r
94
+ ```
95
+
96
+ The generated `src/analysis.R` is a minimal working starter, not a full statistical-analysis framework. R must be installed separately and `Rscript` must be available on `PATH`. Package installation and advanced R/Python interoperability are not performed automatically.
97
+
98
+ Other added targets:
99
+
100
+ ```bash
101
+ assayflux new TypeScriptDemo --target typescript # requires tsc + Node.js
102
+ assayflux new GoDemo --target go # requires Go
103
+ assayflux new RustDemo --target rust # requires rustc
104
+ assayflux new SQLDemo --target sql # Python standard-library SQLite, in-memory
105
+ assayflux run --project-dir SQLDemo --target sql
106
+ assayflux validate-web ./web # checks index.html and local referenced assets
107
+ ```
108
+
109
+ `validate-web` is a lightweight sanity check; it is not a full HTML validator or security audit. TypeScript, Go, Rust, and R targets need their respective toolchains for execution.
110
+
111
+ ## Toolchain setup and automatic requirements
112
+
113
+ AssayFlux's core CLI is written using the Python standard library, so a basic install does not need a separate third-party Python runtime dependency. Install the optional development tools with `python -m pip install --upgrade "assayflux[dev]"` when you need to run tests or build/publish a release.
114
+
115
+ **System toolchains are different from Python dependencies.** Java/JDK, Gradle, Android SDK/build-tools, Node.js, C/C++ compilers, PHP, and similar tools are OS-level programs with different installation methods, licenses, sizes, and permissions. `pip install assayflux` cannot safely and reliably install all of them on every Windows, macOS, Linux, Termux, and Colab environment. Run `assayflux doctor` to check what is available. For supported Android build environments, use the included setup guide/script; it installs the documented toolchain for its target environment and may download several gigabytes and request Android SDK license acceptance. Review scripts before running them and do not run them on systems where you lack administrator permission.
116
+
117
+ ## Android build requirements
118
+
119
+ Android builds require a compatible JDK (17 recommended), Gradle compatible with Android Gradle Plugin 8.7.3, Android SDK platform 35 and build-tools 35.0.0, and `ANDROID_HOME` or `ANDROID_SDK_ROOT`. See [Google Colab Android setup](docs/GOOGLE_COLAB_ANDROID.md).
120
+
121
+ ```bash
122
+ assayflux build . --android-artifacts apk # debug APK
123
+ assayflux build . --android-artifacts aab # release AAB
124
+ assayflux build . --android-artifacts both # both
125
+ ```
126
+
127
+ Release AAB signing is not configured automatically. Configure signing credentials securely before publishing. Test APKs on real devices or emulators.
128
+
129
+ ## CLI commands
130
+
131
+ - `assayflux --version`, `assayflux info`
132
+ - `assayflux engines` — show registered engines and detected tools
133
+ - `assayflux doctor [--json]` — inspect local build prerequisites
134
+ - `assayflux new NAME` / `assayflux create NAME` — generate a starter workspace
135
+ - `assayflux wrap-web NAME --source DIR [--root DIR]` — bundle a static site into an Android WebView project
136
+ - `assayflux validate-web [WEBSITE_DIR]` — check `index.html` and referenced local assets
137
+ - `assayflux plan [PROJECT_DIR]` — print the task plan
138
+ - `assayflux test [PROJECT_DIR]` — run project tests
139
+ - `assayflux build [PROJECT_DIR] [--force] [--android-artifacts apk|aab|both|none]` — package source and run requested Android build tasks
140
+ - `assayflux run --project-dir DIR --target TARGET` — run a supported target
141
+
142
+ `--force` replaces only the existing delivery folder, not the editable project source. Review the destination before using it.
143
+
144
+ ## Delivery report
145
+
146
+ `BUILD_REPORT.json` distinguishes `built` (requested Android artifact built and found), `source_packaged` (source snapshot packaged without a requested Android build), and `partial` (requested Android build was blocked or failed). Build stdout/stderr are retained under `logs/`; inspect them when a build fails.
147
+
148
+ ## Python API
149
+
150
+ ```python
151
+ from assayflux import Project
152
+
153
+ project = Project.create("ResearchPortal", root=".", targets=["website", "backend"])
154
+ project.generate()
155
+ result = project.build()
156
+ print(result.report["status"])
157
+ ```
158
+
159
+ ## Security and limitations
160
+
161
+ - Build, test, and run commands may execute project-local code. Do not run untrusted projects; AssayFlux is not a sandbox.
162
+ - Generated backend code is a minimal starter, not a hardened internet-facing API.
163
+ - Website-to-APK wrapping is for static frontends; server-side routes, local database services, login backends, and payments are not automatically ported.
164
+ - Generic non-Android `build` packages source; it does not claim to compile every language target.
165
+ - APK build success does not prove the app's full runtime behavior. Test the resulting app on a device/emulator.
166
+ - Release signing and store publication require separate configuration and credentials.
167
+
168
+ ## Build and validate a release
169
+
170
+ ```bash
171
+ python -m pip install --upgrade build twine
172
+ python -m pytest -q
173
+ python -m build
174
+ python -m twine check dist/*
175
+ ```
176
+
177
+ Review [the publishing checklist](docs/PUBLISHING_CHECKLIST.md) before releasing. PyPI publishing is a separate authenticated action; building a wheel does not publish it.
178
+
179
+ ## Runtime detection and setup (0.1.0)
180
+
181
+ Use `assayflux runtimes` to check Python, R/Rscript, Java, Gradle, Android SDK manager, Node.js/npm, TypeScript, PHP, Go, Rust and C/C++ compilers. `assayflux setup` is detection-only unless you explicitly provide `--install --yes`; it then uses a supported OS package manager to install a baseline set of tools. Android SDK command-line tools, SDK platform/build-tools and licence acceptance may still require separate setup. See [`docs/RUNTIME_SETUP.md`](docs/RUNTIME_SETUP.md).
@@ -0,0 +1,13 @@
1
+ # AssayFlux 0.1.0
2
+
3
+ - Added TypeScript, Go, Rust, and SQLite SQL starter targets and execution paths.
4
+ - Added a dependency-free website entry-point/local-asset validator.
5
+ - Improved engine registry and runtime diagnostics; registered languages still require their external toolchains.
6
+ - Added regression tests for new templates, SQL execution, and website validation.
7
+
8
+ ## Limits
9
+ - SQL uses an in-memory SQLite database; it is a starter workflow, not a production database service.
10
+ - Website validation is a sanity check, not a full standards/security audit.
11
+ - Android builds require a configured JDK, Gradle, Android SDK, and accepted licences.
12
+ - TypeScript, Go, Rust, and R execution require their respective external toolchains.
13
+ - This workflow does not publish to PyPI.
@@ -0,0 +1,26 @@
1
+ # AssayFlux 0.5.0
2
+
3
+ ## Highlights
4
+
5
+ - Added `assayflux create` as a friendly alias for `assayflux new`.
6
+ - Added `assayflux wrap-web` to bundle an existing static website into an Android WebView project.
7
+ - Fixed generated Android Gradle configuration to explicitly apply the Kotlin Android plugin and target Java/Kotlin 17.
8
+ - Android build reports now distinguish a successful requested Android build (`built`) from source-only delivery (`source_packaged`) and incomplete Android builds (`partial`).
9
+ - Requested APK/AAB output folders are cleared before building so stale binaries cannot be mistaken for newly generated artifacts.
10
+ - Added tests for Kotlin build configuration, website asset bundling, and the new CLI workflows.
11
+ - Expanded documentation for website-to-Android conversion and release validation.
12
+
13
+ ## Limitations
14
+
15
+ - `wrap-web` packages static frontend assets; it does not port server-side backend code, databases, authentication servers, or payment services into Android.
16
+ - Android build success still requires runtime testing on an emulator or physical device.
17
+ - The release has not been published to PyPI by this archive-generation step. Publish only after review and authenticated release validation.
18
+
19
+
20
+ ## Project metadata update
21
+
22
+ Package metadata now identifies author Md Safarujjaman, AssayFlux Scientific Systems, India, and official websites https://www.assayflux.org and https://www.assayflux.com. PyPI does not expose a dedicated author-country field; the country is included in the README/keywords.
23
+
24
+ ## Tool installation clarification
25
+
26
+ The core CLI does not require extra runtime Python dependencies. Optional development dependencies are available through `assayflux[dev]`. Operating-system toolchains (JDK, Android SDK/build-tools, Gradle, Node.js, compilers, etc.) cannot be universally installed by pip; users should run `assayflux doctor` and follow the environment-specific setup guide.
@@ -0,0 +1,9 @@
1
+ # AssayFlux 0.6.0 — Runtime Setup Preview
2
+
3
+ - Added `assayflux runtimes` for runtime/toolchain detection (human-readable or JSON).
4
+ - Added opt-in `assayflux setup` for baseline OS-package installation on supported Termux, Debian/Ubuntu, Fedora, Arch, macOS/Homebrew, and Windows/winget environments.
5
+ - Kept installation opt-in: setup is detection-only by default; installation requires `--install --yes`.
6
+ - Added documentation for Android APK/AAB prerequisites, SDK licensing, and cross-platform limitations.
7
+ - Bumped package version to 0.6.0.
8
+
9
+ Limitations: this is a runtime setup helper, not a universal bundler. The Android SDK is not shipped inside the PyPI package. SDK command-line tools, SDK packages, environment variables and licence acceptance may require separate steps. Availability of OS packages varies by platform and repository.
@@ -0,0 +1,16 @@
1
+ # AssayFlux 0.7.0 — R Support and Project Metadata Update
2
+
3
+ ## Highlights
4
+
5
+ - Added first-class R/Rscript runtime discovery in `assayflux runtimes` and `assayflux doctor`.
6
+ - Registered an R engine and added the `r` project target.
7
+ - Added a starter R analysis script and an `assayflux run --target r` execution path.
8
+ - Updated package metadata and documentation for both named authors, author contact, company contact, organization, location details, GitHub, and the 0.7.0 release description.
9
+ - Improved the package description to describe project generation, runtime/toolchain checks, code execution, website validation, and Android build orchestration without claiming universal compilation.
10
+
11
+ ## Important scope notes
12
+
13
+ - R must be installed separately; AssayFlux does not bundle R or automatically install arbitrary R packages.
14
+ - The R starter is a minimal runnable script, not a full statistical analysis suite.
15
+ - Android builds still depend on a compatible JDK, Gradle configuration, Android SDK, and required dependencies. APK/AAB builds and device execution must be tested in the target environment.
16
+ - The version bump does not itself mean a PyPI upload has occurred. Publish only after tests, distribution checks, and explicit release authorization.
@@ -0,0 +1,12 @@
1
+ # Architecture
2
+
3
+ - `project.py`: validates project specification and computes workspace/delivery paths.
4
+ - `generator.py`: deterministic starter templates for supported targets.
5
+ - `planner.py`: dependency-aware task plan serialization.
6
+ - `engines/`: capability metadata for language/runtime tools, including Android APK and AAB tasks.
7
+ - `relay.py`: capability-aware engine routing.
8
+ - `builder.py`: snapshots source, invokes selected Android Gradle tasks, collects artifacts/logs, and writes `BUILD_REPORT.json`.
9
+ - `doctor.py`: checks Python, language toolchains, Gradle, SDK manager, and SDK environment configuration.
10
+ - `cli.py`: stable console interface.
11
+
12
+ The project deliberately separates generation, execution, and delivery. A build report distinguishes source packaging from Android build success. The Android pipeline requires a configured external SDK/toolchain; it is not bundled in the Python wheel.
@@ -0,0 +1,105 @@
1
+ # Build an APK/AAB in Google Colab
2
+
3
+ This is the recommended first Android-build smoke test for the published AssayFlux package. Colab sessions are temporary; download artifacts before the session ends.
4
+
5
+ ## Cell 1 — Install AssayFlux
6
+
7
+ ```python
8
+ %pip install --upgrade assayflux
9
+ !assayflux --version
10
+ !assayflux info
11
+ !assayflux engines
12
+ ```
13
+
14
+ If you are testing source before it is published, upload/extract the project ZIP and run `%pip install -e /content/AssayFlux[dev]` from its root instead.
15
+
16
+ ## Cell 2 — Install Android build tools
17
+
18
+ Run in a Linux Colab runtime:
19
+
20
+ ```bash
21
+ %%bash
22
+ set -euo pipefail
23
+ apt-get update -qq
24
+ DEBIAN_FRONTEND=noninteractive apt-get install -y -qq openjdk-17-jdk unzip wget
25
+ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
26
+ export PATH="$JAVA_HOME/bin:$PATH"
27
+ mkdir -p /content/android-sdk/cmdline-tools
28
+ cd /content
29
+ wget -q -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
30
+ mkdir -p /content/cmdline-tools-unpack
31
+ unzip -q -o commandlinetools.zip -d /content/cmdline-tools-unpack
32
+ rm -rf /content/android-sdk/cmdline-tools/latest
33
+ mv /content/cmdline-tools-unpack/cmdline-tools /content/android-sdk/cmdline-tools/latest
34
+ export ANDROID_HOME=/content/android-sdk
35
+ export ANDROID_SDK_ROOT="$ANDROID_HOME"
36
+ export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
37
+ yes | sdkmanager --licenses >/dev/null
38
+ sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
39
+ cd /content
40
+ wget -q -O gradle-8.9-bin.zip https://services.gradle.org/distributions/gradle-8.9-bin.zip
41
+ unzip -q -o gradle-8.9-bin.zip -d /content
42
+ /content/gradle-8.9/bin/gradle --version
43
+ ```
44
+
45
+ ## Cell 3 — Set variables and generate a project
46
+
47
+ ```python
48
+ import os
49
+ os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-17-openjdk-amd64"
50
+ os.environ["ANDROID_HOME"] = "/content/android-sdk"
51
+ os.environ["ANDROID_SDK_ROOT"] = "/content/android-sdk"
52
+ os.environ["PATH"] = "/content/gradle-8.9/bin:/content/android-sdk/cmdline-tools/latest/bin:/content/android-sdk/platform-tools:" + os.environ["JAVA_HOME"] + "/bin:" + os.environ["PATH"]
53
+ ```
54
+
55
+ ```bash
56
+ !assayflux doctor --json
57
+ !assayflux new NativeDemo --root /content --target android
58
+ ```
59
+
60
+ ## Cell 4 — Build APK
61
+
62
+ ```bash
63
+ !assayflux build /content/NativeDemo --android-artifacts apk
64
+ ```
65
+
66
+ Expected output location after a successful build:
67
+
68
+ `/content/deliverables/NativeDemo/artifacts/app-debug.apk`
69
+
70
+ ## Cell 5 — Build AAB separately
71
+
72
+ The build command refuses to overwrite an existing delivery folder by default, so use a fresh project root/name for the AAB test or pass `--force` if you intend to replace that delivery folder.
73
+
74
+ ```bash
75
+ !assayflux build /content/NativeDemo --android-artifacts aab --force
76
+ ```
77
+
78
+ Expected output location after a successful build:
79
+
80
+ `/content/deliverables/NativeDemo/artifacts/app-release.aab`
81
+
82
+ ## Cell 6 — Inspect report and download
83
+
84
+ ```python
85
+ import json, os
86
+ from pathlib import Path
87
+ report = json.loads(Path('/content/deliverables/NativeDemo/BUILD_REPORT.json').read_text())
88
+ print(json.dumps(report, indent=2))
89
+ for f in Path('/content/deliverables/NativeDemo/artifacts').glob('*'):
90
+ print(f, f.stat().st_size, 'bytes')
91
+ ```
92
+
93
+ ```python
94
+ from google.colab import files
95
+ for f in Path('/content/deliverables/NativeDemo/artifacts').glob('*'):
96
+ files.download(str(f))
97
+ ```
98
+
99
+ ## Troubleshooting
100
+
101
+ - If SDK packages fail to download, rerun the tool installation cell in a fresh runtime.
102
+ - If `assayflux doctor` cannot see Gradle, re-run the environment setup cell. Colab shell variables set in a `%%bash` cell do not persist into Python cells; set `os.environ` in Cell 3.
103
+ - If Gradle fails, inspect `logs/android-build.stderr.log` and `logs/android-build.stdout.log` inside the delivery folder.
104
+ - A generated release AAB is not necessarily signed and is not automatically Play Store ready. Configure signing securely and test the APK on a real device before release.
105
+ - The package is only published after a maintainer performs the PyPI/GitHub release steps; this document does not publish anything by itself.
@@ -0,0 +1,20 @@
1
+ # Release checklist
2
+
3
+ 1. Review `pyproject.toml` package name, version, description, license, classifiers, and supported Python versions.
4
+ 2. Run `python -m pytest -q` and add regression tests for each changed feature.
5
+ 3. Build fresh artifacts with `python -m build` after removing stale `dist/` files.
6
+ 4. Validate artifacts with `python -m twine check dist/*` and install the wheel into a clean virtual environment for smoke tests.
7
+ 5. Inspect the wheel and source distribution to confirm that source, docs, and license are included and temporary artifacts are excluded.
8
+ 6. Publish only after explicit review using a configured PyPI Trusted Publisher or API token; never commit credentials.
9
+ 7. After publishing, test `python -m pip install --upgrade assayflux` in a clean environment and verify `assayflux --version` and core workflows.
10
+ 8. For Android releases, validate generated Gradle configuration, build the APK/AAB, and test the resulting application on an emulator/device. Configure release signing separately.
11
+
12
+
13
+ ## Author and website metadata
14
+
15
+ Confirm authors Md Safarujjaman and Md Sahanujjaman, author email `assayflux@gmail.com`, company AssayFlux Scientific Systems, company email `company@assayflux.com`, and the official links `https://www.assayflux.org`, `https://www.assayflux.com`, and `https://github.com/AssayFlux`. Country India, state West Bengal, and region Kolkata are documented in the README because PyPI has no dedicated author-location metadata fields. Verify control of the listed domains and GitHub organization before release.
16
+
17
+
18
+ ## Colab token publishing notebook
19
+
20
+ Use `AssayFlux_Colab_Test_Build_PyPI_0.1.0.ipynb` with `AssayFlux_Professional_0.1.0.zip`. It runs tests, builds a wheel and sdist, checks them with Twine, performs an isolated wheel-install smoke test, and offers a separate optional upload cell. The upload cell requires the exact release confirmation and prompts for a token without echoing it. Do not commit or save the token. Verify the release on PyPI after the upload command completes.