Правильная Структура Приложения

Изучаю PHP, уже некоторое время пишу приложение на Yii. Приложение уже практически готово, но задался вопросом: правильно ли я его оформил?

Одностраничный сайт с формой загрузки для изображений. Пользователь загружает изображения, они обрабатываются сторонним софтом, пользователю, на той же странице, отдается ссылка на загрузку получившегося файла (через jQuery json).

БД не используется

Структура сайта (и как я ее понимаю):


htdocs/

   index.php                 Главный скрипт

   assets/                   [Временные файлы] содержит опубликованные ресурсы через Yii::app()->assetManager->publish

   upload/                   Сюда попадают загруженные пользователем изображения. Внутри директории создаются поддиректории с уникальным именем

   download/                 Сюда в итоге переносится изображение, которое будет отдаваться пользователю

   protected/                само приложение

      assets/                JS/CSS файлы, используемые приложением (публикуются через assetManager)

             js/

             css/

      components/            Здесь у меня содержится:

                             Controller.php

                             Виджеты

                             Скрипт, обрабатывающий изображения (проверяет его валидность, запускает посторонний софт на сервере, типа ImageMagick), возвращает ответ в видео json кода, который передается пользователю

      config/                конфигурационные файлы

         main.php            

      controllers/           контроллеры

         SiteController.php  публикация ресурсов, рендер страницы

         UploadController.php отвечет за прием файла, затем передает управление в скрипт из папки components, затем возвращает ответ в виде json кода, который вставляется в список загруженных файлов через jQuery

         DownloadController.php отвечает за отдачу файла обратно пользователю, отвечает за их дальнейшее удаление с сервера (через 30 минут)

      runtime/               [Временные файлы] Yii использует ее для себя

      views/                 view-файлы

            layouts/         Главный шаблон

                 main.php         

            site/               

                 index.php   'index'-view

Планируется: добавить БД для ведения статистики (сколько загружено, сколько отдано, средний размер и т.п.)

Да вроде нормально.

Я бы все таки выносил уровень приложения (protected в в вашем случае) за пределы public папки

Согласен. А то как то не солидно получается… :)