Full bootstrap for Moqui 4.0. Flattens framework, sets up runtime, and creates dynamic component.
runtime/component/{{BASE_NAME}}.Initialize Framework:
_tmp_framework.git clone https://github.com/moqui/moqui-framework.git _tmp_framework._tmp_framework/ (including framework/, build.gradle, gradlew, gradle/, and MoquiInit.properties) directly into the current workspace root.rm -rf _tmp_framework.Initialize Runtime:
git clone https://github.com/moqui/moqui-runtime.git runtime.framework/ and runtime/.# Pull the standard ecosystem
./gradlew getComponentSet -PcomponentSet=demo
# Targeted Branch Switch (Vue 3 / Quasar 2)
# We iterate through the components and attempt to checkout the branch if it exists.
for dir in runtime/component/*; do
if [ -d "$dir/.git" ]; then
echo "Checking for vue3quasar2 branch in $dir..."
cd "$dir"
if git show-ref --verify --quiet refs/remotes/origin/vue3quasar2; then
git checkout vue3quasar2
elif git show-ref --verify --quiet refs/heads/vue3quasar2; then
git checkout vue3quasar2
else
echo "No vue3quasar2 branch found in $dir, staying on current branch."
fi
cd - > /dev/null
fi
done
{{COMP_PATH}}/entity/..ent.xml. Use Entities.xml suffix.
<entity entity-name="HuddleArtifact" package="huddle.artifact"
cache="true" enable-audit-log="true">
<field name="artifactId" type="id" is-pk="true"/>
<field name="artifactName" type="text-medium" enable-audit-log="true"/>
<field name="artifactTypeEnumId" type="id"/> <field name="fullPath" type="text-long"/> <field name="description" type="text-medium"/>
<field name="rawContent" type="text-very-long" encrypt="true"/> <field name="checksum" type="text-short"/> <field name="vectorEmbedding" type="binary-very-long"/>
<field name="lastIndexedDate" type="date-time"/>
<relationship type="one" title="ArtifactType" related="moqui.basic.Enumeration">
<key-map field-name="artifactTypeEnumId" related="enumId"/>
</relationship>
<seed-data>
<moqui.basic.EnumerationType description="Huddle Artifact Types" enumTypeId="HuddleArtifactType"/>
<moqui.basic.Enumeration description="Entity Definition" enumId="HatEntity" enumTypeId="HuddleArtifactType"/>
<moqui.basic.Enumeration description="Service Definition" enumId="HatService" enumTypeId="HuddleArtifactType"/>
<moqui.basic.Enumeration description="XML Screen" enumId="HatScreen" enumTypeId="HuddleArtifactType"/>
<moqui.basic.Enumeration description="Logic/Script" enumId="HatLogic" enumTypeId="HuddleArtifactType"/>
</seed-data>
</entity>
```
## Step 4: Shell Automation & Roadmap (Root Level)
1. **Create the start script:**
- **Path:** `start-{{BASE_NAME}}.sh`
- **Content:**
```bash
#!/bin/bash
# Moqui 4.0 Bootstrapper for Java 21
# Reflection flags are required for internal module access
java --add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.util=ALL-UNNAMED \
--add-opens java.base/java.time=ALL-UNNAMED \
--add-opens java.base/java.nio=ALL-UNNAMED \
-jar framework/moqui.war
```
2. **Post-Action:** Run `chmod +x start-{{BASE_NAME}}.sh` to make it executable.
{{BASE_NAME}}_Master_Roadmap.md# {{BASE_NAME}} Project: Master Roadmap
- [x] Task 1: Workspace Initialization (Cloned Framework/Runtime, Created Component).
- [ ] Task 2: Database Artifact Table Definition.
- [ ] Task 3: Metadata Ingestion Service (Scan & Index Artifacts).
- [ ] Task 4: Top-Level Portal (5-zone UI: Left Menu, Header, Content, Footer, Sidebar).
- [ ] Task 5: Start Script Validation (Java 21 Flag Test).
- [ ] Task 6: Project-wide Artifact Generation.
- [ ] Task 7: Vector Embeddings for AI Retrieval.
Entities.xml file.start-{{BASE_NAME}}.sh script.encrypt="true" rule and audit logging as defined in .agent/rules/huddle-rules.md../gradlew build to verify the framework and runtime are correctly linked before moving to Task 2 on the Roadmap.