Thank you for your interest in contributing to NUXP! This document provides guidelines for contributing to the project.
- macOS or Windows (required for Adobe Illustrator)
- Adobe Illustrator 2024+ (SDK version must match)
- Adobe Illustrator SDK - Download from Adobe Developer Console
- CMake 3.20+
- Node.js 18+
- C++17 compatible compiler (Xcode on macOS, MSVC on Windows)
-
Clone the repository
git clone https://github.com/ByteBard97/nuxp.git cd nuxp -
Set up the Adobe SDK
# Download the SDK DMG from Adobe Developer Console ./scripts/setup-sdk.sh ~/Downloads/AI_2024_SDK_Mac.dmg
-
Build the C++ plugin
cd plugin cmake -B build cmake --build build cmake --install build # Installs to Illustrator Plug-ins folder
-
Set up the frontend
cd demo npm install npm run dev # Starts dev server with hot reload
-
Set up the code generator
cd codegen npm install npm test # Verify tests pass
nuxp/
├── plugin/ # C++ Illustrator plugin
│ ├── src/ # Core plugin code
│ ├── src/endpoints/ # Hand-written endpoints
│ └── src/endpoints/generated/ # Auto-generated (DO NOT EDIT)
├── demo/ # Vue 3 frontend
│ └── src/sdk/ # TypeScript bridge layer
├── codegen/ # SDK parser + code generators
└── scripts/ # Build automation
- Create feature branches from
main - Use descriptive branch names:
feature/add-gradient-support,fix/handle-leak
C++ (plugin/)
- Follow existing formatting (clang-format configuration coming soon)
- Use modern C++17 features where appropriate
- Document non-obvious code with comments
- Handle errors gracefully - never crash the plugin
TypeScript (demo/, codegen/)
- Run
npm run type-checkbefore committing - Follow existing patterns for new components/modules
See Endpoint Organization for how the generated vs. hand-written code boundary works.
For custom functionality not covered by SDK wrappers:
- Define the route in
codegen/src/config/routes.json(name, method, path, request/response schema) - Run
./scripts/generate.shto produce declarations and route registration - Write the handler body in
plugin/src/endpoints/handwritten/NUXPHandlers.cpp(or a new file inhandwritten/) - Rebuild the plugin
For a complete walkthrough, see Adding Custom Endpoints.
To wrap additional SDK suites:
- Identify the SDK header file (e.g.,
AIGradient.h) - Add the header to
codegen/src/config/suites.json - Run
./scripts/generate.sh - Rebuild the plugin
Codegen tests
cd codegen && npm testFrontend type checking
cd demo && npm run type-checkPlugin testing
- Build and install the plugin
- Launch Illustrator
- Use the Debug Panel or curl to test endpoints
- Create focused PRs - One feature or fix per PR
- Write descriptive titles - "Add gradient fill support" not "Update code"
- Include context - Explain what changes and why
- Test your changes - Verify in Illustrator when possible
- Update documentation - If adding features, update relevant docs
When creating a PR, please include:
- Summary: What does this PR do?
- Testing: How did you verify this works?
- Breaking changes: Any API or behavior changes?
- Write clear, concise commit messages
- Use present tense: "Add feature" not "Added feature"
- Reference issues when applicable: "Fix #123: Handle stale references"
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Ask questions in GitHub Discussions
By contributing to NUXP, you agree that your contributions will be licensed under the MIT License.