mirror of
https://github.com/noodlapp/noodl.git
synced 2026-01-11 23:02:53 +01:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e514f2521 | ||
|
|
8a88290dab | ||
|
|
418eff7dc7 | ||
|
|
c95725ec08 | ||
|
|
eae223a817 | ||
|
|
57932fef3c | ||
|
|
42e065b586 | ||
|
|
78af7d6c2a | ||
|
|
6115782eed | ||
|
|
dedd2f4f14 | ||
|
|
5976008ae3 | ||
|
|
48010f2c29 | ||
|
|
9bce91d5b3 |
32
README.md
32
README.md
@@ -2,11 +2,22 @@
|
||||
|
||||
[Noodl](https://noodl.net) is a low-code platform where designers and developers build custom applications and experiences. Designed as a visual programming environment, it aims to expedite your development process. It promotes the swift and efficient creation of applications, requiring minimal coding knowledge.
|
||||
|
||||
## Requirements
|
||||
## Documentation
|
||||
Documentation for how to use Noodl can be found here:
|
||||
[https://noodlapp.github.io/noodl-docs/](https://noodlapp.github.io/noodl-docs/)
|
||||
|
||||
[Node.js](https://nodejs.org/)
|
||||
## Community
|
||||
Main support channel is Discord: [https://www.noodl.net/community](https://www.noodl.net/community)
|
||||
|
||||
## Getting Started
|
||||
## Download releases
|
||||
Pre-built binaries can be [downloaded from Github](https://github.com/noodlapp/noodl/releases)
|
||||
|
||||
## Note for users who are migrating from the deprecated closed source version
|
||||
- [Migrating the project files and workspaces to a Git provider](https://noodlapp.github.io/noodl-docs/docs/guides/collaboration/migrating-from-noodl-hosted-git)
|
||||
- [Migrate backend and database](https://noodlapp.github.io/noodl-docs/docs/guides/deploy/using-an-external-backend#migrating-from-a-noodl-cloud-service)
|
||||
- [Self-host frontend](https://noodlapp.github.io/noodl-docs/docs/guides/deploy/hosting-frontend)
|
||||
|
||||
## Building from source
|
||||
|
||||
```bash
|
||||
# Install all dependencies
|
||||
@@ -22,3 +33,18 @@ $ npm run dev
|
||||
# Start Noodl Editor test runner
|
||||
$ npm run test:editor
|
||||
```
|
||||
|
||||
## Licenses
|
||||
This repository contains two different licenses for different parts of the Noodl platform.
|
||||
|
||||
- Components related to the editor, used to edit Noodl projects, are under GPLv3
|
||||
- Components related to the end applications, used by the applications Noodl deploys, are under MIT
|
||||
|
||||
All of the source code of applications created with Noodl are under MIT. This means you can do project specific changes to the runtime without having to redistribute your changes.
|
||||
|
||||
Packaged licensed under MIT:
|
||||
- `noodl-runtime`
|
||||
- `noodl-viewer-cloud`
|
||||
- `noodl-viewer-react`
|
||||
|
||||
You can find a MIT LICENSE file in each of these packages. The rest of the repository is licensed under GPLv3.
|
||||
|
||||
7
package-lock.json
generated
7
package-lock.json
generated
@@ -35443,7 +35443,7 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/Noodl": {
|
||||
"node_modules/noodl-editor": {
|
||||
"resolved": "packages/noodl-editor",
|
||||
"link": true
|
||||
},
|
||||
@@ -48967,8 +48967,7 @@
|
||||
"dev": true
|
||||
},
|
||||
"packages/noodl-editor": {
|
||||
"name": "Noodl",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"dependencies": {
|
||||
"@electron/remote": "^2.1.1",
|
||||
"@jaames/iro": "^5.5.2",
|
||||
@@ -80984,7 +80983,7 @@
|
||||
"version": "2.0.10",
|
||||
"dev": true
|
||||
},
|
||||
"Noodl": {
|
||||
"noodl-editor": {
|
||||
"version": "file:packages/noodl-editor",
|
||||
"requires": {
|
||||
"@babel/core": "^7.19.1",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"graph": "npx nx graph",
|
||||
"ci:prepare:editor": "ts-node ./scripts/ci-editor-prepare.ts",
|
||||
"ci:build:viewer": "lerna exec --scope @noodl/noodl-viewer-react -- npm run build",
|
||||
"ci:build:editor": "lerna exec --scope Noodl -- npm run ci:build",
|
||||
"ci:build:editor": "lerna exec --scope noodl-editor -- npm run ci:build",
|
||||
"build:editor": "ts-node ./scripts/build-editor.ts",
|
||||
"build:editor:_viewer": "ts-node ./scripts/noodl-editor/build-viewer.ts",
|
||||
"build:editor:_editor": "ts-node ./scripts/noodl-editor/build-editor.ts",
|
||||
@@ -20,7 +20,7 @@
|
||||
"build:cloud-runtime": "lerna run build --scope @noodl/cloud-runtime --stream && lerna run build:pack --scope @noodl/cloud-runtime --stream",
|
||||
"start:storybook": "lerna exec --scope @noodl/noodl-core-ui -- npm run start",
|
||||
"start:viewer": "lerna run start --scope @noodl/noodl-viewer-react --stream",
|
||||
"start:editor": "lerna run start --scope Noodl --stream",
|
||||
"start:editor": "lerna run start --scope noodl-editor --stream",
|
||||
"dev": "ts-node ./scripts/start.ts",
|
||||
"start": "ts-node ./scripts/start.ts -- --build-viewer",
|
||||
"test:editor": "ts-node ./scripts/test-editor.ts",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "Noodl",
|
||||
"name": "noodl-editor",
|
||||
"productName": "Noodl Editor",
|
||||
"description": "Low-code for when experience matter",
|
||||
"author": "Noodl <info@noodl.net>",
|
||||
"homepage": "https://noodl.net",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"main": "src/main/main.js",
|
||||
"scripts": {
|
||||
"build": "npx ts-node -P ./tsconfig.build.json ./scripts/build.ts",
|
||||
@@ -15,7 +15,13 @@
|
||||
"test:ci": "webpack-cli --config=webpackconfigs/webpack.test-ci.js && electron test.js"
|
||||
},
|
||||
"build": {
|
||||
"appId": "noodl.net.noodl",
|
||||
"appId": "noodl.net.noodl-editor",
|
||||
"win": {
|
||||
"target": "nsis"
|
||||
},
|
||||
"nsis": {
|
||||
"guid": "noodl.net.noodl-editor"
|
||||
},
|
||||
"protocols": {
|
||||
"name": "noodl",
|
||||
"schemes": [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { AppRouter } from "Noodl/src/editor/src/pages/AppRouter";
|
||||
import { AppRouter } from "noodl-editor/src/editor/src/pages/AppRouter";
|
||||
|
||||
export class AppRoute {
|
||||
constructor(public readonly router: AppRouter) {}
|
||||
|
||||
@@ -7,6 +7,7 @@ import { verifyOpenAiApiKey } from '@noodl-models/AiAssistant/api';
|
||||
import { PrimaryButton, PrimaryButtonSize, PrimaryButtonVariant } from '@noodl-core-ui/components/inputs/PrimaryButton';
|
||||
import { Box } from '@noodl-core-ui/components/layout/Box';
|
||||
import { VStack } from '@noodl-core-ui/components/layout/Stack';
|
||||
import { PropertyPanelButton } from '@noodl-core-ui/components/property-panel/PropertyPanelButton';
|
||||
import { PropertyPanelRow } from '@noodl-core-ui/components/property-panel/PropertyPanelInput';
|
||||
import { PropertyPanelPasswordInput } from '@noodl-core-ui/components/property-panel/PropertyPanelPasswordInput';
|
||||
import { PropertyPanelSelectInput } from '@noodl-core-ui/components/property-panel/PropertyPanelSelectInput';
|
||||
@@ -31,14 +32,14 @@ export function OpenAiSection() {
|
||||
const haveGpt4 = !!models['gpt-4'];
|
||||
if (haveGpt4) {
|
||||
OpenAiStore.setIsAiApiKeyVerified(true);
|
||||
ToastLayer.showSuccess('Open AI, API Key is valid with GPT-4!');
|
||||
ToastLayer.showSuccess('OpenAI API Key is valid with GPT-4!');
|
||||
} else {
|
||||
OpenAiStore.setIsAiApiKeyVerified(false);
|
||||
ToastLayer.showError('Open AI, API Key is missing gpt-4 model Support!');
|
||||
ToastLayer.showError('OpenAI API Key is missing gpt-4 model Support!');
|
||||
}
|
||||
} else {
|
||||
OpenAiStore.setIsAiApiKeyVerified(false);
|
||||
ToastLayer.showError('Open AI, API Key is invalid!');
|
||||
ToastLayer.showError('OpenAI API Key is invalid!');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,6 +96,20 @@ export function OpenAiSection() {
|
||||
}}
|
||||
/>
|
||||
</PropertyPanelRow>
|
||||
<PropertyPanelRow label="API Key" isChanged={false}>
|
||||
<PropertyPanelButton
|
||||
properties={{
|
||||
isPrimary: true,
|
||||
buttonLabel: 'Verify API Key',
|
||||
onClick() {
|
||||
onVerifyApiKey();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</PropertyPanelRow>
|
||||
<Box hasYSpacing>
|
||||
<Text>Verify your OpenAI API key to start using AI Commands.</Text>
|
||||
</Box>
|
||||
</>
|
||||
)}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ export function DeploySection() {
|
||||
text="All these settings are temporary and will be moved to another place in a future version."
|
||||
/>
|
||||
<Box hasBottomSpacing>
|
||||
<Text>The Base Url will be automatically filled in when deploying to Noodl hosting.</Text>
|
||||
<Text>The Base Url.</Text>
|
||||
</Box>
|
||||
<PropertyPanelRow label="Custom Base Url">
|
||||
<PropertyPanelTextInput value={baseUrl} onChange={handleBaseUrl} />
|
||||
|
||||
@@ -324,6 +324,11 @@ export function GitStatusButton({ openGitSettingsPopout }: GitStatusButtonProps)
|
||||
});
|
||||
} else {
|
||||
ToastLayer.showError('Failed to push. ' + error);
|
||||
|
||||
// If the error is a rejected push, we need to fetch again to get the latest state where we can pull and rebase
|
||||
if (error?.toString().includes('rejected')) {
|
||||
await fetchRemote();
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
@@ -64,7 +64,7 @@ export function BaseWindow({
|
||||
variant={variant === BaseWindowVariant.Shallow ? TitleBarVariant.Shallow : TitleBarVariant.Default}
|
||||
version={platform.getVersionWithTag()}
|
||||
state={newVersionAvailable ? TitleBarState.UpdateAvailable : TitleBarState.Default}
|
||||
isWindows={process.platform === 'win32'}
|
||||
isWindows={['win32', 'linux'].includes(process.platform)}
|
||||
onMinimizeClicked={() => App.instance.minimize()}
|
||||
onMaximizeClicked={() => App.instance.maximize()}
|
||||
onCloseClicked={() => App.instance.close()}
|
||||
|
||||
@@ -70,10 +70,10 @@ import { getCurrentPlatform } from '../helper';
|
||||
// NOTE: Getting error "Cannot set properties of null (setting 'dev')" here,
|
||||
// It basically means that some package is not relative to this path.
|
||||
console.log("--- Run 'npm install' ...");
|
||||
execSync(`npm install --arch=${arch} --scope Noodl`, {
|
||||
execSync(`npm install --arch=${arch} --scope noodl-editor`, {
|
||||
stdio: 'inherit',
|
||||
env: process.env
|
||||
});
|
||||
})
|
||||
console.log("--- 'npm install' done!");
|
||||
|
||||
// NOTE: npm install --arch= does this too
|
||||
@@ -89,7 +89,7 @@ import { getCurrentPlatform } from '../helper';
|
||||
// Build: Replace "dugite"
|
||||
// Build: Replace "desktop-trampoline"
|
||||
console.log("--- Run 'npm run build' ...");
|
||||
execSync('npx lerna exec --scope Noodl -- npm run build', {
|
||||
execSync('npx lerna exec --scope noodl-editor -- npm run build', {
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
...process.env,
|
||||
|
||||
@@ -74,7 +74,7 @@ const cloudRuntimeProcess = attachStdio(
|
||||
}
|
||||
);
|
||||
|
||||
const editorProcess = attachStdio(exec('npx lerna exec --scope Noodl -- npm run start', processOptions), {
|
||||
const editorProcess = attachStdio(exec('npx lerna exec --scope noodl-editor -- npm run start', processOptions), {
|
||||
prefix: 'Editor',
|
||||
color: ConsoleColor.FgCyan
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@ console.log(
|
||||
);
|
||||
console.log("---");
|
||||
|
||||
execSync("npx lerna exec --scope Noodl -- npm run test", {
|
||||
execSync("npx lerna exec --scope noodl-editor -- npm run test", {
|
||||
cwd: CWD,
|
||||
stdio: "inherit",
|
||||
env: {
|
||||
|
||||
Reference in New Issue
Block a user