Skip to content

a2jet - Jetpack Compose Code Generator ​

Extracted from CLAUDE.md for reference. See CLAUDE.md for rules and quick reference.

Overview ​

a2jet generates Jetpack Compose Kotlin code from AURA widgets, producing modern Android apps with Material3 design.

Location: crates/auto-lang/src/ui_gen/jet/

Architecture ​

text
AuraWidget → JetGenerator → Kotlin/Compose Code
                │
                ├── Material3Registry (component mappings)
                ├── FormGenerator (inputs, buttons)
                ├── LayoutGenerator (Column, Row, Box)
                ├── ListGenerator (LazyColumn, Grid)
                ├── NavigationGenerator (NavHost)
                ├── ModifierDsl (Tailwind → Compose)
                ├── StateConverter (model → mutableStateOf)
                └── ProjectGenerator (full Android project)

Modules ​

ModulePurposeLines
mod.rsModule exports & documentation80+
generator.rsMain JetGenerator800+
components.rsMaterial3 component registry200+
form.rsForm components (Input, Checkbox, Switch, Slider)400+
layout.rsLayout components (Column, Row, Box, Card, Scroll)350+
list.rsList components (LazyColumn, LazyRow, Grid)300+
modifier.rsTailwind → Compose Modifier DSL250+
navigation.rsNavigation (NavHost, routes)300+
state.rsState management (mutableStateOf)150+
project.rsAndroid project generation850+

Usage ​

Generate a Widget ​

rust
use auto_lang::ui_gen::jet::JetGenerator;
use auto_lang::ui_gen::BackendGenerator;

let mut gen = JetGenerator::new();
let kotlin_code = gen.generate(&aura_widget)?;

Generate a Full Android Project ​

rust
use auto_lang::ui_gen::jet::JetGenerator;

let gen = JetGenerator::new();

// With defaults
let files = gen.generate_project_default("MyApp");

// With custom package
let files = gen.generate_project_with_package("MyApp", "com.company.myapp");

// With custom theme
let files = gen.generate_project_with_theme("MyApp", "#6750A4", "#625B71");

Project Generation ​

Full project generation creates:

text
myapp/
├── app/
│   ├── src/main/
│   │   ├── java/com/example/myapp/
│   │   │   ├── MainActivity.kt
│   │   │   └── ui/
│   │   │       ├── theme/
│   │   │       │   ├── Theme.kt
│   │   │       │   ├── Color.kt
│   │   │       │   └── Type.kt
│   │   │       └── widgets/
│   │   └── AndroidManifest.xml
│   └── build.gradle.kts
├── build.gradle.kts
├── settings.gradle.kts
└── gradle/libs.versions.toml

Component Mappings ​

AURA TagCompose Component
colColumn
rowRow
boxBox
cardCard
buttonButton
inputOutlinedTextField
checkboxCheckbox
switch/toggleSwitch
sliderSlider
listLazyColumn
list-rowLazyRow
gridLazyVerticalGrid

Testing ​

bash
# Run all a2jet tests
cargo test -p auto-lang jet

# Run specific module tests
cargo test -p auto-lang jet::generator
cargo test -p auto-lang jet::project

# Count tests
cargo test -p auto-lang jet 2>&1 | grep "test result:"

Implementation Phases ​

PhaseContentStatus
Phase 1基础结构 + 简单组件✅ Complete
Phase 2表单组件✅ Complete
Phase 3Modifier DSL✅ Complete
Phase 4布局与导航✅ Complete
Phase 5列表与数据✅ Complete
Phase 6项目生成 (auto build)✅ Complete
Phase 7测试与文档✅ Complete

Plan Files ​

基于 MIT 许可发布。