General Guidance And Naming Conventions Source section: `https://appsudo.com/doc#app-conventions` Hard rules - App folder names must be lowercase. - Folder names must not contain spaces, hyphens, or special characters. - The main class must subclass `App`. - The main class name should follow `App`, for example `SportGameApp`. - The `App` constructor identifier should be a single runtime name string with no extra wording. Constructor pattern ```python def __init__(self, application_path): super().__init__("SportGame", application_path) ``` Render rule - `self.render(...)` may be called only once per app. - That single call must happen in `run()` or in a helper that `run()` invokes. - Extra render calls are documented as runtime errors that crash the app. Recommended state pattern - For non-pygame UI apps, create `self.data` in `__init__`. - Bind ASXML against that object with `{data.field}`. - Keep UI declarative and state centralized on the data object. Code Snippets From Docs - The blocks below were extracted from the corresponding section of `appsudo.com/doc`. Snippet 1 ``` class SportGameApp(App): ... ``` Snippet 2 ``` def __init__(self, application_path): super().__init__("SportGame", application_path) ``` Snippet 3 ``` def run(self): self._show_main_view() def _show_main_view(self): # Allowed: render() lives in a helper, but it is only reached via run(). self.render(self.ui_view) ``` Snippet 4 ``` def __init__(self, application_path): super().__init__("SportGame", application_path) self.data = SportGameData(application_path) ``` Detailed Coverage Map - The entries below were derived from the section structure in `appsudo.com/doc`. Categories - Folder name - App class name - Constructor identifier - One render per app - Data binding (recommended)