# OpenNoodl Development Documentation

Welcome to the OpenNoodl development docs. This folder contains everything needed for AI-assisted development with Cline and human contributors alike.

## ⚡ About OpenNoodl

**OpenNoodl is an Electron desktop application** for visual low-code development.

- The **editor** is a desktop app (Electron) where developers build applications
- The **viewer/runtime** creates web applications that run in browsers
- This documentation focuses on the **editor** (Electron app)

**Important:** When you run `npm run dev`, an Electron window opens automatically - you don't access it through a web browser. The webpack dev server at `localhost:8080` is internal to Electron and should not be opened in a browser.

## 📁 Structure

```
dev-docs/
├── .clinerules              # Project rules (copy to repo root)
├── README.md                # This file
├── CLINE-INSTRUCTIONS.md    # Custom instructions for Cline
├── TASK-TEMPLATE.md         # Template for creating new tasks
│
├── guidelines/              # Development standards
│   ├── CODING-STANDARDS.md  # Code style and patterns
│   ├── TESTING-GUIDE.md     # How to write tests
│   └── GIT-WORKFLOW.md      # Branch and commit conventions
│
├── reference/               # Quick reference materials
│   ├── CODEBASE-MAP.md      # Navigate the codebase
│   ├── NODE-PATTERNS.md     # How to create nodes
│   └── COMMON-ISSUES.md     # Troubleshooting guide
│
└── tasks/                   # Task documentation
    ├── phase-1/             # Foundation tasks
    │   ├── TASK-001-dependency-updates/
    │   ├── TASK-002-typescript-cleanup/
    │   └── ...
    ├── phase-2/             # Navigation & data tasks
    └── phase-3/             # UX & integration tasks
```

## 🚀 Getting Started

### For Cline Users

1. **Copy `.clinerules` to repo root**

   ```bash
   cp dev-docs/.clinerules .clinerules
   ```

2. **Add custom instructions to Cline**

   - Open VSCode → Cline extension settings
   - Paste contents of `CLINE-INSTRUCTIONS.md` into Custom Instructions

3. **Pick a task**
   - Browse `tasks/` folders
   - Each task has its own folder with detailed instructions
   - Start with Phase 1 tasks (they're prerequisites for later phases)

### For Human Contributors

1. Read `guidelines/CODING-STANDARDS.md`
2. Check `reference/CODEBASE-MAP.md` to understand the project
3. Pick a task from `tasks/` and follow its documentation

## 📋 Task Workflow

### Starting a Task

1. **Read the task documentation completely**

   ```
   tasks/phase-X/TASK-XXX-name/
   ├── README.md           # Full task description
   ├── CHECKLIST.md        # Step-by-step checklist
   ├── CHANGELOG.md        # Track your changes here
   └── NOTES.md            # Your working notes
   ```

2. **Create a branch**

   ```bash
   git checkout -b task/XXX-short-name
   ```

3. **Follow the checklist**, checking off items as you go

4. **Document everything** in CHANGELOG.md

### Completing a Task

1. Ensure all checklist items are complete
2. Run tests: `npm run test:editor`
3. Run type check: `npx tsc --noEmit`
4. Update CHANGELOG.md with final summary
5. Create pull request with task ID in title

## 🎯 Current Priorities

### Phase 1: Foundation (Do First)

- [x] TASK-000: Dependency Analysis Report (Research/Documentation)
- [ ] TASK-001: Dependency Updates & Build Modernization
- [ ] TASK-002: Legacy Project Migration & Backward Compatibility

### Phase 2: Core Systems

- [ ] TASK-003: Navigation System Overhaul
- [ ] TASK-004: Data Nodes Modernization

### Phase 3: UX Polish

- [ ] TASK-005: Property Panel Overhaul
- [ ] TASK-006: Import/Export Redesign
- [ ] TASK-007: REST API Improvements

## 📚 Key Resources

| Resource                                           | Description           |
| -------------------------------------------------- | --------------------- |
| [Codebase Map](reference/CODEBASE-MAP.md)          | Navigate the monorepo |
| [Coding Standards](guidelines/CODING-STANDARDS.md) | Style and patterns    |
| [Node Patterns](reference/NODE-PATTERNS.md)        | Creating new nodes    |
| [Common Issues](reference/COMMON-ISSUES.md)        | Troubleshooting       |

## 🤝 Contributing

1. Pick an unassigned task or create a new one using `TASK-TEMPLATE.md`
2. Follow the task documentation precisely
3. Document all changes in the task's CHANGELOG.md
4. Submit PR with comprehensive description

## ❓ Questions?

- Check `reference/COMMON-ISSUES.md` first
- Search existing task documentation
- Open an issue on GitHub with the `question` label
