Search by

anvyr / loom

PHP content-application framework. File-native pages, explicit runtime.

Maintainers

Package info

github.com/anvyr/loom

Homepage

pkg:composer/anvyr/loom

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-09-03 10:42 UTC

This package is auto-updated.

Last update: 2026-09-03 10:53:17 UTC


README

Anvyr Loom Logo

License PHP Version Tests

Why Anvyr Loom?

A PHP content-application framework. Every service binding, middleware, and routing decision is visible in code you own. We call this Pragmatic Zero Magic.

  • Explicit over Implicit: Service bindings, routes, and middleware are declared directly.
  • No facades: Dependencies arrive through constructors and method signatures, not Laravel-style static facades.
  • Content first: Pages are files with frontmatter — nested folders are URL paths.
  • Modern & Stable: PHP 8.4+. We track current PHP and drop legacy detours early.
  • Lean by design: Small runtime, short dependency graph, compact enough to inspect end to end.

Features

Content & ORM

  • File-native pages .vlt or .md with YAML frontmatter. Nested paths (docs/install.vlt/docs/install, docs/index.vlt/docs). Versionable in Git. No database required for a content site.
  • ORM with relationships Models, eager/lazy loading, casts, soft deletes, scopes, model events, and pivot operations (hasOne, hasMany, belongsTo, belongsToMany).
  • Query builder Fluent SQL with joins, pagination, upsert, and query caching. SQLite, MySQL, PostgreSQL.
  • Schema builder & migrations Database-agnostic table definitions with versioned migrations.

Multi-Tenancy

  • Host, path & callback resolvers Map domains, path segments, or custom logic to tenants.
  • Full isolation Content, views, storage, cache, sessions, and database all scope per tenant.
  • CLI orchestration --tenant=<id>, --all-tenants, and checkpoint-based batched migrations.

Modules

  • Manifest-driven module.json with semver dependencies and topological load order.
  • Declarative integration Routes, views, and CLI commands are declared in the manifest.

HTTP

  • Router Named routes, parameters (optional/wildcard), groups, middleware pipelines, caching. /{slug*} serves nested pages.
  • Middleware CSRF, sessions, rate limiting, ETag response caching, error handling.
  • Rate limiting Named limiters, dynamic callbacks, IP whitelisting.
  • View engine Blade-like syntax, layout inheritance, partials, namespace support.
  • HTTP client cURL-backed with retry, auth, and typed responses.

System

  • Job queue Database-backed with retry, deduplication, and worker daemon.
  • Task scheduler Cron-style scheduling via CLI or web endpoint.
  • Validation Standalone validator with built-in rules and custom extensions.
  • CLI Scaffolding, migrations, modules, cache, page index, diagnostics.
  • Caching File, Redis, or APCu with tag-based invalidation.
  • Logging PSR-3 with daily rotation.
  • Security Auto-escaped templates, CSRF tokens, prepared statements, path traversal protection.

Requirements

  • PHP 8.4+ (+ extensions: pdo, mbstring, json, openssl)
  • Optional PHP extensions: curl for the HTTP client, apcu for APCu cache, redis for Redis cache
  • Linux, macOS, or WSL2
  • Composer
  • SQLite, MySQL, or PostgreSQL (optional)

Quick Start

# Clone and install
git clone https://github.com/anvyr/loom.git
cd loom
./install.sh

# Start dev server
./loom serve

Visit http://localhost:8000

You can also run install.sh as a standalone bootstrapper; when it is outside a checkout it clones Anvyr Loom first, then continues setup.

Development QA

Routine local checks use Composer:

composer qa
composer test

For a reproducible PHP 8.4/8.5 environment without changing your host PHP install, use Podman:

PHP_VERSION=8.4 podman compose run --rm test
PHP_VERSION=8.5 podman compose run --rm test
PHP_VERSION=8.5 podman compose run --rm test-external

Documentation

License

Anvyr Loom is licensed under the Apache License 2.0.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Security Issues: Email security@anvyr.dev (do not open public issues!)

Credits

Built by Anvyr.

See composer.json for dependencies.