A modern, web-based GUI application for managing Claude Code settings at both project and user levels. Built with React, TypeScript, and Express.
- Intuitive Interface: Clean, modern UI built with React and Tailwind CSS
- Multi-Level Settings: Manage user, project, and local settings in one place
- Settings Hierarchy Visualization: See how settings override each other
- Comprehensive Editors:
- General settings (model, cleanup period, output style, etc.)
- Permissions (allow/ask/deny rules)
- Hooks (pre/post tool execution commands)
- Environment variables
- MCP server configuration
- Real-time Updates: Changes are immediately saved to settings files
- Type-Safe: Full TypeScript support throughout the stack
- Node.js 18+ and npm
- Claude Code installed
- Clone the repository:
git clone <repository-url>
cd cc-project-builder- Install dependencies:
npm installRun both the backend and frontend in development mode with hot reload:
npm run devThis will start:
- Backend API server on
http://localhost:3001 - Frontend development server on
http://localhost:3000
Open your browser and navigate to http://localhost:3000 to use the application.
Build the application for production:
npm run buildStart the production server:
npm startcc-project-builder/
├── server/ # Backend (Express + TypeScript)
│ ├── index.ts # Server entry point
│ ├── routes/ # API routes
│ │ └── settings.ts # Settings CRUD endpoints
│ ├── services/ # Business logic
│ │ ├── settingsService.ts # Settings file operations
│ │ └── fileWatcher.ts # File change detection
│ └── types/ # TypeScript type definitions
│ └── settings.ts
├── src/ # Frontend (React + TypeScript)
│ ├── components/ # React components
│ │ ├── Tabs.tsx
│ │ ├── SettingsOverview.tsx
│ │ ├── GeneralSettings.tsx
│ │ ├── PermissionsEditor.tsx
│ │ ├── HooksEditor.tsx
│ │ ├── EnvironmentEditor.tsx
│ │ ├── McpEditor.tsx
│ │ └── SettingsLevelSelector.tsx
│ ├── services/ # API client
│ │ └── api.ts
│ ├── types/ # TypeScript type definitions
│ │ └── settings.ts
│ ├── lib/ # Utilities
│ │ └── utils.ts
│ ├── App.tsx # Main application component
│ ├── main.tsx # React entry point
│ └── index.css # Global styles
└── package.json # Dependencies and scripts
The application manages settings across four levels (in order of precedence):
- Enterprise Managed (highest priority):
/etc/claude-code/managed-settings.json - Project Local:
.claude/settings.local.json(not in git) - Project Shared:
.claude/settings.json(in git) - User Global (lowest priority):
~/.claude/settings.json
Higher priority settings override lower priority ones.
- View all settings file locations
- See which files exist and their paths
- Check for errors
- Preview merged settings
- Configure default model
- Set cleanup period for chat transcripts
- Choose output style
- Force login method
- Toggle co-authored-by attribution
- Enable/disable all hooks
- Allow Rules: Auto-approve specific tool uses
- Ask Rules: Prompt before executing
- Deny Rules: Block tool uses completely
- Examples:
Bash(npm run test)- Allow npm test commandsRead(.env)- Block reading .env filesRead(./secrets/**)- Block entire directories
- Configure commands to run before/after tool executions
- Supported hook types:
- PreToolUse
- PostToolUse
- Stop
- UserPromptSubmit
- Set session-specific environment variables
- Common variables:
ANTHROPIC_MODELDISABLE_TELEMETRYBASH_DEFAULT_TIMEOUT_MSMAX_THINKING_TOKENS
- Auto-approve all project MCP servers
- Enable specific servers
- Disable specific servers
GET /api/settings
Returns the complete settings hierarchy including user, project, local, and enterprise settings, plus the merged result.
PUT /api/settings/:type
Content-Type: application/json
{
"permissions": { ... },
"env": { ... },
...
}
Where :type is one of: user, project, or local.
DELETE /api/settings/:type
Backend:
- Node.js + Express
- TypeScript
- Chokidar (file watching)
Frontend:
- React 18
- TypeScript
- Vite (build tool)
- Tailwind CSS
- Lucide React (icons)
npm run dev- Run both backend and frontend in development modenpm run dev:backend- Run only the backend servernpm run dev:frontend- Run only the frontendnpm run build- Build for productionnpm start- Start production servernpm run preview- Preview production build
- Update
server/types/settings.tsandsrc/types/settings.tswith new setting types - Create a new editor component in
src/components/ - Add the new tab to
src/App.tsx - Settings are automatically persisted via the existing API
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues, feature requests, or questions, please open an issue on GitHub.
Built for the Claude Code community to make settings management easier and more accessible.