Skip to content

Commit

Permalink
Update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshMarler committed Dec 14, 2024
1 parent 1be29b6 commit a62cc2b
Show file tree
Hide file tree
Showing 11 changed files with 136 additions and 150 deletions.
67 changes: 47 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,75 @@

> Write cross-platform native apps with React.js and JUCE
React-JUCE (formerly named Blueprint) is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) frontend for a [JUCE](http://juce.com/) application or plugin. It provides an embedded, ES5 JavaScript engine via [Duktape](http://duktape.org/), native hooks for rendering the React component tree to `juce::Component` instances, and a flexbox layout engine via [Yoga](https://yogalayout.com/).
TODO: Reference Yoga and Hermes/Duktape

For more information, see the introductory blog post here: [Blueprint: A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)
React-JUCE is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) UI for a [JUCE](http://juce.com/) application or plugin.

## Status
For more information, see the introductory blog post here: [A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)

## So you wanna use JavaScript to build audio apps/plugins ...

Wait! Have you seen [Elementary](https://github.com/nick-thompson/elementary)?

Why are we pointing you at another project?

React-JUCE and Elementary serve two slightly different purposes.
If you're looking to develop audio apps in modern functional JavaScript
then Elementary might be the project for you. React-JUCE allows you to
add a React JS UI to your JUCE C++ app. What if we told you there is also a JS
based environment for your DSP/audio code (and yes the performance is pretty darn good)?
You can write your entire plugin (UI and DSP) in JS, oh and you can hot-reload eveything too!

[Elementary](https://github.com/nick-thompson/elementary)?

**Approaching Beta**. We hope to announce a beta release in the coming weeks, after which we will aim our focus at stability and completeness on the path
to a 1.0 release.
OK, so why React-JUCE?

**Anticipated Breaking Changes**
Well, many reasons. Maybe you have an existing library of C++ DSP/Audio code,
perhaps its a library that you've spent hard hours (OK, hard years) crafting and
you just want a rapid development workflow for your UI? React-JUCE is for you.
Perhaps you're developing embedded Linux apps and you need C++ but want to
use React/JavaScript for your UI code? React-JUCE can help.
Maybe you hate JavaScript? Wait ... You probably shouldn't be here.
Maybe you're just much more comfortable writing DSP (or code in general) in C++
and you just want to try out React for your UI? React-JUCE is for you.

- We'll be renaming Blueprint to react-juce before beta (#34)
- ~~Updating the examples and `npm init` template to point to npm instead of the local package~~
- ~~`ReactApplicationRoot::evaluate` and `ReactApplicationRoot::evaluateFile` (#115)~~
- ~~Refactoring the hot reloader and decoupling the EcmascriptEngine from ReactApplicationRoot (#65)~~
We believe React-JUCE still has lot to offer even with [Elementary](https://github.com/nick-thompson/elementary)'s existence.
So, if you've weighed up your pros and cons then jump in, we're happy to have you!

## Status

**Approaching Beta**. Maintenance/Development of React-JUCE has recently been
taken over from Nick Thompson (original creator) by Joshua Marler. The repository
is going through a temporary restructure but we are pushing towards a stable v1.0.
Updates will be posted once v1.0 is hit. In the meantime please direct any questions
to discussions or to our Discord channel.

## Resources

- Documentation: [Docs & Getting Started](https://docs.react-juce.dev)
- Discussions: [GitHub Discussions](https://github.com/nick-thompson/react-juce/discussions)
- Discussions: [GitHub Discussions](https://github.com/JoshMarler/react-juce/discussions)
- Community: [The Audio Programmer Discord Server](https://discord.gg/3H4wwVf49v)
- Join the `#blueprint` channel and say hi!
- Join the `#react-juce` channel and say hi!

## Maintainers

- [@nick-thompson](https://github.com/nick-thompson)
Originally authored by @nick-thompson, now maintained by @JoshMarler.

- [@joshmarler](https://github.com/JoshMarler)
- [@nick-thompson](https://github.com/nick-thompson)

## Examples

React-JUCE is a young project, but already it provides the framework on which the entire user interface for [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant) plugin is built.
You can check out a selection of example plugins over at [react-juce-examples](https://github.com/JoshMarler/react-juce-examples)

![Creative Intent Remnant: Screenshot](https://github.com/nick-thompson/react-juce/blob/master/RemnantScreenShot.jpg)
To see a real world example of a plugin build with react-juce checkout [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant).

Besides that, you can check out the example code in the `examples/` directory. See the "Documentation" section
below for building and running the demo plugin. If you have a project written with React-JUCE that you want to share, get in touch! I would
love to showcase your work.
If you have a project written with React-JUCE that you want to share, get in touch! We would love to showcase your work.

## Contributing

See [CONTRIBUTING.md](https://github.com/nick-thompson/react-juce/blob/master/CONTRIBUTING.md)
See [CONTRIBUTING.md](https://github.com/JoshMarler/react-juce/blob/master/CONTRIBUTING.md)

## License

See [LICENSE.md](https://github.com/nick-thompson/react-juce/blob/master/LICENSE.md)
See [LICENSE.md](https://github.com/JoshMarler/react-juce/blob/master/LICENSE.md)
26 changes: 14 additions & 12 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
# Introduction

React-JUCE is a hybrid JavaScript/C++ framework that enables a [React.js](https://reactjs.org/) frontend for a [JUCE](http://juce.com/) application or plugin. It provides an embedded, ECMAScript-compliant JavaScript engine via [Duktape](http://duktape.org/), native hooks for rendering the React component tree via `juce::Component` instances, and a flexbox layout engine via [Yoga](https://yogalayout.com/).
React-JUCE is a hybrid JavaScript/C++ framework that enables a
[React.js](https://reactjs.org/) frontend for a [JUCE](http://juce.com/)
application or plugin.

For more information, see the introductory blog post here: [React-JUCE: A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)
For more information, see the introductory blog post here:
[React-JUCE: A JUCE Rendering Backend for React.js](https://nickwritesablog.com/blueprint-a-juce-rendering-backend-for-react-js)

## Examples

React-JUCE is a young project, but already it provides the framework on which the entire user interface for [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant) plugin is built.
React-JUCE is a young project, but already it provides the framework on which
the entire user interface for [Creative Intent's Remnant](https://www.creativeintent.co/product/remnant) plugin is built.

![Creative Intent Remnant: Screenshot](_media/RemnantScreenShot.jpg)

Besides that, you can check out the example code in the `examples/` directory. See the "Documentation" section
below for building and running the demo plugin. If you have a project written with React-JUCE that you want to share, get in touch! I would
love to showcase your work.
Besides that, you can check out a selection of example plugins over at [react-juce-examples](https://github.com/JoshMarler/react-juce-examples)

## Contributing
If you have a project written with React-JUCE that you want to share, get in touch! We would love to showcase your work.

Yes, please! I would be very happy to welcome your involvement. Take a look at the [open issues](https://github.com/nick-thompson/react-juce/issues)
or the [project tracker](https://github.com/nick-thompson/react-juce/projects/1) to see if there's outstanding work that you might
be able to get started. Or feel free to propose an idea or offer feedback by [opening an issue](https://github.com/nick-thompson/react-juce/issues/new) as well.
## Contributing

I don't have a formal style guide at the moment, so please try to match the present formatting in any code contributions.
Yes, please! We would be very happy to welcome your involvement. Take a look at the [open issues](https://github.com/JoshMarler/react-juce/issues)
or the [project tracker](https://github.com/JoshMarler/react-juce/projects/1) to see if there's outstanding work that you might
be able to get started. Or feel free to propose an idea or offer feedback by [opening an issue](https://github.com/JoshMarler/react-juce/issues/new) as well.

## License

See [LICENSE.md](https://github.com/nick-thompson/react-juce/blob/master/LICENSE.md)
See [LICENSE.md](https://github.com/JoshMarler/react-juce/blob/master/LICENSE.md)
9 changes: 4 additions & 5 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
## Guides

- [Getting Started](guides/Getting_Started.md)
- [Running the Examples](guides/Running_the_Examples.md)
- [Integrating Your Project](guides/Integrating_Your_Project.md)
- [Setting Up Your Project](guides/Integrating_Your_Project.md)
- [Debugging with Duktape](guides/Debugging_With_Duktape.md)
- [Why Not React Native?](guides/Why_Not_React_Native.md)

Expand All @@ -23,11 +22,11 @@

## Native

- [JS/C++ Interop](native/Interop.md)
- [Custom Native Components](native/Custom_Native_Components.md)
- [JS/Native Interop](native/Interop.md)

## Have a Question?

- [GitHub Discussions](https://github.com/nick-thompson/react-juce/discussions)
- [GitHub Discussions](https://github.com/JoshMarler/react-juce/discussions)
- [Discord Chatroom](https://discord.gg/3H4wwVf49v)
- [Open an Issue](https://github.com/nick-thompson/react-juce/issues)
- [Open an Issue](https://github.com/JoshMarler/react-juce/issues)
4 changes: 2 additions & 2 deletions docs/components/Image.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import logoDataUri from "./logo.jpg";
function App(props) {
return (
<View {...styles.outer} onMouseDown={(e) => console.log("Mouse event!", e)}>
<Image {...styles.image} source="file:///Users/nick/Documents/logo.jpg" />
<Image {...styles.image} source="file:///Users/jmarler/Documents/logo.jpg" />
<Image {...styles.image} source={logoDataUri} />
</View>
);
Expand Down Expand Up @@ -47,7 +47,7 @@ const styles = {

#### source

The image source (either a remote URL ([#14](https://github.com/nick-thompson/react-juce/issues/14)), a local file resource, or a data uri).
The image source (either a remote URL ([#14](https://github.com/JoshMarler/react-juce/issues/14)), a local file resource, or a data uri).

| Type | Required | Supported |
| ------ | -------- | -------------------------------------------------------------------------- |
Expand Down
38 changes: 19 additions & 19 deletions docs/components/Styles.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,22 @@ any other prop. In the future, we may adopt an API closer to that of React Nativ

## View Props

| Property | Support | Spec |
| -------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| border-left-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-right-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-top-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-bottom-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-left-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-right-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-top-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-left-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-bottom-right-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-left-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-right-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-width | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-color | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-radius | Planned [(#143)](https://github.com/nick-thompson/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| background-color | Partial [(#84)](https://github.com/nick-thompson/react-juce/issues/84) | [MDN background-color](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color) |
| opacity | Yes | [juce::Component::setAlpha](https://docs.juce.com/master/classComponent.html#a1b9329a87c71ed01319071e0fedac128) |
| Property | Support | Spec |
| -------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| border-left-width | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-right-width | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-top-width | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-bottom-width | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-left-color | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-right-color | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-top-color | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-color | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-bottom-left-radius | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-bottom-right-radius | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-left-radius | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-top-right-radius | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| border-width | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-width](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) |
| border-color | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-color](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) |
| border-radius | Planned [(#143)](https://github.com/JoshMarler/react-juce/issues/143) | [MDN border-radius](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) |
| background-color | Partial [(#84)](https://github.com/JoshMarler/react-juce/issues/84) | [MDN background-color](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color) |
| opacity | Yes | [juce::Component::setAlpha](https://docs.juce.com/master/classComponent.html#a1b9329a87c71ed01319071e0fedac128) |
2 changes: 1 addition & 1 deletion docs/components/Text.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A React component for displaying text.

Unlike React Native and React-DOM, `Text` does not yet support nesting ([#6](https://github.com/nick-thompson/react-juce/issues/6)), though
Unlike React Native and React-DOM, `Text` does not yet support nesting ([#6](https://github.com/JoshMarler/react-juce/issues/6)), though
it does happily support styling, and touch handling.

## Example
Expand Down
2 changes: 1 addition & 1 deletion docs/components/TextInput.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ export default App;

## Props

**TODO**: Document props. See [the class](https://github.com/nick-thompson/react-juce/blob/master/packages/react-juce/src/components/TextInput.tsx#L11) for props in the meantime.
**TODO**: Document props. See [the class](https://github.com/JoshMarler/react-juce/blob/master/packages/react-juce/src/components/TextInput.tsx#L11) for props in the meantime.
2 changes: 1 addition & 1 deletion docs/guides/Debugging_With_Duktape.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Debugger Support
#Debugger Support

(Because console.log() isn't always enough)

Expand Down
Loading

0 comments on commit a62cc2b

Please sign in to comment.