codapi/README.md

96 lines
3.4 KiB
Markdown
Raw Normal View History

2023-12-17 19:59:53 +00:00
# Interactive code examples
2023-11-24 23:02:45 +00:00
2023-12-17 19:59:53 +00:00
_for documentation, education and fun_ 🎉
2023-11-24 23:02:45 +00:00
2023-12-17 19:59:53 +00:00
Codapi is a platform for embedding interactive code snippets directly into your product documentation, online course or blog post.
2023-11-24 23:02:45 +00:00
```
┌───────────────────────────────┐
2023-12-04 17:35:09 +00:00
│ def greet(name): │
│ print(f"Hello, {name}!") │
2023-11-24 23:02:45 +00:00
│ │
2023-12-04 17:35:09 +00:00
│ greet("World") │
2023-11-24 23:02:45 +00:00
└───────────────────────────────┘
2023-12-04 17:35:09 +00:00
Run ► Edit ✓ Done
2023-11-24 23:02:45 +00:00
┌───────────────────────────────┐
│ Hello, World! │
└───────────────────────────────┘
```
Codapi manages sandboxes (isolated execution environments) and provides an API to execute code in these sandboxes. It also provides a JavaScript widget [codapi-js](https://github.com/nalgeon/codapi-js) for easier integration.
Highlights:
2023-12-17 19:59:53 +00:00
- Automatically converts static code examples into mini-playgrounds.
2023-11-24 23:02:45 +00:00
- Lightweight and easy to integrate.
2023-12-17 19:59:53 +00:00
- Sandboxes for any programming language, database, or software.
- Open source. Uses the permissive Apache-2.0 license.
2023-11-24 23:02:45 +00:00
2023-12-10 21:49:51 +00:00
For an introduction to Codapi, see this post: [Interactive code examples for fun and profit](https://antonz.org/code-examples/).
2023-11-24 23:02:45 +00:00
## Installation
See [Installing Codapi](docs/install.md) for details.
## Usage (API)
Call `/v1/exec` to run the code in a sandbox:
```http
POST https://api.codapi.org/v1/exec
content-type: application/json
{
"sandbox": "python",
"command": "run",
"files": {
"": "print('hello world')"
}
}
```
2023-11-30 19:59:33 +00:00
`sandbox` is the name of the pre-configured sandbox, and `command` is the name of a command supported by that sandbox. See [Adding a sandbox](docs/add-sandbox.md) for details on how to add a new sandbox.
2023-11-24 23:02:45 +00:00
`files` is a map, where the key is a filename and the value is its contents. When executing a single file, it should either be named as the `command` expects, or be an empty string (as in the example above).
Response:
```http
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "python_run_9b7b1afd",
"ok": true,
"duration": 314,
"stdout": "hello world\n",
"stderr": ""
}
```
- `id` is the unique execution identifier.
- `ok` is `true` if the code executed without errors, or `false` otherwise.
- `duration` is the execution time in milliseconds.
- `stdout` is what the code printed to the standard output.
- `stderr` is what the code printed to the standard error, or a compiler/os error (if any).
## Usage (JavaScript)
See [codapi-js](https://github.com/nalgeon/codapi-js) to embed the JavaScript widget into a web page. The widget uses exactly the same API as described above.
## Contributing
2023-12-04 17:30:07 +00:00
Contributions are welcome. For anything other than bugfixes, please first open an issue to discuss what you want to change.
2023-11-25 20:44:32 +00:00
Be sure to add or update tests as appropriate.
2023-11-24 23:02:45 +00:00
2024-06-12 22:01:09 +00:00
## Funding
2023-11-24 23:02:45 +00:00
2024-06-12 22:01:09 +00:00
Codapi is mostly a [one-man](https://antonz.org/) project, not backed by a VC fund or anything.
2023-11-24 23:02:45 +00:00
2024-06-12 22:01:09 +00:00
If you find Codapi useful, please consider sponsoring it on GitHub. It really helps to move the project forward.
2023-11-24 23:02:45 +00:00
2024-06-12 22:01:09 +00:00
♥ [Become a sponsor](https://github.com/sponsors/nalgeon) to support Codapi.
2023-11-24 23:02:45 +00:00
2023-12-01 05:21:35 +00:00
★ [Subscribe](https://antonz.org/subscribe/) to stay on top of new features.