open-index/open-npm huggingface dataset:
npm package: @nanocollective/get-md
Description: Fast HTML to Markdown converter optimized for LLM consumption
Latest version: 1.3.0

# get-md

A fast, lightweight HTML to Markdown converter optimized for LLM consumption — built by the [Nano Collective](https://github.com/Nano-Collective), a community collective building AI tooling not for profit, but for the community. Everything we build is open, transparent, and driven by the people who use it. AI done right.

Lightning-fast (<100ms) with optional AI-powered conversion using a local LLM model. Pass in HTML or a URL and get clean, structured Markdown back — as a library or from the command line.

---
![Build Status](https://github.com/Nano-Collective/get-md/raw/main/badges/build.svg)
![Coverage](https://github.com/Nano-Collective/get-md/raw/main/badges/coverage.svg)
![Version](https://github.com/Nano-Collective/get-md/raw/main/badges/npm-version.svg)
![NPM Downloads](https://github.com/Nano-Collective/get-md/raw/main/badges/npm-downloads-monthly.svg)
![NPM License](https://github.com/Nano-Collective/get-md/raw/main/badges/npm-license.svg)
![Repo Size](https://github.com/Nano-Collective/get-md/raw/main/badges/repo-size.svg)
![Stars](https://github.com/Nano-Collective/get-md/raw/main/badges/stars.svg)
![Forks](https://github.com/Nano-Collective/get-md/raw/main/badges/forks.svg)

## Quick Start

```bash
npm install @nanocollective/get-md
```

```typescript
import { convertToMarkdown } from "@nanocollective/get-md";

const result = await convertToMarkdown("https://example.com");
console.log(result.markdown);
```

Or use the CLI:

```bash
npx @nanocollective/get-md https://example.com -o output.md
```

## Documentation

Full documentation is available online at **[docs.nanocollective.org](https://docs.nanocollective.org/get-md/docs)** or in the [docs/](docs/) folder:

- **[Getting Started](docs/getting-started/index.md)** — Installation, requirements, and your first conversion
- **[API Reference](docs/api/index.md)** — Full reference for the library API
- **[CLI](docs/cli/index.md)** — Command-line interface usage and options
- **[Guides](docs/guides/index.md)** — LLM-powered conversion, React Native, and configuration tips
- **[Configuration](docs/configuration/index.md)** — Config files and options reference
- **[Community](docs/community.md)** — Contributing, Discord, and how to help

## Community

The Nano Collective is a community collective building AI tooling for the community, not for profit. We'd love your help!

- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines
- **Discord**: [Join our server](https://discord.gg/ktPDV6rekE) to connect with other users and contributors
- **GitHub**: Open issues or join discussions on our repository
npm package: @nanocollective/json-up
Description: A TypeScript JSON migration tool with Zod schema validation
Latest version: 0.2.0

# json-up

A fast, type-safe JSON migration tool with Zod schema validation.

## Features

- **Type-safe migrations for JSON** with full TypeScript inference
- **Zod schema validation** at every step
- **Fluent builder API** for migration chains
- **Async migration support** for migrations that need async operations
- **Automatic version tracking**
- **Zero runtime dependencies** (only Zod as peer)

## Installation

```bash
npm install @nanocollective/json-up zod
```

## Quick Start

```typescript
import { createMigrations, migrate } from "@nanocollective/json-up";
import { z } from "zod";

const migrations = createMigrations()
  .add({
    version: 1,
    schema: z.object({ name: z.string() }),
    up: (data) => ({ name: data.name ?? "Unknown" }),
  })
  .add({
    version: 2,
    schema: z.object({ firstName: z.string(), lastName: z.string() }),
    up: (data) => {
      const [firstName = "", lastName = ""] = data.name.split(" ");
      return { firstName, lastName };
    },
  })
  .build();

const result = migrate({
  state: { _version: 1, name: "Jane Doe" },
  migrations,
});

console.log(result);
// { _version: 2, firstName: "Jane", lastName: "Doe" }
```

### Async migrations

When your migrations need to perform async operations, use the async API:

```typescript
import { createAsyncMigrations, migrateAsync } from "@nanocollective/json-up";
import { z } from "zod";

const migrations = createAsyncMigrations()
  .add({
    version: 1,
    schema: z.object({ name: z.string() }),
    up: (data) => ({ name: data.name ?? "" }),
  })
  .add({
    version: 2,
    schema: z.object({ name: z.string(), key: z.string() }),
    up: async (data) => ({
      name: data.name,
      key: await generateKey(),
    }),
  })
  .build();

const result = await migrateAsync({ state, migrations });
```

## Documentation

For full documentation, see [docs/index.md](docs/index.md):

- [Getting Started](docs/getting-started.md)
- [API Reference](docs/api-reference.md)
- [Error Handling](docs/error-handling.md)
- [Examples](docs/examples.md)

## Community

We're a small community-led team building local and privacy-first AI solutions under the [Nano Collective](https://nanocollective.org).

- [Contributing Guide](CONTRIBUTING.md)
- [Discord Server](https://discord.gg/ktPDV6rekE)
- [GitHub Issues](https://github.com/nano-collective/json-up/issues)
npm package: @nanocollective/nanotune
Description: A simple, interactive CLI for fine-tuning small language models on Apple Silicon. No YAML configs, no complex flags - just an interactive CLI that guides you through the process. ⚒️
Author: Nano Collective
Latest version: 1.3.5

# Nanotune

A simple, interactive CLI for fine-tuning small language models on Apple Silicon — built by the [Nano Collective](https://github.com/Nano-Collective), a community collective building AI tooling not for profit, but for the community. Everything we build is open, transparent, and driven by the people who use it. AI done right.

No YAML configs, no complex flags — just an interactive TUI that guides you through each step. Nanotune handles the MLX and llama.cpp tooling for you automatically.

![Example](./.github/assets/example.gif)

---
![Build Status](https://github.com/Nano-Collective/nanotune/raw/main/badges/build.svg)
![Coverage](https://github.com/Nano-Collective/nanotune/raw/main/badges/coverage.svg)
![Version](https://github.com/Nano-Collective/nanotune/raw/main/badges/npm-version.svg)
![NPM Downloads](https://github.com/Nano-Collective/nanotune/raw/main/badges/npm-downloads-monthly.svg)
![NPM License](https://github.com/Nano-Collective/nanotune/raw/main/badges/npm-license.svg)
![Repo Size](https://github.com/Nano-Collective/nanotune/raw/main/badges/repo-size.svg)
![Stars](https://github.com/Nano-Collective/nanotune/raw/main/badges/stars.svg)
![Forks](https://github.com/Nano-Collective/nanotune/raw/main/badges/forks.svg)

## Quick Start

```bash
npm install -g @nanocollective/nanotune
nanotune init
nanotune data add
nanotune train
nanotune export
nanotune benchmark
```

Or run directly with npx:

```bash
npx @nanocollective/nanotune init
```

## Documentation

Full documentation is available online at **[docs.nanocollective.org](https://docs.nanocollective.org/nanotune/docs)** or in the [docs/](docs/) folder:

- **[Getting Started](docs/getting-started/index.md)** — Installation, requirements, and your first project
- **[Commands](docs/commands/index.md)** — Full reference for all CLI commands
- **[Guides](docs/guides/index.md)** — Training data, benchmarking, LLM judge, and tuning tips
- **[Configuration](docs/configuration/index.md)** — Project config, recommended models, and judge setup
- **[Community](docs/community.md)** — Contributing, Discord, and how to help

## Community

The Nano Collective is a community collective building AI tooling for the community, not for profit. We'd love your help!

- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines
- **Discord**: [Join our server](https://discord.gg/ktPDV6rekE) to connect with other users and contributors
- **GitHub**: Open issues or join discussions on our repository
npm package: @nanodb-orm/plugin-logger
Description: Query logging plugin for nanodb-orm
Latest version: 0.1.0

# @nanodb-orm/plugin-logger

Query logging plugin for nanodb-orm.

## Install

```bash
npm install @nanodb-orm/plugin-logger
```

## Usage

```typescript
import { createDatabase } from 'nanodb-orm';
import { queryLogger } from '@nanodb-orm/plugin-logger';

const db = await createDatabase({
  tables,
  plugins: [queryLogger({ level: 'info' })],
});
```

## Options

```typescript
queryLogger({
  level: 'info',
  timing: true,
  prefix: '[nanodb]',
});
```
npm package: @nanodb-orm/plugin-schema-guard
Description: Schema guard plugin for nanodb-orm (structural preflight + deep drift assertions)
Latest version: 0.1.0

# @nanodb-orm/plugin-schema-guard

Schema guard plugin for `nanodb-orm`.

Use it to enforce required schema structures in plugin/runtime preflight and to run deep drift checks.

## Install

```bash
npm install @nanodb-orm/plugin-schema-guard
```

## Usage

```typescript
import { createDatabase } from 'nanodb-orm';
import { schemaGuard, withSchemaGuard } from '@nanodb-orm/plugin-schema-guard';

const db = await createDatabase({
  tables,
  plugins: [
    schemaGuard({
      requireTables: ['users', 'sessions'],
      tables: {
        sessions: {
          requiredColumns: ['token', 'user_id', 'expires_at'],
          requiredIndexes: ['sessions_token_idx'],
        },
      },
    }),
  ],
});

const guarded = withSchemaGuard(db);
await guarded.schemaGuard.assert(); // includes deep validation by default
```

## Options

```typescript
schemaGuard({
  mode: 'error', // 'error' | 'warn'
  runOnReady: true, // run static rule preflight during plugin install
  includeDeepValidationInAssert: true, // default deep behavior for .assert()

  requireTables: ['users'],
  forbidTables: ['legacy_users'],

  tables: {
    users: {
      requiredColumns: ['id', 'email'],
      requiredIndexes: [
        'users_email_idx',
        { columns: ['email'], unique: true },
      ],
      requiredUniqueConstraints: [['email']],
      requiredForeignKeys: [
        {
          columns: ['org_id'],
          table: 'organizations',
          references: ['id'],
          onDelete: 'CASCADE',
        },
      ],
      requiredCheckConstraintNames: ['users_email_format'],
    },
  },
});
```

## Runtime API

The plugin injects `db.schemaGuard`:

- `inspect()` -> synchronous static rule report
- `check({ deep?: boolean })` -> static + optional deep drift validation
- `assert({ deep?: boolean })` -> throws on mismatches
npm package: @nanodb-orm/plugin-sharding
Description: Advanced sharding router for nanodb-orm (post-v1)
Latest version: 0.1.0

# @nanodb-orm/plugin-sharding

Advanced sharding router for nanodb-orm (post-v1).

## Install

```bash
npm install @nanodb-orm/plugin-sharding
```

## Usage

```typescript
import { createShardedDatabase } from '@nanodb-orm/plugin-sharding';
import { schema } from 'nanodb-orm';

const users = schema.table('users', {
  id: schema.text('id').primaryKey(),
  name: schema.text('name').notNull(),
});

const db = await createShardedDatabase({
  tables: { users },
  shards: [
    { id: 'shard-0', connectionUrl: 'libsql://shard0.turso.io', authToken: '...' },
    { id: 'shard-1', connectionUrl: 'libsql://shard1.turso.io', authToken: '...' },
  ],
  shardKey: (_table, data) => {
    const id = String(data.id ?? '');
    return id.charCodeAt(0) % 2 === 0 ? 'shard-0' : 'shard-1';
  },
  preview: { enabled: true },
});

const shardDb = db.shardBy(users, { id: 'user-123' });
await shardDb.insert(users).values({ id: 'user-123', name: 'Alice' });
```

## Notes

- Sharding is advanced and guarded by `preview: { enabled: true }`.
- Cross-shard joins and transactions are not supported.
- Use `db.shard(id)` for explicit shard access.
- Use `db.broadcast(fn)` to run the same task on all shards.
npm package: @nanodb-orm/plugin-soft-delete
Description: Soft delete plugin for nanodb-orm
Latest version: 0.1.0

# @nanodb-orm/plugin-soft-delete

Soft delete plugin for nanodb-orm. Marks records as deleted instead of removing them.

## Install

```bash
npm install @nanodb-orm/plugin-soft-delete
```

## Usage

```typescript
import { createDatabase } from 'nanodb-orm';
import { softDelete } from '@nanodb-orm/plugin-soft-delete';

const db = await createDatabase({
  tables,
  plugins: [softDelete({ tables: ['posts'] })],
});
```

## Options

```typescript
softDelete({
  deletedAt: 'deletedAt',
  tables: ['posts'],
  useUnixTimestamp: false,
});
```

> Note: This plugin logs a reminder to filter soft-deleted rows.  
> Add `.where(isNull(table.deletedAt))` in your queries.
npm package: @nanodb-orm/plugin-timestamps
Description: Auto createdAt/updatedAt timestamps for nanodb-orm
Latest version: 0.1.0

# @nanodb-orm/plugin-timestamps

Auto-add `createdAt` and `updatedAt` timestamps for nanodb-orm.

## Install

```bash
npm install @nanodb-orm/plugin-timestamps
```

## Usage

```typescript
import { createDatabase } from 'nanodb-orm';
import { timestamps } from '@nanodb-orm/plugin-timestamps';

const db = await createDatabase({
  tables,
  plugins: [timestamps()],
});
```

## Options

```typescript
timestamps({
  createdAt: 'createdAt',
  updatedAt: 'updatedAt',
  tables: ['users'],
  useUnixTimestamp: false,
});
```
npm package: @nanoexpress/middleware-body-parser
Description: Body-parser middleware for nanoexpress
Author: dalisoft
Latest version: 1.2.3

# body-parser

body-parser middleware for nanoexpress

> You can use express `body-parser` middleware instead of this middleware

## Installation

```bash
npm i @nanoexpress/middleware-body-parser
# or
yarn add @nanoexpress/middleware-body-parser
```

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import bodyParser from '@nanoexpress/middleware-body-parser';

app.use(bodyParser());
```

### CJS Module

```js
const bodyParser = require('@nanoexpress/middleware-body-parser/cjs');

app.use(bodyParser());
```

## Options

| Options name         | Default | Required | Description                                                                            |
| -------------------- | ------- | -------- | -------------------------------------------------------------------------------------- |
| `options.json`       | true    | No       | Parse JSON data with content-type of `application/json` or `text/json` into JS Object? |
| `options.urlEncoded` | true    | No       | Parse JSON data with content-type of `x-www-form-urlencoded` into JS Object?           |

## License

MIT
npm package: @nanoexpress/middleware-file-upload
Description: file-upload middleware for nanoexpress
Author: dalisoft
Latest version: 1.0.7

# file-upload

file-upload middleware for nanoexpress

> You can use **express.js** `file-upload` middleware instead of this middleware

## Installation

```bash
npm i @nanoexpress/middleware-file-upload
# or
yarn add @nanoexpress/middleware-file-upload
```

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import fileUpload from '@nanoexpress/middleware-file-upload';

app.use(fileUpload());
```

### CJS Module

```js
const fileUpload = require('@nanoexpress/middleware-file-upload/cjs');

app.use(fileUpload());
```

## Options

| Options name    | Default | Required | Description                            |
| --------------- | ------- | -------- | -------------------------------------- |
| `options.limit` | 256 Mb  | Yes      | Limit of total uploading files or data |

## License

MIT
npm package: @nanoexpress/middleware-formidable
Description: Formidable middleware for nanoexpress
Author: dalisoft
Latest version: 1.1.4

# formidable

Formidable middleware for nanoexpress

## Installation

```bash
npm i @nanoexpress/middleware-formidable
# or
yarn add @nanoexpress/middleware-formidable
```

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import formidable from '@nanoexpress/middleware-formidable';

app.use(formidable());
```

### CJS Module

```js
const formidable = require('@nanoexpress/middleware-formidable/cjs');

app.use(formidable());
```

## Options

See [here](https://github.com/node-formidable/formidable#options)

## License

MIT
npm package: @nanoexpress/middleware-graphql
Description: GraphQL middleware for nanoexpress
Author: dalisoft
Latest version: 1.1.3

# graphql

graphql middleware for nanoexpress

## Installation

```bash
npm i @nanoexpress/middleware-graphql
# or
yarn add @nanoexpress/middleware-graphql
```

## Caveats

- This middleware provides only HTTP bindings
- For **subscription** support, please use [graphql-ws](https://github.com/enisdenjo/graphql-ws)

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import graphql from '@nanoexpress/middleware-graphql';

app.post('/graphql', graphql(GraphQLSchema));
```

### CJS Module

```js
const graphql = require('@nanoexpress/middleware-graphql/cjs');

app.post('/graphql', graphql(GraphQLSchema));
```

## Options

Please refer to [here](https://graphql.org/graphql-js/type/#graphqlschema) or [here](https://graphql.org/graphql-js/#writing-code) for more information

## License

MIT
npm package: @nanoexpress/middleware-passport
Description: PassportJS middleware wrapper for nanoexpress
Author: dalisoft
Latest version: 1.0.4

# PassportJS

PassportJS middleware wrapper for nanoexpress

## Installation

```bash
npm i @nanoexpress/middleware-passport
# or
yarn add @nanoexpress/middleware-passport
```

## Example

See the [examples](./examples) directory

## Usage

See [here](http://www.passportjs.org) for more info

### ESM Module

```js
import passportInitialize from '@nanoexpress/middleware-passport';
import passport from 'passport';

app.use(passportInitialize(config));
app.use(passport.session());
```

### CJS Module

```js
const passportInitialize = require('@nanoexpress/middleware-passport/cjs');
const passport = require('passport');

app.use(passportInitialize(config));
app.use(passport.session());
```

## License

MIT
npm package: @nanoexpress/middleware-redoc
Description: ReDOC middleware for nanoexpress
Author: dalisoft
Latest version: 1.0.4

# ReDoc

redoc middleware for nanoexpress swagger

## Installation

```bash
npm i @nanoexpress/middleware-redoc
# or
yarn add @nanoexpress/middleware-redoc
```

## Usage

See [here](https://github.com/Redocly/redoc/) for more info

### ESM Module

```js
import reDoc from '@nanoexpress/middleware-redoc';

app.define(swagger); // For nanoexpress this line doesn't need
app.use(reDoc());
```

### CJS Module

```js
const reDoc = require('@nanoexpress/middleware-redoc/cjs');

app.define(swagger); // For nanoexpress this line doesn't need
app.use(reDoc());
```

## Options

| Options name    | Default             | Required | Description                 |
| --------------- | ------------------- | -------- | --------------------------- |
| `options.title` | nanoexpress - ReDoc | No       | Title of documentation page |
| `options.path`  | `/docs`             | No       | Path of documentation page  |
| `options.url`   | -                   | No       | URL of Swagger file         |

## License

MIT
npm package: @nanoexpress/middleware-static-serve
Description: Static file serve middleware for nanoexpress
Author: dalisoft
Latest version: 1.0.4

# static

Static file serve middleware for nanoexpress

## Installation

```bash
npm i @nanoexpress/middleware-static-serve
# or
yarn add @nanoexpress/middleware-static-serve
```

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import staticServe from '@nanoexpress/middleware-static-serve';

app.use(staticServe('./static'));
```

### CJS Module

```js
const staticServe = require('@nanoexpress/middleware-static-serve/cjs');

app.use(staticServe('./static'));
```

## Arguments

| Name    | Type   | Description                      |
| ------- | ------ | -------------------------------- |
| path    | String | Path of your static serve folder |
| options | Object | See [Options](#options)          |

## Options

| Options name           | Default      | Required | Description                                    |
| ---------------------- | ------------ | -------- | ---------------------------------------------- |
| `options.mode`         | cached       | No       | Serve mode\*, has two values - Cached and Live |
| `options.index`        | `index.html` | No       | Index filename                                 |
| `options.forcePretty`  | false        | No       | Force appending index-file path                |
| `options.addPrettyUrl` | true         | No       | Enable pretty url by auto-appending index-file |
| `options.lastModified` | true         | No       | Enable browsers **Last-modified** check        |
| `options.compressed`   | true         | No       | Compress response/response streams             |

\* - Cached gives better performance, but on refresh gives cached result and uses more RAM. Live mode uses less memory usage, on request responses last version but on high-load applicatins may reduces performance

## License

MIT
npm package: @nanoexpress/middleware-swagger-ui
Description: Swagger UI Frontend middleware
Author: dalisoft
Latest version: 1.0.8

# swagger-ui

Swagger UI Frontend middleware

## This middleware is marked as legacy and should be used only for supporting old project

## Installation

```bash
npm i @nanoexpress/middleware-swagger-ui
# or
yarn add @nanoexpress/middleware-swagger-ui
```

## Example

See the [examples](./examples) directory

## Usage

### ESM Module

```js
import swaggerUi from '@nanoexpress/middleware-swagger-ui';

app.define(swagger); // For nanoexpress this line doesn't need
app.use('/swagger-ui-dist', swaggerUi());
```

### CJS Module

```js
const swaggerUi = require('@nanoexpress/middleware-swagger-ui/cjs');

app.define(swagger); // For nanoexpress this line doesn't need
app.use('/swagger-ui-dist', swaggerUi());
```

## Options

| Options name    | Default             | Required | Description                 |
| --------------- | ------------------- | -------- | --------------------------- |
| `options.title` | nanoexpress - ReDoc | No       | Title of documentation page |
| `options.path`  | `/docs/`            | No       | Path of documentation page  |
| `options.url`   | -                   | No       | URL of Swagger file         |

## License

MIT
npm package: @nanoflite/no-ip-updater
Description: Simple no-ip updater to use behind a router.
Author: Johan Van den Brande
Latest version: 1.0.0

# Simple no-ip-updater

I wrote this no-ip updater because my server is behind a router and my external ip address is not what the router
assumes it is.

The ip adress gets determined by using `whatsmyipaddress.com` and then an update happens to the no-ip API.

## Configuration

There are 4 environment variables used for configuration:

  * NOIP_USERNAME
  * NOIP_PASSWORD
  * NOIP_HOSTNAME
  * NOIP_INTERVAL (time between 2 updates in milliseconds, e.g. 1800000 for every 30 minutes)
  
I recommend using `direnv` to manage these environment variables (https://direnv.net/). 

## Running

Simply from the command line...

```
$> NOIP_USERNAME=... node index.js
```

Or under the PM2 process manager (https://pm2.keymetrics.io/)...

```
$> npm start
```

(There's a stop target as well)
npm package: @nanoforge-dev/actions
Description: NanoForge Actions
Latest version: 1.2.3

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/actions/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/actions"><img src="https://img.shields.io/npm/v/@nanoforge-dev/actions.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/actions"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/actions.svg?maxAge=3600" alt="npm downloads" /></a>
		<a href="https://github.com/NanoForge-dev/actions/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/actions/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/actions/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/actions/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/actions/commits/main/utils/actions"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/actions.svg?logo=github&logoColor=ffffff" alt="Last commit" /></a>
    	<a href="https://github.com/NanoForge-dev/actions/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/actions.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

`@nanoforge-dev/actions` is library that contains all utils for nanoforge actions.

Most of the sources of this package come from [discord.js][discordjs-source]. Spetial thanks to them !

## Installation

**Node.js 24.11.0 or newer is required.**

```sh
npm install --save-dev @nanoforge-dev/actions
yarn add -D @nanoforge-dev/actions
pnpm add -D @nanoforge-dev/actions
bun add -d @nanoforge-dev/actions
```

## Links

- [GitHub][source]
- [npm][npm]

## Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation][documentation].  
See [the contribution guide][contributing] if you'd like to submit a PR.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions].

[documentation]: https://github.com/NanoForge-dev/actions
[discussions]: https://github.com/NanoForge-dev/actions/discussions
[source]: https://github.com/NanoForge-dev/actions/tree/main/packages/actions
[npm]: https://www.npmjs.com/package/@nanoforge-dev/actions
[contributing]: https://github.com/NanoForge-dev/actions/blob/main/.github/CONTRIBUTING.md
[discordjs-source]: https://github.com/discordjs/discord.js
npm package: @nanoforge-dev/common
Description: NanoForge Engine - Common
Latest version: 1.1.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Engine/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/common"><img src="https://img.shields.io/npm/v/@nanoforge-dev/common.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/common"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/common.svg?maxAge=3600" alt="npm downloads" /></a>
		<a href="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/commits/main/packages/common"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Engine.svg?logo=github&logoColor=ffffff&path=packages%2Fcommon" alt="Last commit" /></a>
    	<a href="https://github.com/NanoForge-dev/Engine/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Engine.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

`@nanoforge-dev/common` is library with common interfaces and utilities used by Nanoforge Engine.

## Installation

**Node.js 25 or newer is required.**

```sh
npm install @nanoforge-dev/common
yarn add @nanoforge-dev/common
pnpm add @nanoforge-dev/common
bun add @nanoforge-dev/common
```

## Links

- [GitHub][source]
- [npm][npm]

## Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation][documentation].  
See [the contribution guide][contributing] if you'd like to submit a PR.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions].

[documentation]: https://github.com/NanoForge-dev/Engine
[discussions]: https://github.com/NanoForge-dev/Engine/discussions
[source]: https://github.com/NanoForge-dev/Engine/tree/main/packages/common
[npm]: https://www.npmjs.com/package/@nanoforge-dev/common
[contributing]: https://github.com/NanoForge-dev/Engine/blob/main/.github/CONTRIBUTING.md
npm package: @nanoforge-dev/core
Description: NanoForge Engine - Core
Latest version: 1.1.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Engine/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/core"><img src="https://img.shields.io/npm/v/@nanoforge-dev/core.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/core"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/core.svg?maxAge=3600" alt="npm downloads" /></a>
		<a href="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/commits/main/packages/core"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Engine.svg?logo=github&logoColor=ffffff&path=packages%2Fcore" alt="Last commit" /></a>
    	<a href="https://github.com/NanoForge-dev/Engine/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Engine.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

`@nanoforge-dev/core` is a core package that contains game main loop. It is used to initialize the game and run it.

## Installation

**Node.js 25 or newer is required.**

```sh
npm install @nanoforge-dev/core
yarn add @nanoforge-dev/core
pnpm add @nanoforge-dev/core
bun add @nanoforge-dev/core
```

## Example usage

Initialize the game in your main file.

```ts
import { type IRunOptions } from "@nanoforge-dev/common";
import { NanoforgeFactory } from "@nanoforge-dev/core";

export async function main(options: IRunClientOptions) {
  const app = NanoforgeFactory.createClient();

  await app.init(options);

  await app.run();
}
```

## Links

- [GitHub][source]
- [npm][npm]

## Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation][documentation].  
See [the contribution guide][contributing] if you'd like to submit a PR.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions].

[documentation]: https://github.com/NanoForge-dev/Engine
[discussions]: https://github.com/NanoForge-dev/Engine/discussions
[source]: https://github.com/NanoForge-dev/Engine/tree/main/packages/core
[npm]: https://www.npmjs.com/package/@nanoforge-dev/core
[contributing]: https://github.com/NanoForge-dev/Engine/blob/main/.github/CONTRIBUTING.md
npm package: @nanoforge-dev/core-editor
Description: NanoForge Engine - Core Editor
Latest version: 1.0.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Engine/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/core-editor"><img src="https://img.shields.io/npm/v/@nanoforge-dev/core-editor.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/core-editor"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/core-editor.svg?maxAge=3600" alt="npm downloads" /></a>
		<a href="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/commits/main/packages/core-editor"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Engine.svg?logo=github&logoColor=ffffff&path=packages%2Fcore" alt="Last commit" /></a>
    	<a href="https://github.com/NanoForge-dev/Engine/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Engine.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

`@nanoforge-dev/core-editor` is a package made to allow the editor to make change to a game even if it's already compiled and running.

If you want a core to run your game use the `@nanoforge-dev/core`.

## Installation

**Node.js 25 or newer is required.**

```sh
npm install @nanoforge-dev/core-editor
yarn add @nanoforge-dev/core-editor
pnpm add @nanoforge-dev/core-editor
bun add @nanoforge-dev/core-editor
```

## Links

- [GitHub][source]
- [npm][npm]

## Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation][documentation].  
See [the contribution guide][contributing] if you'd like to submit a PR.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions].

[documentation]: https://github.com/NanoForge-dev/Engine
[discussions]: https://github.com/NanoForge-dev/Engine/discussions
[source]: https://github.com/NanoForge-dev/Engine/tree/main/packages/core-editor
[npm]: https://www.npmjs.com/package/@nanoforge-dev/core-editor
[contributing]: https://github.com/NanoForge-dev/Engine/blob/main/.github/CONTRIBUTING.md
npm package: @nanoforge-dev/ecs-lib
Description: NanoForge Engine - ECS Lib (source code use by ECS Client and Server)
Latest version: 1.1.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Engine/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/ecs-lib"><img src="https://img.shields.io/npm/v/@nanoforge-dev/ecs-lib.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/ecs-lib"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/ecs-lib.svg?maxAge=3600" alt="npm downloads" /></a>
		<a href="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Engine/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Engine/commits/main/packages/ecs-lib"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Engine.svg?logo=github&logoColor=ffffff&path=packages%2Fecs-lib" alt="Last commit" /></a>
    	<a href="https://github.com/NanoForge-dev/Engine/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Engine.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

`@nanoforge-dev/ecs-lib` is a powerful data structure for managing game entities.

## Installation

**Node.js 25 or newer is required.**

```sh
npm install @nanoforge-dev/ecs-lib
yarn add @nanoforge-dev/ecs-lib
pnpm add @nanoforge-dev/ecs-lib
bun add @nanoforge-dev/ecs-lib
```

## Warning

This library is not usable on its own. You must use either the [ECS Client][ecs-client] or [ECS Server][ecs-server].

## Links

- [GitHub][source]
- [npm][npm]

## Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation][documentation].  
See [the contribution guide][contributing] if you'd like to submit a PR.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in [discussions][discussions].

[documentation]: https://github.com/NanoForge-dev/Engine
[discussions]: https://github.com/NanoForge-dev/Engine/discussions
[source]: https://github.com/NanoForge-dev/Engine/tree/main/packages/ecs-lib
[npm]: https://www.npmjs.com/package/@nanoforge-dev/ecs-lib
[contributing]: https://github.com/NanoForge-dev/Engine/blob/main/.github/CONTRIBUTING.md
[ecs-client]: https://github.com/NanoForge-dev/Engine/tree/main/packages/ecs-client
[ecs-server]: https://github.com/NanoForge-dev/Engine/tree/main/packages/ecs-server
npm package: @nanoforge-dev/loader-client
Description: NanoForge Loader - Client
Latest version: 1.3.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Loader/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-client"><img src="https://img.shields.io/npm/v/@nanoforge-dev/loader-client.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-client"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/loader-client.svg?maxAge=3600" alt="npm downloads" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/commits/main/apps/client"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Loader.svg?logo=github&logoColor=ffffff&path=apps%2Fclient" alt="Last commit" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Loader.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

This repository contains the Loader Client of NanoForge. Check [releases][github-releases] to see versions of the Loader. Nanoforge is a powerful game engine for web browser.

## Usage

To use Nanoforge Loader, please refer to the [CLI documentation][cli-source] !

First, install the CLI :

```bash
npm install -g @nanoforge-dev/cli
```

Create a new project :

```bash
nf new
```

And then build and start it :

```bash
cd <path_to_my_project>
nf build
nf start
```

## Contributing

Please read through our [contribution guidelines][contributing] before starting a pull request. We welcome contributions of all kinds, not just code! If you're stuck for ideas, look for the [good first issue][good-first-issue] label on issues in the repository. If you have any questions about the project, feel free to ask them on [Discussions][discussions]. Before creating your own issue or pull request, always check to see if one already exists! Don't rush contributions, take your time and ensure you're doing it correctly.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please ask on [Discussions][discussions].

[contributing]: https://github.com/NanoForge-dev/Loader/blob/main/.github/CONTRIBUTING.md
[discussions]: https://github.com/NanoForge-dev/Loader/discussions
[cli-source]: https://github.com/NanoForge-dev/CLI
[github-releases]: https://github.com/NanoForge-dev/Loader/releases
[good-first-issue]: https://github.com/NanoForge-dev/Loader/contribute
npm package: @nanoforge-dev/loader-server
Description: NanoForge Loader - Server
Latest version: 1.2.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Loader/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-server"><img src="https://img.shields.io/npm/v/@nanoforge-dev/loader-server.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-server"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/loader-server.svg?maxAge=3600" alt="npm downloads" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/commits/main/apps/server"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Loader.svg?logo=github&logoColor=ffffff&path=apps%2Fserver" alt="Last commit" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Loader.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

This repository contains the Loader Server of NanoForge. Check [releases][github-releases] to see versions of the Loader. Nanoforge is a powerful game engine for web browser.

## Usage

To use Nanoforge Loader, please refer to the [CLI documentation][cli-source] !

First, install the CLI :

```bash
npm install -g @nanoforge-dev/cli
```

Create a new project :

```bash
nf new
```

And then build and start it :

```bash
cd <path_to_my_project>
nf build
nf start
```

## Contributing

Please read through our [contribution guidelines][contributing] before starting a pull request. We welcome contributions of all kinds, not just code! If you're stuck for ideas, look for the [good first issue][good-first-issue] label on issues in the repository. If you have any questions about the project, feel free to ask them on [Discussions][discussions]. Before creating your own issue or pull request, always check to see if one already exists! Don't rush contributions, take your time and ensure you're doing it correctly.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please ask on [Discussions][discussions].

[contributing]: https://github.com/NanoForge-dev/Loader/blob/main/.github/CONTRIBUTING.md
[discussions]: https://github.com/NanoForge-dev/Loader/discussions
[cli-source]: https://github.com/NanoForge-dev/CLI
[github-releases]: https://github.com/NanoForge-dev/Loader/releases
[good-first-issue]: https://github.com/NanoForge-dev/Loader/contribute
npm package: @nanoforge-dev/loader-website
Description: NanoForge Loader - Website
Latest version: 1.2.0

<div align="center">
    <br />
    <p>
        <a href="https://github.com/NanoForge-dev"><img src="https://github.com/NanoForge-dev/Loader/blob/main/.github/logo.png" width="546" alt="NanoForge" /></a>
    </p>
    <br />
    <p>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-website"><img src="https://img.shields.io/npm/v/@nanoforge-dev/loader-website.svg?maxAge=3600" alt="npm version" /></a>
        <a href="https://www.npmjs.com/package/@nanoforge-dev/loader-website"><img src="https://img.shields.io/npm/dt/@nanoforge-dev/loader-website.svg?maxAge=3600" alt="npm downloads" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/tests.yml/badge.svg" alt="Tests status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml"><img src="https://github.com/NanoForge-dev/Loader/actions/workflows/push-docs.yml/badge.svg" alt="Documentation status" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/commits/main/apps/website"><img src="https://img.shields.io/github/last-commit/NanoForge-dev/Loader.svg?logo=github&logoColor=ffffff&path=apps%2Fwebsite" alt="Last commit" /></a>
        <a href="https://github.com/NanoForge-dev/Loader/graphs/contributors"><img src="https://img.shields.io/github/contributors/NanoForge-dev/Loader.svg?maxAge=3600&logo=github&logoColor=fff&color=00c7be" alt="Contributors" /></a>
    </p>
</div>

## About

This repository contains the Loader Website of NanoForge. Check [releases][github-releases] to see versions of the Loader. Nanoforge is a powerful game engine for web browser.

## Usage

To use Nanoforge Loader, please refer to the [CLI documentation][cli-source] !

First, install the CLI :

```bash
npm install -g @nanoforge-dev/cli
```

Create a new project :

```bash
nf new
```

And then build and start it :

```bash
cd <path_to_my_project>
nf build
nf start
```

## Contributing

Please read through our [contribution guidelines][contributing] before starting a pull request. We welcome contributions of all kinds, not just code! If you're stuck for ideas, look for the [good first issue][good-first-issue] label on issues in the repository. If you have any questions about the project, feel free to ask them on [Discussions][discussions]. Before creating your own issue or pull request, always check to see if one already exists! Don't rush contributions, take your time and ensure you're doing it correctly.

## Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please ask on [Discussions][discussions].

[contributing]: https://github.com/NanoForge-dev/Loader/blob/main/.github/CONTRIBUTING.md
[discussions]: https://github.com/NanoForge-dev/Loader/discussions
[cli-source]: https://github.com/NanoForge-dev/CLI
[github-releases]: https://github.com/NanoForge-dev/Loader/releases
[good-first-issue]: https://github.com/NanoForge-dev/Loader/contribute