DevLearningTools

🚧 This site is under active construction — new tools, guides, and pages are added every week.

MODULE 1 · LESSON 06

ColdFusion Project Structure

How to organize a ColdFusion application into folders that scale — Application.cfc, assets, components, includes, uploads, logs, config, and api.

New lessons are added one at a time as the course gets built out — a graded quiz for each lesson is still on the way.

As your ColdFusion applications grow, keeping your files organized becomes just as important as writing good code. A well-structured project is easier to understand, maintain, debug, and scale.

In this lesson, you'll learn how to organize a ColdFusion project, understand the purpose of common folders and files, and follow a structure that's suitable for both small projects and enterprise applications.

Learning Objectives

By the end of this lesson, you'll be able to:

  • Understand why project structure is important.
  • Organize a ColdFusion application into logical folders.
  • Identify the purpose of common files and directories.
  • Know where to place pages, components, assets, and uploaded files.
  • Follow best practices used in real-world ColdFusion projects.

Why Project Structure Matters

Imagine building a website with hundreds of pages, images, JavaScript files, CSS files, and ColdFusion components — all stored in one folder. Finding anything would quickly become difficult.

A good project structure helps you:

  • Find files quickly
  • Keep related files together
  • Make maintenance easier
  • Improve teamwork
  • Scale your application as it grows

Adobe also recommends organizing applications into a dedicated directory structure with an application root, because it improves maintainability, portability, application-level configuration, and security.

A Simple ColdFusion Project

When you're learning, your project might look like this:

wwwroot/
wwwroot/
│
├── index.cfm
├── hello.cfm
└── styles.css
NOTE

This is perfectly fine for small examples. As your application grows, though, you'll want a better organization.

Recommended Project Structure

A typical ColdFusion application might look like this:

MyFirstApp/
MyFirstApp/
│
├── Application.cfc
├── index.cfm
├── default.cfm
│
├── assets/
│   ├── css/
│   ├── js/
│   ├── images/
│   └── fonts/
│
├── components/
│   ├── User.cfc
│   ├── Product.cfc
│   └── Order.cfc
│
├── includes/
│   ├── header.cfm
│   ├── footer.cfm
│   └── navigation.cfm
│
├── uploads/
│
├── logs/
│
├── config/
│
└── api/
NOTE

Don't worry if every folder isn't familiar yet. We'll learn them one by one throughout the course.

Understanding Each Folder

Let's go through what each one is for.

Application.cfc

Application.cfc is the heart of a ColdFusion application. It defines application-wide settings and handles important events such as application startup, session creation, and request processing. Most modern ColdFusion applications use Application.cfc instead of the older Application.cfm approach.

We'll cover this file in detail later in the course.

index.cfm

index.cfm is usually the first page users visit. When someone browses to your application without specifying a filename, the web server typically serves index.cfm automatically — visiting http://localhost:8500/ loads index.cfm.

assets/

The assets folder stores static files — things like:

  • CSS stylesheets
  • JavaScript files
  • Images
  • Icons
  • Fonts
NOTE

Keeping static resources together makes projects much easier to manage.

components/

This folder contains ColdFusion Components (CFCs) — similar to a class in object-oriented programming. Components contain reusable business logic that can be shared throughout your application.

components/
components/
├── User.cfc
├── Product.cfc
└── Order.cfc

includes/

Some pages are reused across multiple screens — a header, footer, navigation menu, or sidebar. Instead of copying the same code into every page, place it inside the includes folder.

includes/
includes/
├── header.cfm
└── footer.cfm
NOTE

This keeps your code clean and reduces duplication.

uploads/

Files uploaded by users are commonly stored here — profile pictures, PDF documents, Excel files, images. Separating uploaded content from application code helps keep projects organized.

logs/

Application logs help you troubleshoot problems — error logs, debug logs, import/export logs. During development, logs can be invaluable for identifying issues.

config/

Configuration files often belong here — application settings, environment-specific configuration, API keys (avoid storing secrets directly in source code for production), and feature flags.

api/

If your application exposes REST APIs, keeping them in a dedicated folder can improve organization.

api/
api/
├── users.cfc
└── orders.cfc

How ColdFusion Finds Your Application

When a request arrives, ColdFusion searches for an Application.cfc file starting in the requested page's directory. If it doesn't find one, it searches parent directories until it reaches the application root. That search behavior is one reason why organizing your project into a clear directory hierarchy is important.

Browser
index.cfm
Search for Application.cfc
Initialize Application
Execute Requested Page
Generate HTML
Browser

Small Learning Project

wwwroot/
wwwroot/
├── hello.cfm
├── index.cfm
└── styles.css
NOTE

Simple and easy to understand.

Professional Application

MyStore/
MyStore/
├── Application.cfc
├── index.cfm
├── assets/
├── components/
├── config/
├── includes/
├── models/
├── views/
├── uploads/
└── api/
NOTE

Larger applications separate responsibilities into different folders, making the codebase easier to maintain.

Best Practices

  • Keep related files together.
  • Use meaningful folder names.
  • Store reusable code in components.
  • Separate static assets from application logic.
  • Avoid placing everything in the root folder.
  • Keep configuration files separate from business logic.
  • Use Application.cfc for application-wide settings in modern ColdFusion projects.

Common Beginner Mistakes

Putting every file in wwwroot

This works for tiny projects but quickly becomes difficult to manage as an application grows.

Mixing CSS, JavaScript, images, and CFML

Create separate folders instead of placing everything together.

Creating duplicate code

If multiple pages share the same header or footer, move that code into the includes folder instead of copying it everywhere.

Ignoring Application.cfc

Most modern ColdFusion applications rely on Application.cfc for configuration and application lifecycle management. Learning it early makes future lessons much easier.

Mini Exercise

Create the following folders inside your project:

folders to create
assets/
components/
includes/
uploads/
NOTE

Then move: your CSS files into assets/css, images into assets/images, and any shared header/footer into includes.

Summary

In this lesson, you learned:

  • Why project structure is important.
  • How to organize a ColdFusion application.
  • The purpose of common folders.
  • The role of Application.cfc.
  • Best practices for keeping projects clean and maintainable.

A good project structure makes applications easier to understand today and easier to maintain months or years from now.

What's Next?

Now that you know where your files belong, it's time to start writing more CFML. In the next lesson, we'll compare CFScript and Tag Syntax, understand their differences, and learn when to use each style in modern ColdFusion development.