This section describes the folder structure for all possible deployment modes : 1. **Control-Freak installed** (when downloaded and installed from official sources) 2. **Developer** is the version with all source code (non-minified) ### 1. 'Control-Freak' installed **System Variables** (OS specific defaults): *INSTALL_DIR* - Windows: C:\Program Files\ControlFreak\ - Linux: /opt/control-freak/ - Mac: /Applications/control-freak/ *USER_DIR* - Windows: C:\Users\JonDoe\.cf - Linux: /home/JonDoe/.cf - Mac: /Users/.cf/ **Locations**:
Name Description Location Variable Updates
General folders
Workspace The user's own workspace folder USER_DIR\workspace
workspace
App-Directory the directory of an deployed application anywhere app-directory optional
Device-Control-Server the location of the device control server INSTALL_DIR/device-control-server or app-directory/device-control-server device-control-server optional
Drivers Default driver locations
System - Drivers All global known drivers INSTALL_DIR/data/driver/system system-drivers yes
User - Drivers The user's drivers workspace/drivers user-drivers
Project - Drivers App only drivers workspace/project-name/drivers project-drivers
Devices Default device date locations
System - Devices All known system devices such as the loopback device for testing INSTALL_DIR/data/devices/system system-devices yes
User - Devices
The user's devices workspace/devices user-devices
Project - Devices App only devices workspace/project-name/devices project-devices
Logs Default locations for log files
System - Logs all system related log files INSTALL_DIR/logs/ system-log-directory
User - Logs all user logs workspace/logs/ user-log-directory
App - Log all app logs workspace/project-name/logs or app-directory/logs app-log-directory
**Data scopes as diagram** **Remarks** **Links** **FAQ** 1. **Why different locations ('scopes') like system/users/app ?** By separating items into different directories, an administrator has the possibilities: - secure this folders with OS's file system security - he can easily manage this folders compared to a database solution. For instance he can put these folders also into the cloud or on a network drive 2. **Can I edit these items with my editor?** yes, all data is based on open standards like JSON. Changing these files will most of the time also update the IDE or the control-application. 3. **So I can copy paste files among these scopes as I like?** yes, as long you have the permissions, you can simply copy & paste items also outside of the IDE (which is being updated) 4. **What does these 'variables' mean?** Variables are used all over the place to avoid hard-coded strings. Also, the IDE is providing various scripting possibilities. For instance there are some callbacks when files are changed or added. A user might listen to these events and run his scripts (Javascript or xBlox or shell). In any case, the system resolves all variables into strings at run-time, so that you can use the blocks "Copy Directory" with these variables. Ideally, a user might change some paths but no changes in scripts are required.