# प्रोजेक्ट की शारीरिक-रचना

> Gradle मॉड्यूल, MainWindow कैसे classname द्वारा हल होता है और assets कहाँ रहते हैं।

Source: https://crossfly.dev/hi/docs/get-started/project-structure — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# प्रोजेक्ट की शारीरिक-रचना

"ढाँचे" में हाथ लगाने से पहले समझें कि उसे किसने उत्पन्न किया।

## Gradle मॉड्यूल
```
:core     → código compartilhado: suas Windows, componentes, lógica, dados
:lwjgl3   → launcher desktop
:android  → launcher Android
:ios      → launcher iOS (RoboVM)
:web      → launcher Web (TeaVM)
```
आप **लगभग हमेशा `core` में** प्रोग्रामिंग करते हैं। हर लॉन्चर केवल OS का *bootstrap* करता है — `Main` को
इंस्टैंशिएट करता है और विंडो को कॉन्फ़िगर करता है (देखें [plataformas](/docs/platforms))।

## `MainWindow` कैसे हल होता है
`Main` मुख्य विंडो को **रिफ़्लेक्शन द्वारा** इंस्टैंशिएट करता है:
1. **`cmdline["classname"]`** में इंगित क्लास का उपयोग करता है (लॉन्चर द्वारा पारित); या
2. इसकी अनुपस्थिति में, ओवरराइड किया गया **`getMainWindow()`**।

आवश्यकता: क्लास को एक **सार्वजनिक बिना-आर्ग्युमेंट वाला कंस्ट्रक्टर** चाहिए (यह रिफ़्लेक्शन द्वारा इंस्टैंशिएट होती है)।

## संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
न्यूनतम और चलाने योग्य `MainWindow` क्लास, रिफ़्लेक्शन द्वारा अपेक्षित बिना-आर्ग्स कंस्ट्रक्टर के साथ:
```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class MainWindow extends Window
{
   public MainWindow() { }          // बिना-args कंस्ट्रक्टर (reflection के लिए अनिवार्य)

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());
      add(LAY_AUTO, new Label("MainWindow resolvida por classname"));
   }
}
```

## सुझाई गई ऐप संरचना
`core` के भीतर, एक ऐसी संरचना जो स्केल करती है (देखें [ऐप आर्किटेक्चर](/docs/best-practices/arquitetura-de-app)):
```
app/
 ├─ ui/screens/      → suas Windows (uma tela = uma Window)
 ├─ ui/components/   → componentes reutilizáveis
 ├─ data/            → repositórios (SQLite, rede)
 └─ model/           → objetos de domínio
```

## Assets और फ़ॉन्ट
बेस फ़ॉन्ट (Roboto, FontAwesome, Material) bootstrap पर लोड होते हैं; आपके assets (चित्र,
डेटा) प्रोजेक्ट के assets डायरेक्टरी में रहते हैं और पथ द्वारा पढ़े जाते हैं (देखें
[Imagens](/docs/ui/images-and-graphics/images))।

## अगले कदम
→ [CrossFly का पैनोरमिक टूर](/docs/get-started/tour)

## यह भी देखें
- अवधारणा: [जीवनचक्र](/docs/concepts/lifecycle) · [स्तरित आर्किटेक्चर](/docs/concepts/architecture)
