{"id":17483471,"url":"https://github.com/latechforce/engine","last_synced_at":"2025-04-14T22:10:47.777Z","repository":{"id":196217762,"uuid":"687095826","full_name":"latechforce/engine","owner":"latechforce","description":"Web application generator from a configuration file as a Fair Use NPM package. We are building a powerful engine allowing the complete development of an application from a JSON configuration.","archived":false,"fork":false,"pushed_at":"2025-04-14T16:27:09.000Z","size":31944,"stargazers_count":17,"open_issues_count":27,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-14T22:09:44.461Z","etag":null,"topics":["bun","engine","framework","frameworks","generator","internal-tools","low-code","no-code","postgres","typescript","webapp"],"latest_commit_sha":null,"homepage":"https://engine.latechforce.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/latechforce.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-04T15:46:38.000Z","updated_at":"2025-04-14T16:25:43.000Z","dependencies_parsed_at":"2023-09-27T19:09:32.965Z","dependency_job_id":"54d1a2a5-4649-4f32-8a22-dc63052e62b7","html_url":"https://github.com/latechforce/engine","commit_stats":null,"previous_names":["solumy/engine","safidea/engine","latechforce/engine"],"tags_count":339,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/latechforce%2Fengine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/latechforce%2Fengine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/latechforce%2Fengine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/latechforce%2Fengine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/latechforce","download_url":"https://codeload.github.com/latechforce/engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248968914,"owners_count":21191162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","engine","framework","frameworks","generator","internal-tools","low-code","no-code","postgres","typescript","webapp"],"created_at":"2024-10-19T00:05:10.265Z","updated_at":"2025-04-14T22:10:47.766Z","avatar_url":"https://github.com/latechforce.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Engine by La Tech Force\n\nEngine is a NPM package that generate a web application from a JSON configuration. This package is under Fair Use License.\n\n## Requirements\n\nWe use [Bun](https://bun.sh/) 1.2 or later to run the engine.\n\n## Installation\n\nInstall the engine in your project like any other NPM package:\n\n```bash\nbun add @latechforce/engine\n```\n\n## Usage\n\nCreate a new file `index.ts` and import the engine:\n\n```ts\nimport App from '@latechforce/engine/bun'\n\nconst app = new App()\n\nconst { url } = await app.start({\n  name: 'My App',\n  version: '1.0.0',\n})\n\nconsole.log(`App is running at ${url}`)\n```\n\n## Starter Kit\n\nWe recommend you to use our [starter kit](https://github.com/latechforce/engine-starter-kit) to start a new project.\n\n## Configuration\n\nYou can configure your app from a JSON object. This object contains the configuration of the tables, automations, drivers, integrations, forms, etc...\n\nYou can [explore the configuration here](https://engine.latechforce.com/).\n\nWe invite you to navigate into the [`examples/`](https://github.com/latechforce/engine/tree/main/examples) folder to see some examples.\n\n## Examples\n\nYou can find some app examples in the [`examples/`](https://github.com/latechforce/engine/tree/main/examples) folder.\n\n### Hello World\n\nGo to the [`examples/hello-world`](https://github.com/latechforce/engine/tree/main/examples/hello-world) folder, install dependencies, and start hacking:\n\n```bash\ncd ./examples/hello-world\nbun install\nbun start\n```\n\nThen, you can edit the JSON configuration in the `index.ts` file:\n\n```ts\nimport type { Config, CodeRunnerContext } from '@latechforce/engine'\nimport App from '@latechforce/engine/bun'\n\nconst config: Config = {\n  name: 'Hello World Example',\n  version: '1.0.0',\n  automations: [\n    {\n      name: 'helloWorld',\n      trigger: {\n        service: 'Http',\n        event: 'ApiCalled',\n        path: 'hello-world',\n        input: {\n          type: 'object',\n          properties: {\n            name: { type: 'string' },\n          },\n        },\n        output: {\n          message: '{{runJavascriptCode.message}}',\n        },\n      },\n      actions: [\n        {\n          service: 'Code',\n          action: 'RunTypescript',\n          name: 'runJavascriptCode',\n          input: {\n            name: '{{trigger.body.name}}',\n          },\n          code: String(async function (context: CodeRunnerContext\u003c{ name?: string }\u003e) {\n            const { name = 'world' } = context.inputData\n            const { logger } = context.services\n            const {\n              lodash: { capitalize },\n            } = context.packages\n\n            const message = `Hello ${capitalize(name)}!`\n            logger.info(message)\n\n            return { message }\n          }),\n        },\n      ],\n    },\n  ],\n  server: {\n    port: 3000,\n  },\n}\n\nawait new App().start(config)\n```\n\nYou can find the Open API documentation at [`http://localhost:3000/api/docs`](http://localhost:3000/api/docs).\n\nYou can test the API at [`http://localhost:3000/api/docs#tag/automation/POST/api/automation/hello-world`](http://localhost:3000/api/docs#tag/automation/POST/api/automation/hello-world).\n\n### Create Qonto Client from Notion with Pappers\n\nGo to the [`examples/create-qonto-client-from-notion-with-pappers`](https://github.com/latechforce/engine/tree/main/examples/create-qonto-client-from-notion-with-pappers) folder, install dependencies, and start hacking:\n\n```bash\ncd ./examples/create-qonto-client-from-notion-with-pappers\nbun install\nbun start\n```\n\nHere is the workflow:\n\n![Create Qonto Client from Notion with Pappers](./assets/create-qonto-client-from-notion-with-pappers.jpg)\n\n## Contributing\n\nLa Tech Force Engine is built and maintained by a small team – we'd love your help to fix bugs and add features!\n\nWe use the [Cursor IDE](https://www.cursor.com/) to write code. You can find some notepads templates in the `.cursor` folder.\n\nYou can read our [contributing guide here](https://github.com/latechforce/engine/blob/main/CONTRIBUTING.md) and our [code of conduct here](https://github.com/latechforce/engine/blob/main/CODE_OF_CONDUCT.md).\n\n### Requirements\n\n- [Bun](https://bun.sh/) v1.2.0 or later\n- [Cursor](https://www.cursor.com/) editor\n\n### Getting Started\n\nClone the project, install project dependencies, and start contributing:\n\n```bash\ngit clone https://github.com/latechforce/engine.git latechforce-engine\ncd ./latechforce-engine\nbun install\nbun run test:e2e\nbun run test:unit\n```\n\nThe `bun run test` and `bun run test:integration` commands will not work because they require private environnement variables.\nYou can run this tests by pushing a commit to the repository.\n\n**Important**: You need to have docker installed on your machine to run the e2e tests (you can use [Docker Desktop](https://docs.docker.com/desktop/)).\n\n### Scripts\n\n- `bun run format` — Format the code using Prettier\n- `bun run lint` — Validate the code using ESLint\n- `bun run clean` — Remove the `dist/` directory\n- `bun run build:schema` — Generate the JSON schema\n- `bun run build` — Build the engine for production\n- `bun run test:e2e` — Run the end-to-end tests with Bun\n- `bun run test:unit` — Run the unit tests with Bun\n\n### How to Update\n\n- `bun upgrade` — Bump Bun to the latest version\n- `bun update` — Update Node.js modules (dependencies)\n\n## License\n\nCopyright (c) 2024-present Thomas JEANNEAU, La Tech Force (thomas.jeanneau@latechforce.com). This source code is licensed under a Fair Use License found in the [LICENSE](https://github.com/latechforce/engine/blob/main/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flatechforce%2Fengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flatechforce%2Fengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flatechforce%2Fengine/lists"}