How lywnl/ai-app-generation works
This is an AI web-app generation platform: users create or select an app, submit a prompt, watch an SSE-driven Plan/Execute/ReAct workflow, inspect generated files and plans, preview a successful build, and optionally download or publish the result. The Vue path adds persisted plans, tool-mediated file changes, build diagnostics and repair; HTML and multi-file generation retain separate generation flows. RAG and layered conversation memory enrich model context. The README documents several connections that the sampled source does not expose, so those links are shown only where explicitly described; unsampled subsystem internals are represented by exact enclosing paths.
Main entry points: AppController.java App API · AiCodeGeneratorFacade.java Generation facade · RagRetrievalService.java RAG retrieval · generationSession.ts Generation session
Components 27
Frontend
- Generation chat
ai-app-generation-frontend/src/pages/app/AppChatPage.vue - Generation session
ai-app-generation-frontend/src/utils/generationSession.ts - Preview state
ai-app-generation-frontend/src/composables/useGenerationPreview.ts
Generation workflow
- App API
src/main/java/com/lyw/appgeneration/controller/AppController.java - App service
src/main/java/com/lyw/appgeneration/service/AppService.java - Generation facade
src/main/java/com/lyw/appgeneration/core/AiCodeGeneratorFacade.java - Turn handling
src/main/java/com/lyw/appgeneration/core/handler - Code generation model
src/main/java/com/lyw/appgeneration/ai/AiCodeGeneratorService.java - Generation tools
src/main/java/com/lyw/appgeneration/ai/tools - Plan state
src/main/java/com/lyw/appgeneration/ai/plan - Plan query
src/main/java/com/lyw/appgeneration/service/impl/AppPlanQueryServiceImpl.java
Context and retrieval
- RAG retrieval
src/main/java/com/lyw/appgeneration/service/rag/RagRetrievalService.java - Vue hybrid search
src/main/java/com/lyw/appgeneration/service/rag/VueHybridRetrievalService.java - RRF fusion
src/main/java/com/lyw/appgeneration/service/rag/retrieval/RrfFusionService.java - Candidate reranking
src/main/java/com/lyw/appgeneration/service/rag/RagRerankService.java - Image references
src/main/java/com/lyw/appgeneration/ai/image/ImageCollectionService.java - Conversation memory
src/main/java/com/lyw/appgeneration/ai/memory - Memory summaries
src/main/java/com/lyw/appgeneration/service/impl/MemorySummaryDraftEngine.java - Template ingest
src/main/java/com/lyw/appgeneration/service/rag/ingest/TemplateIngestService.java
Persistence
- Business database
src/main/java/com/lyw/appgeneration/mapper - Redis memory store
src/main/java/com/lyw/appgeneration/ai/memory/SpringRedisChatMemoryStore.java - Milvus templates
Build and delivery
- Vue builder
src/main/java/com/lyw/appgeneration/core/builder/VueProjectBuilder.java - Site publishing
src/main/java/com/lyw/appgeneration/service/AppDeploymentFileService.java
Other components
- User
- AI services
- Published website
Connections 32
- User → Generation chat: enters prompt
- Generation chat → Generation session: starts generation
- Generation session → App API: sends request
- App API → App service: dispatches request
- App service → Generation facade: starts generation
- Generation facade → Turn handling: manages turn
- Generation facade → Code generation model: requests generation
- Code generation model → AI services: streams model calls
- Generation facade → Generation tools: executes tools
- Generation tools → Plan state: updates plan
- Generation tools → Vue builder: requests build
- Turn handling → Generation chat: streams events
- App API → RAG retrieval: retrieves templates
- RAG retrieval → Vue hybrid search: retrieves Vue context
- Vue hybrid search → RRF fusion: fuses rankings
- Vue hybrid search → Candidate reranking: reranks candidates
- RAG retrieval → Candidate reranking: reranks candidates
- App API → Image references: collects image context
- Generation facade → Conversation memory: uses conversation context
- Conversation memory → Redis memory store: reads and writes
- Memory summaries → Business database: reads history and saves summaries
- App API → Business database: persists app data
- App API → Plan query: queries plan
- Plan query → Plan state: loads plan
- Plan state → Business database: persists plan state
- Template ingest → Milvus templates: ingests embeddings
- RAG retrieval → Milvus templates: searches templates
- Vue builder → Generation session: reports build outcome
- Generation session → Preview state: updates preview state
- User → App API: requests publishing
- App API → Site publishing: publishes app
- Site publishing → Published website: provides website