After you extract Joomla package, you get 17 folders and 7 files in the root directory.
Installation folder is only required to install Joomla through browser interface. After you have installed Joomla, you should delete this folder. After that, 16 folders remain.
After you install Joomla, a file called configuration.php will be created in the root folder. The installation folder would normally be deleted, because keeping it around presents a security vulnerability.
Joomla has two separate applications that share some of the same underlying code. These applications are the front end of the site and the administrative back end of the site. If you look at the sub folders of the administrator folder, you will see many of the same folders that you see in the top-level root folder. These include cache, components, includes, language, modules, and templates.
The cache folder stores cached files. In a dynamic website, the system does a lot of work to pull together the information to display a page. For example, if the page is displaying a blog layout, the system has to access the database to get the articles for the blog, lay out the articles on the page, and load the desired modules for the page. With caching enabled, you try to reduce the number of times we access the database to get exactly the same information.
If you cache the page, we save a copy of the page in the cache folder for a specified period of time. On a busy website where the frequency of viewing is greater than the frequency of database changes, caching can improve overall system performance dramatically.
The cli folder was added as a standard location for storing Command Line Interface (CLI) applications. CLI applications are well suited to running on a schedule. For example, using the Linux cron program.
A component is normally the main thing on a given page and usually corresponds to a menu item. A component is an extension that has to take some action other than displaying something. If you look at the sub folders for components, you see each of the core components for Joomla. For example, com_banners, com_contact, com_content (for articles), com_finder (for Smart Search), and so on.
The images folder is one place where image files for the site can be stored.
The administrator folder, which controls the back end of the site, is an entirely separate application from the front end of the site. So, when you start a front-end or back-end session, you need to load different classes and constants into memory.
The includes folder contains the programs that are specific to either the front-end back-end application. So the top-level includes folder loads the files that you need to get a front-end session started, whereas the administrator/includes folder has files you need to load to get a back-end session started.
The installation folder is an entirely separate mini application that is responsible for initial Joomla installation. When you initially start either a front-end or back-end session, the system checks for the presence of a file called configuration.php in the root folder. If it doesn’t find this file, it assumes you need to run the installation and it loads the installation mini application.
Joomla is designed to be run in many languages. Virtually all text in Joomla is translated before it is shown in the browser. This is done by way of language packs, which install a set of language files. The languages sub folder is where these language packs get installed.
With a standard English installation, you get two sub folders: en-GB and overrides. The first folder holds all the language files needed to translate the front end of the site into English. The second folder is related to language overrides. Language overrides allow you to change the value of any text string without having to replace the entire language file.
A software library is a set of programs that are designed to be reused in different contexts. These software libraries are stored in sub folders of the libraries folder.
This folder is used to store log files generated by Joomla. Events are logged based on certain conditions. For example, any error condition will be logged in a file called error.log. In addition, turning on debug mode will cause some events to be logged.
The modules folder contains a sub folder for each front-end module available. When you install module extensions, they get added as sub folders to the modules folder and become completely integrated into Joomla application.
The plugins folder holds the plugins extensions. In Joomla, there are many types of plugins, each with its own sub folder. Each plugin type deals with a specific type of activity on the site and responds to events that are triggered during these activities.
In Joomla, the content of each web page is separated as much as possible from the way the page is presented on the screen. The presentation is controlled by extensions called templates. The templates folder contains a sub folder for each front-end template that is installed on the system.
The system template has some layout information that is shared by all the other templates and also is used by the system as a fallback in case a CSS class or file can’t be found in the named template.
The tmp folder is a place for the system to store files on a temporary basis. One of the most frequent uses of this folder is when extensions are installed. When a new extension is installed, a copy of the extension's archive file is copied into the tmp folder and then is unpacked into the correct Joomla folders.