Introduction
Your project structure is a form of communication. Every folder name, every file location, every directory hierarchy sends signals about what code does and where functionality lives. When you work with Claude Code, this communication becomes critical because Claude reads file paths to understand context before generating code.
A well-organized project gives Claude the information it needs to make intelligent decisions. When Claude sees src/services/auth.js, it immediately understands this is a service module handling authentication. When it sees components/UserProfile/UserProfile.tsx, it knows this is a UI component following a component-per-folder pattern. These signals reduce ambiguity and produce better code.
A poorly organized project does the opposite. When files are scattered randomly, when naming is inconsistent, when similar functionality lives in different places, Claude has to guess. And guesses lead to code that might work but does not fit your architecture.
This guide covers the project structures that help Claude understand your codebase and generate code that feels like it was written by someone who has worked on your project for years.
Why Structure Matters for AI
Claude Code does not have institutional knowledge about your project. Every session starts fresh. The only context Claude has comes from reading your files, and the first thing it reads is often the file path itself.
File Paths as Context
When you ask Claude to modify a file, it parses the path for meaning. Consider these two paths:
utils/helpers.js- Generic utilities, probably stateless functionsservices/api/userService.js- API service for user operations, likely with async methods
The second path tells Claude significantly more about what the file should contain, what patterns to use, and how the code should be structured. This context propagates into every line of generated code.
Good Structure Equals Better Suggestions
When your project follows clear conventions, Claude can extrapolate patterns. If it sees that all your React components live in src/components/ with co-located CSS modules, it will generate new components following the same pattern without being asked. If your services all return { success, data, error } objects, Claude will match that contract.
Conversely, if your project mixes patterns, say some components in components/, others in pages/, still others in features/, Claude cannot establish a baseline. It will generate code that works but may not match your team's preferences.
Poor Structure Confuses AI
The worst outcome is a structure that actively misleads. If you have a utils/ folder that contains business logic, or a components/ folder with API calls, Claude will inherit these antipatterns. AI amplifies what it sees in your codebase, good patterns and bad patterns alike.
Key Insight: Claude treats your existing code as a specification. Inconsistent structure is not neutral; it actively degrades the quality of AI-generated code by providing conflicting signals about how things should be organized.
Recommended Root Files
Certain files in your project root serve as primary documentation for both humans and AI. These files should exist in every project that uses Claude Code.
CLAUDE.md - Project Instructions
CLAUDE.md is your direct communication channel with Claude. This file is automatically read at the start of every session, making it the perfect place for project-specific instructions, conventions, and constraints.
- Project description and purpose
- Tech stack and framework versions
- Coding conventions and style rules
- Files or patterns to avoid modifying
- Testing requirements and commands
ECOSYSTEM.md - Data Models and Contracts
ECOSYSTEM.md defines your data layer: field names, types, enums, and API contracts. This is especially critical for multi-platform projects where iOS, Web, and backend must share identical schemas. Claude references this file to ensure field names match exactly across all code it generates.
COORDINATION.md - Active Work Tracking
COORDINATION.md tracks work in progress across sessions. When you close a conversation mid-task, this file tells the next session where you left off. It is your project's short-term memory, ensuring continuity even when context resets.
README.md - Project Overview
The standard README.md provides orientation for anyone new to the project, including Claude. Include setup instructions, architecture decisions, and links to deeper documentation. Claude uses this to understand the big picture before diving into specific files.
Tip: Keep these root files updated. Stale documentation misleads Claude just as it misleads developers. A quarterly review ensures your project's "first impression" files remain accurate.
Folder Organization
A clean folder structure separates concerns and makes navigation intuitive. While specific structures vary by project type, certain patterns work universally well.
src/ - Source Code
All application source code lives here. This separation keeps build artifacts, configuration, and documentation from cluttering your main code directories. Inside src/, organize by feature or layer depending on project size.
tests/ - Test Files
Dedicated test directory or co-located tests, pick one pattern and stick to it. If tests live in tests/, mirror your src/ structure. If tests are co-located, use consistent naming like component.test.js or __tests__/ folders.
docs/ - Documentation
Longer-form documentation, architecture decisions, API docs, and guides live here. Keep README.md in the root as the entry point, with docs/ containing everything that would make the README unwieldy.
scripts/ - Automation
Build scripts, deployment automation, development utilities, and validation tools belong in scripts/. This keeps operational code separate from application code while making automation discoverable.
project-root/
CLAUDE.md # AI instructions
ECOSYSTEM.md # Data models
COORDINATION.md # Active work
README.md # Overview
package.json # Dependencies
src/
components/ # UI components
services/ # Business logic
utils/ # Utilities
types/ # Type definitions
tests/
unit/ # Unit tests
integration/ # Integration tests
docs/
architecture.md # Design docs
api.md # API reference
scripts/
build.sh # Build automation
deploy.sh # Deployment
Platform-Specific Patterns
Different project types benefit from different organizational approaches. Here are patterns that work well with Claude Code for common project types.
Web Projects (React, Vue, etc.)
Modern frontend frameworks benefit from feature-based organization at scale, but component-based organization works well for smaller projects.
src/
components/
Button/
Button.tsx
Button.module.css
Button.test.tsx
index.ts
Modal/
Modal.tsx
Modal.module.css
hooks/
useAuth.ts
useLocalStorage.ts
services/
api.ts
auth.ts
pages/
Home.tsx
Dashboard.tsx
types/
user.ts
api.ts
Mobile Projects (iOS, Android)
Mobile projects typically organize by layer with clear separation between UI, business logic, and data access.
Sources/
App/
AppDelegate.swift
SceneDelegate.swift
Views/
Home/
HomeView.swift
HomeViewModel.swift
Profile/
ProfileView.swift
ProfileViewModel.swift
Services/
AuthService.swift
APIService.swift
Models/
User.swift
Task.swift
Utilities/
Extensions.swift
Constants.swift
Backend Projects (Node, Python)
Backend services benefit from clear separation between routes, controllers, services, and data access layers.
src/
routes/
users.js
tasks.js
controllers/
userController.js
taskController.js
services/
userService.js
taskService.js
models/
User.js
Task.js
middleware/
auth.js
validation.js
config/
database.js
environment.js
Full-Stack Monorepos
Monorepos require clear package boundaries. Use workspaces or a tool like Turborepo to manage multiple packages.
packages/
web/
src/
package.json
mobile/
Sources/
Package.swift
api/
src/
package.json
shared/
types/
utils/
package.json
CLAUDE.md
ECOSYSTEM.md
package.json # Workspace root
What to Include in CLAUDE.md
Your CLAUDE.md file shapes how Claude approaches every task in your project. A well-written CLAUDE.md can dramatically improve code quality.
Project Description
Start with a brief description of what the project does and who uses it. This context helps Claude make appropriate decisions about complexity, error handling, and user experience.
Tech Stack
List your frameworks, libraries, and versions. Include build tools and testing frameworks. This prevents Claude from suggesting incompatible solutions or deprecated APIs.
# Tech Stack
- React 18 with TypeScript
- Vite for building
- Tailwind CSS for styling
- React Query for data fetching
- Vitest for testing
Folder Explanations
Document what each major directory contains and when to use it. This prevents Claude from putting code in the wrong place.
# Directory Structure
- src/components/ - Reusable UI components
- src/features/ - Feature-specific code (components, hooks, utils)
- src/services/ - API calls and external integrations
- src/hooks/ - Shared custom hooks
- src/utils/ - Pure utility functions (no side effects)
Coding Conventions
Document patterns your team follows. Be specific about naming, file organization, and preferred approaches.
# Conventions
- Use named exports, not default exports
- Components use PascalCase (UserProfile.tsx)
- Hooks use camelCase with 'use' prefix (useAuth.ts)
- Always handle loading and error states
- Write tests for all services and complex hooks
What NOT to Do
Certain organizational patterns actively harm Claude's ability to help you. Avoid these common mistakes.
Giant Files with Mixed Concerns
Files over 500 lines become hard for Claude to reason about. Worse, files that mix UI, business logic, and data access provide conflicting signals about where new code should go. Split large files by responsibility.
Deeply Nested Structures
Paths like src/features/user/components/profile/cards/avatar/AvatarCard.tsx are hard to navigate and provide little additional context beyond src/components/AvatarCard.tsx. Keep nesting to 3-4 levels maximum.
Inconsistent Naming
If some files use camelCase, others use kebab-case, and still others use PascalCase, Claude cannot establish a pattern. Pick one convention per file type and enforce it everywhere.
Missing README or Documentation
Without documentation, Claude must infer project purpose from code alone. This leads to technically correct but contextually wrong solutions. A brief README prevents many misunderstandings.
Warning: The "utils" trap is real. A utils/ folder that grows indefinitely becomes a dumping ground that tells Claude nothing about where code should go. If utils exceeds 10-15 files, split by domain: utils/string/, utils/date/, utils/validation/.
Example Structures
Here are complete examples you can use as starting points for your own projects.
Simple Web Application
A straightforward React application with authentication, API calls, and basic state management.
my-app/
CLAUDE.md
README.md
package.json
src/
components/
Button.tsx
Modal.tsx
Navbar.tsx
pages/
Home.tsx
Login.tsx
Dashboard.tsx
services/
api.ts
auth.ts
hooks/
useAuth.ts
useApi.ts
types/
index.ts
App.tsx
main.tsx
tests/
components/
services/
public/
index.html
Multi-Platform Project
A project with iOS, Web, and Firebase backend sharing data models and conventions.
my-platform/
CLAUDE.md # AI instructions for all platforms
ECOSYSTEM.md # Shared data models
COORDINATION.md # Cross-platform work tracking
README.md
web/
src/
components/
services/
types/ # Generated from ECOSYSTEM.md
package.json
ios/
Sources/
Views/
Services/
Models/ # Matches ECOSYSTEM.md exactly
Package.swift
firebase/
functions/
src/
index.ts
users.ts
tasks.ts
firestore.rules
package.json
scripts/
validate-schemas.sh # Ensures all platforms match
Conclusion
Project structure is not just about organization; it is about communication. Every folder you create, every naming convention you follow, every file you place sends signals to both human developers and AI assistants about how your codebase works.
The time you invest in structure pays dividends in every interaction with Claude Code. Clear organization leads to better code suggestions, fewer corrections, and faster development. Poor organization leads to constant steering and cleanup.
Start with the fundamentals: create CLAUDE.md, ECOSYSTEM.md, and a clean README.md. Organize your source code with clear separations between components, services, and utilities. Pick naming conventions and follow them relentlessly.
Then let Claude do what it does best: generate code that fits seamlessly into the architecture you have established. When your structure speaks clearly, Claude listens and responds with code that feels like it belongs.
Ready to Organize Your Project?
Claude Architect includes pre-configured project templates, validation scripts, and CLAUDE.md examples for every major platform and framework.
Join the Waitlist