Search by

Packages from phil · Transparency log

  • PHP

    phil/access-bundle

    Per-item visibility, sharing levels, access groups and their entry points, self-expiring access and 'view as this member', declared as relations on the shared resource permission model and decided by Symfony Security voters, EasyAdmin's included.

  • PHP

    phil/access-codes

    Single-use codes in named batches: an alphabet without lookalike symbols, a check symbol, chosen length and entropy; codes given once at creation, as CSV with prefilled redemption links, stored as keyed hashes under an ordered list of keys; atomic redemption, expiry, batch revocation, counters, rate

  • PHP

    phil/access-links

    Invitations by personal link: an opaque 256-bit token stored as a keyed hash under an ordered list of keys, a recipient named by a stable identifier, validity and closure on a PSR-20 clock, an answer editable until closure, reminders to non-respondents through Messenger with identifier-only messages

  • PHP

    phil/accessibility-check

    Accessibility of content checked before it is published: HTML and UJO documents, rules registered by class with their WCAG 2.2 success criterion, severity and translated message — text alternatives, headings, link names, contrast, table headers, languages and more —, a JSON report, a validator const

  • PHP

    phil/accessibility-statement

    Versioned accessibility statements: the conformance target and status claimed against WCAG 2.0, 2.1 or 2.2, unmet criteria with their reason, alternative and fix date, the alternatives offered, the feedback contact, the enforcement procedure and the last evaluation, as plain data, and the next versi

  • PHP

    phil/address

    Postal addresses for PHP: the address format of each country, its subdivisions to three levels, addresses checked and written as each country writes them, on commerceguys/addressing's data imported as PHP data and symfony/intl's country names

  • PHP

    phil/address-bundle

    phil/address in Symfony: an address form whose fields follow the country chosen, live through a Stimulus controller, the constraint ValidAddress, the JSON column type phil_address, and addresses in Twig

  • PHP

    phil/almanac

    Computed dates for PHP: Easter, the phases of the Moon, the equinoxes and solstices, eclipses, sunrise, sunset and twilights by Meeus's algorithms, the Chinese New Year, and rules written in words — 2nd monday of october, easter - 47 days — for an almanac of a period

  • PHP

    phil/almanac-bundle

    phil/almanac in Symfony: computed dates declared in configuration or kept in the database for an administrator, the almanac as a service, its form, its dates, eclipses and the sunrise and sunset of configured places in Twig

  • PHP

    phil/analytics-bundle

    Privacy-first analytics for Symfony: aggregate counters per UTC day and declared dimension, no visitor identifier, small-number suppression, Do Not Track and Global Privacy Control respected, goals, events, outbound links, shared views, reports and alerts; a collection endpoint, counters in Doctrine

  • PHP

    phil/api-contract

    Both sides of an unversioned HTTP API contract in plain PHP: RFC 9457 problem details, Deprecation and Sunset signals, tolerant reading of enumerations, and the verification of an OpenAPI document against levels of rules

  • PHP

    phil/api-contract-bundle

    Both sides of an unversioned HTTP API contract for Symfony, on phil/api-contract and phil/idempotency: exceptions as problem details, #[Idempotent] controllers with keys in Doctrine or a cache pool, #[DeprecatedEndpoint] controllers, the deprecations of called APIs recorded and checked in CI, and it

  • PHP

    phil/audit-bundle

    Append-only audit trail for Symfony: hash-chained rows indexed by actor, action and record, read a page at a time, one chain per site, facts fed to dashboards, salted commitments on personal fields, external anchors

  • PHP

    phil/audit-viewer

    The audit log of phil/audit-bundle read in an EasyAdmin back office: filters, record history with a History action on audited entities, hash-chain status by site and an audited CSV export

  • PHP

    phil/automations

    A no-code automation builder for site events: definitions as JSON, triggers and actions registered by packages, delay, filter and branch steps, retries and per-step compensation, runs advanced by Messenger and Scheduler, idempotent and safe on several workers, a signed webhook action, Doctrine DBAL

  • PHP

    phil/backup

    Database and media backups in plain PHP: SQLite, MySQL, MariaDB and PostgreSQL through their own client tools with credentials kept off the command line, media directories in a tar archive, libsodium encryption by chunks, grandfather-father-son rotation, a restore guard and restore tests

  • PHP

    phil/backup-bundle

    phil/backup in Symfony: database and media backups from configuration, encrypted with a key from the environment, rotated, restored behind a guard that asks for confirmation, the database name typed again and an automatic backup first, and tested by restoring into a copy

  • JavaScript

    phil/block-editor-bundle

    A block editor for Symfony forms, written in Stimulus controllers without a build step: slash menu, drag handles, inline toolbar, clean paste, nested blocks and columns, mentions and page links, image uploads, a reduced mode, reading and writing UJO (Universal JSON Output) documents checked by phil/

  • PHP

    phil/bot-detection-bundle

    Bot detection for Symfony whose only output is a robot or human verdict: in-browser automation detectors in a Stimulus controller, a strict verdict, a verdict-to-friction policy and an aggregate robot verdict counter

  • PHP

    phil/bounce-parser

    Messages received on a bounce mailbox read and classified: delivery status notifications (RFC 3464, RFC 6533), abuse feedback reports (RFC 5965) behind an authenticator, bounces written as text, automatic replies (RFC 3834), enhanced status codes (RFC 3463), VERP return paths, and ordered rules of t

  • PHP

    phil/broken-flow-alerts

    An alert when a path visitors finish (a purchase, a registration, a form) stops completing: daily completions compared with the rhythm of the weeks before as a Poisson count, weekday by weekday, read from counters the application already keeps, without a synthetic request, and sent through Symfony N

  • PHP

    phil/browser-security-bundle

    The protections a Symfony application asks of the browser, adjustable page by page: Content Security Policy with nonces, report-only and a bounded report endpoint, the neighbouring headers, HSTS and an HTTPS redirect, X-Frame-Options by path, signed cookies, external redirects refused, and Clear-Sit

  • PHP

    phil/calendar-sync

    External calendar synchronization: busy times read from iCalendar feeds, CalDAV, Google Calendar and Microsoft Graph, and the site's events written to them, each service an adapter behind a port.

  • PHP

    phil/certificates-bundle

    Certificates of completion for Symfony on Open Badges: courses and their pass criteria, certificates awarded to those who meet them, a PDF certificate with a verification QR code and the signed credential embedded, a public register, and revocation through status lists

  • PHP

    phil/checkin

    The check-in core of events and venues: a code read at a checkpoint resolved to its credential, decided by an admission policy (opening, closing, entries, anti-passback, re-entry), recorded once per scan in a ledger shared by the devices, and offline manifests of keyed fingerprints with the synchron

  • PHP

    phil/checkin-bundle

    phil/checkin in Symfony: the desk on the application's resolvers, check-ins kept by Doctrine, scan, manifest and synchronisation endpoints granted by the application's security behind a stateless CSRF token, and a Stimulus desk that keeps checking in offline from a manifest of keyed fingerprints

  • PHP

    phil/circuit-breaker

    Circuit breakers for calls to third parties: a closed/open/half-open state machine per key, failure-rate thresholds over a minimum of calls in a fixed window, timing on a PSR-20 clock, a port for the store of states shared by the processes, and a port for the operator who forces a circuit open

  • PHP

    phil/circuit-breaker-bundle

    phil/circuit-breaker in Symfony: circuits declared in configuration, their states in a PSR-6 cache pool shared by the workers, an HTTP client put behind its circuit per client or destination, overrides that force a circuit open, and a profiler panel

  • PHP

    phil/citations

    Citations and bibliographies: references kept as CSL-JSON, BibTeX and RIS import, and author-date, notes and numeric styles written in PHP, in English and French, as text or escaped HTML.

  • PHP

    phil/comments-bundle

    Comments for Symfony on a whole page or on a passage of a text, with suggested replacements: in a UJO (Universal JSON Output) document, anchors that follow edits and mark a vanished passage orphaned; threads, authors as resource references, Doctrine storage, JSON endpoints and a Stimulus controller

  • PHP

    phil/commerce-product-template

    Product templates for PHP: axes with ordered values, swatches and supplier names, prices per value with supplements, faces and print zones in millimetres, combinations excluded, a SKU pattern checked for collisions, and designs planned on templates as one product per language and combination

  • PHP

    phil/community-notes

    Community notes written by qualified members and published by an explainable cross-agreement rule.

  • PHP

    phil/console-bundle

    Safer Symfony console commands: #[ForbidEnvironment] refusing a command in the listed kernel environments, #[ConfirmEnvironment] asking for the environment's name before it runs, --timestamps prefixing each output line with the time, --debug-phil printing the debug logs of chosen channels, a time an

  • PHP

    phil/contact

    Contact cards for PHP: a person or an organisation with a structured name ordered and sorted by its culture, emails, typed phone lines, web addresses and messaging handles, written as vCard 4.0, schema.org JSON-LD and JSContact, read from JSContact, and kept as an array for one JSON column

  • PHP

    phil/contact-bundle

    phil/contact in Symfony: a contact card form with its emails, phone lines, web addresses, handles and structured person name, the JSON column type phil_contact, vCard and JSContact downloads, the JSContact reader as a service, and person names and schema.org JSON-LD in Twig

  • PHP

    phil/contact-form-bundle

    A "write to us" form for Symfony: name, email, subject and message, protected by phil/spam-protection-bundle without a captcha, sent by Symfony Mailer from the site's own address with the visitor in Reply-To

  • PHP

    phil/content-bundle

    Dimensioned content for Symfony and Doctrine: a root and its rows by locale, stage and version, a data mapper pipeline, draft-to-live publication on symfony/workflow with frozen versions and page events, bodies published as UJO, routes with redirects of old slugs, an administration with autosaved dr

  • PHP

    phil/content-warnings

    Content warnings for PHP: a translated catalogue of warning themes each application completes or replaces, the warnings of a game, a book, an article or an event, and the themes a member folds or hides

  • PHP

    phil/content-warnings-bundle

    phil/content-warnings in Symfony: the catalogue of warning themes from configuration, the JSON column type phil_content_warnings, fields for warnings and preferences, a folded display in Twig with a Stimulus controller, and a store of each member's preferences

  • PHP

    phil/creation-disclosure

    How a work was made, declared part by part in the IPTC Digital Source Type vocabulary: captured, made by people, edited or created with generative AI, or undeclared, with the AI-free view and the requirement a contest or a shop sets

  • PHP

    phil/css-sanitizer

    CSS written by people made safe to serve: a tokenizer and parser that follow CSS Syntax Level 3, allow lists of properties, functions, selectors and at-rules (@media, @supports, @page and margin boxes, @font-face), url() limited to allowed files, @import, expression(), javascript: and bindings refus

  • PHP

    phil/data-table-bundle

    Data tables for Symfony as a Live Component: sorting, filters, pagination, row and bulk actions, inline editing, a stacked list on narrow screens, and the same state in the address for a link, a reload or a browser without JavaScript

  • PHP

    phil/data-table-export

    Writes rows to CSV and XLSX files as they are read, in bounded memory: CSV after RFC 4180 with its cells kept from running as formulas, XLSX written with ext-zip and XML, without knowing where the rows come from

  • PHP

    phil/ddd-bundle

    DDD/CQRS core for Symfony: command and query bus ports, Messenger adapters, UUIDv7 identifiers and their optional Doctrine DBAL type, domain event and domain errors

  • PHP

    phil/dev-tools

    Shared development tooling for PHIL and Tilttek packages: quality-tool configurations, Composer scripts, documentation checks and the package skeleton.

  • PHP

    phil/directory-bundle

    A directory for Symfony: listings in genres, each a content of phil/content-bundle whose versions keep its history, written by their author and the editors the author names, and related across genres as the configuration says, each found as its author decides: listed, kept out of search engines, or

  • PHP

    phil/doctrine-behaviours

    Doctrine ORM behaviours written as interfaces, traits and listeners: timestamps, blame, soft delete, trees kept as materialized paths, deactivation, owner, publication by workflow, positions within groups, scoped slugs, translations along fallback chains, versions and dated identifiers

  • PHP

    phil/edit-lock-bundle

    Edit leases for Symfony applications: one writer per resource or per block of a UJO (Universal JSON Output) document, with heartbeats, expiry, takeover and release, kept by Doctrine, and presence and block saves pushed to the other writers through Mercure as Turbo Streams, applied in the browser by

  • PHP

    phil/email-address

    Email addresses a mail server can deliver to: RFC 5321 mailbox syntax with international domains and the RFC 6531 forms an application allows, MX, null MX and A records through a port, disposable domains and IANA top-level domains imported as data, denied and allowed domains, and suggestions for sli

  • PHP

    phil/embed-bundle

    Features of a Symfony site that other sites embed: a token signed for one origin by an ordered list of keys, the page framed by that origin alone through frame-ancestors, and a <phil-embed> element sized by a small postMessage protocol, origin checked on both sides, with a plain link without JavaScr

  • PHP

    phil/enums

    Zero-dependency helper traits and attributes for PHP enums: case names and values, comparisons, from()/tryFrom() on pure enums and fromName(), static case access, and metadata attached to cases by attributes, with PHPStan extensions that type them

  • PHP

    phil/enums-bundle

    Symfony integration of phil/enums: cases translated by their Label and Description, form choices narrowed to a group, a list or a meta value, an EnumSet form type, a validator constraint, Twig functions and filters, a translation extractor, debug and TypeScript commands, JSON Schema, a serializer no

  • PHP

    phil/epub

    EPUB 3 in PHP: package document with accessibility metadata, navigation with table of contents, landmarks and page list, EPUB 2 toc.ncx, well-formed XHTML from purified HTML, stylesheets, images, obfuscated fonts and cover, audio and video with fallbacks, media overlays, fixed layout, and UJO docume

  • PHP

    phil/epub-bundle

    phil/epub in Symfony: books built by sources registered by attribute, written now or by a Messenger message, kept in a directory or in phil/media-bundle, with the fonts of phil/fonts-bundle embedded after their licence and the images of the media library as assets

  • PHP

    phil/error-tracking

    Error tracking kept at home: error events with their chained exceptions, frames, context, release, environment and reduced request, grouped by a stable fingerprint, scrubbed of personal data and secrets before anything is written, sampled and throttled, with the statuses of a group and a storage por

  • PHP

    phil/feature-flags-bundle

    Feature flags and A/B tests for Symfony: flags evaluated once per request from ordered providers (configuration, database), targeting by tenant, project or subject, stable rollouts and experiments, expiry dates, audited changes with a reason, admin screens, a controller attribute, a route condition,

  • PHP

    phil/fonts

    Font metadata from TrueType, OpenType, collections, WOFF and WOFF2: names, weight, style, OS/2 embedding permissions, licence, variation axes; @font-face rules and a licence register per file

  • PHP

    phil/fonts-bundle

    phil/fonts in Symfony: a directory of font files read into a catalogue, WOFF2 read when ext-brotli is loaded, @font-face CSS for the directory, a licence register checked by a command, and the fonts handed to phil/paged-media and read from phil/media-bundle

  • PHP

    phil/footnotes-sidenotes

    Footnotes and margin notes for UJO (Universal JSON Output) documents: references and notes resolved in reading order, numbered and checked, written as accessible endnotes, as sidenotes with CSS only, or at the foot of the printed page in CSS GCPM

  • PHP

    phil/form-logic

    Typed conditional logic for forms, evaluated alike in PHP and in a Stimulus controller with the server as judge: field conditions and computed variables, serialized as a strict JsonLogic subset with bounded size

  • PHP

    phil/forms-autosave

    A form's input kept while it is filled, for Symfony: a form option and a Stimulus controller that keep the draft in the browser, restore it with a notice and forget it once the form is sent, and an optional store of drafts on the server, per user, encrypted, with conflicts between devices told

  • PHP

    phil/forms-bundle

    Forms defined in the database for Symfony: a page for each, protected against spam, questions asked under conditions or for some tiers, choices with places, entries kept no longer than needed, sensitive values sealed, sent by email or to a signed webhook

  • PHP

    phil/geo

    Geographic value types for PHP: coordinates in decimal degrees, great-circle distances, bounding boxes, and coordinates blurred to publish a place without its exact position

  • PHP

    phil/geo-bundle

    phil/geo in Symfony: coordinates as a Doctrine embeddable, a form type, distances in Twig, and a Stimulus controller that sorts places by distance in the browser, the visitor's position never sent

  • PHP

    phil/highlight

    Syntax highlighting on the server for 24 languages, by small tokenizers with no dependency, as HTML spans with hl- classes and CSS themes

  • PHP

    phil/highlight-bundle

    phil/highlight in Symfony: the highlighter with the application's languages and aliases, the code blocks of UJO documents coloured on the server, the highlight Twig filter, and a theme stylesheet

  • PHP

    phil/http-cache-tags-bundle

    HTTP cache tags for Symfony: gathered while a response is rendered, written for Varnish, Cloudflare or Fastly, and purged when an entity changes

  • PHP

    phil/idempotency

    Each operation run once per idempotency key: keys scoped to their caller, request fingerprints, the response kept and replayed, three states with an expiring in-progress one, and stores on a port, with adapters for Doctrine DBAL and the Symfony cache under a Symfony lock, for HTTP APIs, Messenger ha

  • PHP

    phil/identity-client-bundle

    OpenID Connect sign-in for Symfony on the native oidc_login authenticator: one semantic configuration, sub-indexed provisioning, validated return_to, replay-guarded back-channel logout, a session cap, step-up by acr_values and max_age, and serialized token refresh

  • PHP

    phil/incident-mode

    A standalone incident mode: named presets that suspend sign-ups, invitations, new messages or everything but reading, a duration required on every activation, automatic lifting at the end, manual lifting and a journal; moderation offers it when both are installed.

  • PHP

    phil/indexing-consent

    The reach of a public record as the person it is about decides it: listed, kept out of search engines, or unlisted, asked by the sitemap, the structured data and the listings of a site

  • PHP

    phil/instant-messenger

    Instant messaging handles for PHP: messaging services as enums whose cases read, display and link their handles, the international services included, and the service of a handle detected among enum sets

  • PHP

    phil/instant-messenger-bundle

    phil/instant-messenger in Symfony: a form field that takes a messaging handle with its service among accepted enum sets, the constraint HandleOfType, and handles in Twig

  • PHP

    phil/ip-anonymizer

    IP addresses anonymized before they are kept: IPv4 and IPv6 parsed strictly with IPv4-mapped addresses unmapped, truncation to a prefix of each family, keyed BLAKE2b digests with a random salt forgotten each day, and generalisation to a network, a special-purpose scope or a label from a table of net

  • PHP

    phil/latex-mathml

    LaTeX formulas converted to MathML Core in PHP: scripts and limits, fractions, roots, accents, fonts, stretched delimiters, matrices and aligned equations, macros, colours, links, boxes, equation numbers and chemical notation, the formula kept as an annotation, any other command refused with its pos

  • PHP

    phil/legal-notices

    The legal notice and the privacy policy of a site as versioned, localized documents: versions with an effective date and a publication state, the identity of the publisher, the host and the privacy officer each document requires, and placeholders filled from that identity, the retention periods and

  • PHP

    phil/listings

    The core of listings — classified ads, job offers, searches for partners: bounded kinds, typed criteria that meet a search, an area shown to all and an exact place shown to accepted respondents, expiry with reminders and extensions, moderation before or after publication, and responses that put two

  • PHP

    phil/locale-dimensions

    Locales, versions and declared fallback chains between locales, as plain value objects for content, translations, sitemaps and hreflang

  • PHP

    phil/markup

    Texts in Markdown, BBCode, MediaWiki, DokuWiki, Creole, UJO, HTML or plain text, read by its own analyser into UJO documents, compiled to HTML and purified at a level: basic, forum or all, with the list of what each reading did not keep; add-ons bring dialects and formats

  • PHP

    phil/markup-bundle

    phil/markup in Symfony: the enabled formats and their levels, Markup with its compiler and purifier to replace by alias, the converter of every format into UJO, smart punctuation through phil/typography, a form field to pick a format, and the markup_html, markup_purify and markup_ujo filters in Twig

  • PHP

    phil/media-bundle

    A media library for Symfony: files and versions on any Flysystem storage, collections, images transformed around their focal point to WebP, AVIF, JPEG or PNG with GD or libvips, tiny previews, purified SVG, responsive Img and Picture components, a file explorer with a picker, a Doctrine column type,

  • PHP

    phil/mentions-bundle

    @mentions of members for Symfony: handles found in plain text and Markdown with a configurable pattern and in UJO (Universal JSON Output) documents, members resolved through the application's directory, only newly mentioned members who may see the content notified, a Twig filter linking mentions to

  • PHP

    phil/menu-bundle

    Menus for Symfony: trees of items built in code, decorated by the application — counts, classes, badges —, their current item and ancestors marked from the request, a breadcrumb, and lists or cards in Twig

  • PHP

    phil/microsymfony

    A template to initialize an application to use Symfony as a micro-framework

  • PHP

    phil/migration

    Doctrine migrations that announce what they bring: release notes and news gathered over one run and sent once, in messages cut to fit a chat transport

  • PHP

    phil/migration-bundle

    phil/migration in Symfony: the migrations of DoctrineMigrationsBundle announce what they bring, and each run is announced once on the chat channels of the configuration

  • PHP

    phil/money

    Money as a value object: an amount in the smallest unit of an ISO 4217 currency validated against the Unicode CLDR data, integer arithmetic only, decimal parsing and printing to the currency's own precision, and allocation that never loses a cent

  • PHP

    phil/money-bundle

    Symfony integration of phil/money: the accepted currencies by configuration, a MoneyType form type read in the request's locale without floats, AcceptedCurrency and MoneyRange constraints, a format_money Twig filter, a phil_currency Doctrine column type and Money as an ORM embeddable

  • PHP

    phil/monitoring-bundle

    The surveillance of a Symfony site: health checks for the database, cache pools, Messenger transports and storage, endpoints for uptime monitors, a maintenance mode, heartbeats and a dead-man switch for scheduled tasks, and a page of the Messenger queues

  • PHP

    phil/notifications-bundle

    Notifications for Symfony on Symfony Notifier: declared types delivered to each recipient's chosen channels — a notification centre with toasts, email and its daily or weekly digest, Web Push, Slack or Discord —, messages of identifiers only written out when shown, and notifications received signed

  • PHP

    phil/number-words

    Numbers spelled out in words: a typed facade over ICU for cardinals, ordinals, gender and amounts of money in words, with corrections for French, English, Spanish, German, Italian and Portuguese.

  • PHP

    phil/onboarding-bundle

    The welcome of a new member, for Symfony: flows of ordered steps completed by hand, by an event, by a checker or by an answer the application turns into roles and subscriptions, each user's progress kept under their identifier, and an accessible checklist and guided tour, in English and French

  • PHP

    phil/open-badges

    Open Badges 3.0 and CLR 2.0 credentials: issued as Verifiable Credentials 2.0, signed as JSON Web Tokens (EdDSA, RS256) or with an eddsa-rdfc-2022 Data Integrity proof, verified offline, baked into PNG and SVG images, revoked through a Bitstring Status List, endorsed by third parties and gathered in

  • PHP

    phil/open-badges-bundle

    phil/open-badges in Symfony: the issuer and its key from configuration, credentials secured as JSON Web Tokens or Data Integrity proofs, the issuer's profile and keys served, Bitstring Status Lists served, a verification page for tokens, documents and baked images, and the keys of other issuers read

  • PHP

    phil/opening-hours

    Opening hours for PHP: weekly hours with ranges past midnight, special days and periods, whether a place is open and when it next opens in its time zone, a text form people type, and schema.org OpeningHoursSpecification

  • PHP

    phil/opening-hours-bundle

    phil/opening-hours in Symfony: an opening hours form with a field a day and special hours, the JSON column type phil_opening_hours, and hours in Twig — open now, next opening, a localised table, schema.org

  • PHP

    phil/paged-media

    PDF documents behind one API: a native writer with embedded and subset TrueType fonts, images, lines and rectangles and compressed streams, with no dependency, fillable form fields and printed templates, and a Gotenberg 9 client for PDF stages, PDF/A and PDF/UA, signatures and LibreOffice conversion

  • PHP

    phil/paged-media-bundle

    phil/paged-media in Symfony: the native PDF writer and Gotenberg behind one service, Gotenberg's URL, credentials, signing certificate and timestamp authority from the configuration, templates by attribute or by name, and Messenger messages that render, run PDF stages or convert office documents

  • PHP

    phil/paged-media-weasyprint

    The WeasyPrint engine of phil/paged-media-bundle: HTML and CSS laid out as a PDF by the weasyprint command, with no access to the network and files taken from one directory only

  • PHP

    phil/passwords

    Passwords in PHP: a strength estimator that finds the patterns people use — common passwords, words, names, keyboard patterns, sequences, repeats, dates, substitutions — and scores them from 0 to 4 with feedback in English and French, k-anonymity checks against Pwned Passwords, password and passphra

  • PHP

    phil/phone

    Phone numbers for PHP: parsed from what people type, validated and typed by country, formatted in E.164, international, national and tel: forms, on libphonenumber's metadata imported as PHP data

  • PHP

    phil/phone-bundle

    phil/phone in Symfony: a phone number field read in a default country, the constraint ValidPhoneNumber with accepted types and countries, the column type phil_phone, and numbers in Twig

  • PHP

    phil/poll

    A voting engine: single, multiple and ranked ballots checked against the rules of a poll, and counted by choices, instant runoff, Borda or Schulze, with shared places, rounds and abstentions, in plain PHP

  • PHP

    phil/poll-bundle

    phil/poll in Symfony: polls and ballots kept with Doctrine, anonymous ballots changed by receipt, an application policy asked first, the single transferable vote by Meek's method in exact rationals with its rounds published, counts kept until the next ballot, and events naming the poll

  • PHP

    phil/print-compositor

    Product mockups and print files drawn with GD: artworks placed on a product photo with the fabric's shading kept, in WebP, and transparent PNG print files at a zone's real size and resolution, with images, texts fitted to their box in a font read by phil/fonts, and one file per ink

  • PHP

    phil/print-preflight

    A preflight report before printing: image resolution at placed size, font embedding permissions, bleed and safety margin, page size and count rules of a printer, colour spaces, as blocking errors, warnings and notices

  • PHP

    phil/print-preflight-bundle

    phil/print-preflight in Symfony: printer profiles from the configuration, checks added by attribute, documents measured in a browser read from JSON, a console check, and layouts recorded while phil/paged-media draws, with fonts from phil/fonts-bundle and images from phil/media-bundle

  • PHP

    phil/privacy-bundle

    Privacy law in code for Symfony: personal fields declared by attribute, logs redacted, export and erasure, delayed account deletion, scheduled retention purges with the register of processing, cookie consent refused by default, third-party frames held until consent, requests by verified link, an inc

  • PHP

    phil/publishing

    The PagePublished and PageRetired events and their contract: a page's canonical address, language, indexable flag and owner identifier, for the listeners that follow what goes online and offline

  • PHP

    phil/pwa-bundle

    An installable, offline-readable Symfony site without Workbox: a web application manifest from the configuration, a service worker served through AssetMapper with network-first and cache-first strategies, an offline page, a versioned precache list, and Stimulus controllers to install, update and pre

  • PHP

    phil/qr-code

    QR codes in PHP: the shortest mix of numeric, alphanumeric, byte and kanji segments, the ECI header of UTF-8, the smallest of the 40 versions, Reed-Solomon codes, the mask of the lowest penalty, a zone for a logo, typed contents, and SVG or PNG images

  • PHP

    phil/qr-code-bundle

    phil/qr-code in Symfony: configured defaults, qr_code() in Twig as inline SVG or a data URI, an accessible Twig component, a signed route that serves SVG or PNG with an HTTP cache, the qrCode block of UJO documents and QR codes drawn in PDF documents

  • PHP

    phil/rate-limit

    The production guard of rate limits over symfony/rate-limiter: a compiler pass that fails the container build on a limiter counting in a cache pool or a storage each server keeps for itself, and on a rate limit enabled without the component

  • PHP

    phil/rate-limit-bundle

    Rate limits declared on Symfony controllers, routes and forms: an attribute, a route default and a form option naming limiters over symfony/rate-limiter, keys hashed from the client's address or the user, 429 answers with Retry-After and the IETF RateLimit headers, JSON problems for APIs, a Twig pag

  • PHP

    phil/recurrence

    Recurrence rules for PHP: RFC 5545 RRULEs — yearly, monthly, weekly and daily, by day, month day, month and set position — read, written, and expanded into occurrences in their time zone, with exceptions

  • PHP

    phil/recurrence-bundle

    phil/recurrence in Symfony: a form for common recurrence rules with a Stimulus controller, the column type phil_rrule, and rules written in words and their occurrences in Twig

  • PHP

    phil/redirects-bundle

    Redirects managed in an admin for Symfony: exact, prefix and wildcard sources resolved only when nothing else answered, old domains mapped to a new host, loops and chains refused on save, external targets limited to allowed hosts, a log of paths not found with no visitor data, CSV import and export,

  • PHP

    phil/references-bundle

    Where a Symfony application's resources are used: links collected from JSON or polymorphic sources, kept up to date at each Doctrine flush, deletion of a resource still used refused, broken links listed

  • PHP

    phil/reporting-bundle

    Dashboards and reports for Symfony: metrics and series from any bundle through a data-source port, dashboards as Twig components with accessible HTML, CSS and SVG charts and a table of every value, an optional EasyAdmin page, and CSV, TSV or JSON reports scheduled with Scheduler and delivered by Mai

  • PHP

    phil/reservation

    The core of bookings for PHP: a resource with its capacity, buffers, opening hours and rules; requests checked against the bookings made, with the reasons they are refused; the free slots of a period; and the reminders of a booking

  • PHP

    phil/resource

    A reference to any resource of an application, by its kind and identifier: what a trash, a usage index, a taxonomy or a schedule points at without knowing the resource

  • PHP

    phil/resource-permissions

    Per-resource permissions inherited through a tree (a role, 'everyone else', most specific wins), as a shared subject-relation-object access model: declared relations, inheritance and rewrites, bounded checks and listings, in-memory and Doctrine DBAL stores.

  • PHP

    phil/route-access-check

    Checks in continuous integration that every route of an application has an access rule: #[IsGranted], access_control entries read with Symfony's request matchers, firewalls without security, and #[PublicRoute] or a route option for the routes public on purpose; with conflicts, unused entries, a base

  • PHP

    phil/route-access-check-bundle

    phil/route-access-check in Symfony: the console command phil:route-access:check over the router and the firewalls and access_control entries SecurityBundle builds, registered in the dev and test environments only, with detectors and formats of the application's own autoconfigured

  • PHP

    phil/safe-http

    Reading other sites safely: an HTTP client on Symfony HttpClient that refuses private networks, follows redirects it checks itself, and bounds the time, the size and the redirects of what it reads.

  • PHP

    phil/scheduled-transitions-bundle

    Transitions planned for a moment in a Symfony application — publish on, unpublish on —, applied by their handlers or by symfony/workflow, from Symfony Scheduler or a command, with retries

  • PHP

    phil/search-bundle

    Search for a Symfony application: resources turned into documents, indexed in a table of the database, in Meilisearch or in Loupe through phil/search-loupe, up to date at each Doctrine flush, searched with facet counts and synonyms per language, rebuilt, and filtered on a results page that works wit

  • PHP

    phil/search-loupe

    The Loupe adapter of phil/search-bundle: indexes in SQLite files, with typo tolerance and relevance, and no server to run. Loupe requires joomla/string, under GPL-2.0-or-later

  • PHP

    phil/search-synonyms

    Search synonyms per language: equivalent and one-way rules, validated, read and written in the Solr synonyms format or JSON, kept in files or the application's own store

  • PHP

    phil/settings-bundle

    Settings people change themselves, for Symfony: declared by packages and the application, read typed with their default, stored per person and key, a preferences centre and site settings in Twig forms with migrations and a preview before saving, and display preferences applied as data attributes on

  • PHP

    phil/sitemap

    Sitemaps as values: pages with their alternates and images, sections cut into files, and the XML of the sitemap protocol

  • PHP

    phil/sitemap-bundle

    phil/sitemap in Symfony: the sitemap option of routes, URL providers and a populate event, served as /sitemap.xml or dumped as files

  • PHP

    phil/slug

    Slugs as a value type, and sluggers that make them: transliterated to ASCII, cut at a word, named per use, and changed by decoration

  • PHP

    phil/slug-bundle

    phil/slug in Symfony: named sluggers from the configuration, each a service to decorate, autowired by name, the phil_slug filter in Twig, and an optional Doctrine history of former slugs

  • PHP

    phil/social-cards

    Share metadata as values: Open Graph, X and fediverse tags, 1200×630 share cards drawn from a declarative template, and the tags of linked pages read and checked

  • PHP

    phil/social-cards-bundle

    phil/social-cards in Symfony: social_meta() for each page, its share card drawn by a worker and served with a long cache, safe previews of linked and pasted links and a tag check command

  • PHP

    phil/spam-protection

    Spam signals without a captcha, in plain PHP: signed submission tokens, timing, a proof of work, content rules, and the inspection that collects their signals

  • PHP

    phil/spam-protection-bundle

    Spam protection for Symfony forms without captcha, third party or identifier: honeypot, signed single-use token, filling time, browser proof of work, text rules and rate limit, whose outcome is a phil/bot-detection-bundle verdict

  • PHP

    phil/standard-webhooks

    Standard Webhooks 1.0.0 in plain PHP: v1a (Ed25519) and v1 (HMAC-SHA256) signing and verification, the three headers, timestamp tolerance, key reload before rejection, the audience of an envelope, and the deduplication port

  • PHP

    phil/standard-webhooks-bundle

    Standard Webhooks for Symfony, on phil/standard-webhooks: configured signing and verification keys, the verified delivery as a controller argument, a signed sender over the HTTP client, processed ids in a Doctrine table, and a key generator

  • PHP

    phil/status-page-bundle

    A service status page for Symfony: components, incidents, planned maintenances and history, served as HTML, JSON and Atom without any script, the states read from phil/monitoring-bundle or declared, and a static snapshot pushed outside the monitored infrastructure by a console command or the Schedul

  • PHP

    phil/stockroom

    A props stockroom: nested containers, items counted or tracked one by one, a journal of every movement in, out, between containers, lost and back, per-event load lists deployed and checked at the return, and a read port of the stock

  • PHP

    phil/stockroom-bundle

    phil/stockroom in Symfony: the containers, items, balances, journal of movements and load lists in tables of a Doctrine DBAL connection that join the schema the ORM generates, a transaction that locks the items it moves, a console command for the schema, and the stockroom services configured

  • PHP

    phil/structured-data

    The schema.org graph of a page as values: immutable nodes with factories for the common types, stable @id, a @graph that merges the nodes of one @id and lifts nested ones, languages, validation of required and recommended properties, JSON-LD safe inside a script element, and a reader of the JSON-LD

  • PHP

    phil/structured-data-bundle

    phil/structured-data in Symfony: the schema.org graph of each request, fed by configuration, providers, an event, templates and other packages, the breadcrumb of a phil/menu-bundle menu, printed as one JSON-LD script element, never for a record withdrawn from search engines, and a command that check

  • PHP

    phil/svg-blocks

    The math, mermaid, chart and qrCode blocks of UJO documents drawn once, when they are saved, as SVG or MathML kept and signed with the block: QR codes, charts and formulas in PHP, diagrams through a Mermaid service whose answer is sanitized

  • PHP

    phil/svg-chart

    Charts in PHP, drawn as SVG: bars, lines, pies and doughnuts from the shape of a Chart.js configuration, round ticks, a legend, colours told apart by every colour vision, and a description that reads every value

  • PHP

    phil/svg-sanitizer

    SVG images written by people made safe to serve: XML read without network, document type or entities, elements and attributes rewritten from allow lists, no script, event handler, foreignObject or external reference, styles through phil/css-sanitizer, size and depth limits, safe inline by default, r

  • PHP

    phil/tax

    Multi-rate taxation on a shared base: rates in parts per million, each tax rounded half away from zero on its own line in integer arithmetic, itemised breakdowns that a credit note reverses exactly

  • PHP

    phil/taxonomy-bundle

    Tags and a translated tree of categories for any resource of a Symfony application: find or create, rename, move without cycles, merge, and their form types

  • PHP

    phil/tenancy-bundle

    Active tenant for multi-tenant Symfony applications: resolved from the tenants an account can reach or from the host, switched without a round trip to the identity provider, a fail-closed Doctrine filter, the tenant carried across Messenger, sessions, mail and cache pools, shops by domain, and Postg

  • PHP

    phil/tenancy-database-bundle

    A database for each tenant, or the shared one: the Doctrine connection follows the placement of the active tenant at each request, with migrations run per database at bounded concurrency, the database of a new tenant created, and a tenant moved from one database to another, verified and reversible

  • PHP

    phil/text-diff

    Differences between two texts: Myers' algorithm over words, lines, paragraphs or HTML that keeps its tags whole, and block by block over UJO documents, as HTML with ins and del or as a list of changes

  • PHP

    phil/text-diff-bundle

    phil/text-diff in Symfony: the differ with its bound of edits, the text_diff and text_diff_document Twig filters, a Stimulus comparison controller that switches between the inline, old and new views and steps from change to change, and a stylesheet

  • PHP

    phil/timed-text

    A shared timed-text library reading and writing WebVTT, SRT, chapters and Podcasting 2.0 transcripts for audio, video, podcast and transcription packages.

  • PHP

    phil/translation-bundle

    Translation by segments for Symfony: UJO documents cut into segments kept in Doctrine with their states, regional variants read through their parent, a translation memory and glossaries, quality checks, comments, machine translation behind a port, public credits, XLIFF and TBX exchange, and translat

  • PHP

    phil/translation-memory

    Translation by segments: UJO documents cut by block or sentence, segments with source fingerprints and states, regional variants that inherit from their parent language, a memory with exact and fuzzy matches, a glossary with inflected forms, quality checks of punctuation, tags, plurals and rendered

  • PHP

    phil/trash-bundle

    A trash for a Symfony application's resources: typed restoration by handler, a parent that is gone, retention and purge, and events for an audit trail

  • PHP

    phil/typography

    Microtypography for HTML and text in every language: quotes, dashes, ellipses, French spacing, units, legal signs, hyphenation by Liang's algorithm with the TeX patterns and patterns of our own, and Thai word breaks, on the HTML5 DOM

  • PHP

    phil/typography-bundle

    phil/typography in Symfony: one typographer per locale from configuration, the typography and typography_text Twig filters, and typographic fixes on the HTML that phil/ujo renders

  • PHP

    phil/ujo

    UJO (Universal JSON Output), a block document format, as immutable values: every official and community tool and the page and game block types validated, sanitized inline HTML, strict JSON, purified HTML rendering and plain text

  • PHP

    phil/ujo-bundle

    phil/ujo in Symfony: the Ujo service from configuration, the ujo_html and ujo_text Twig filters and functions, a form field holding UJO JSON, and the ValidUjo constraint

  • PHP

    phil/upload-scan

    Antivirus scanning of uploaded files behind a port: clean, infected with a signature, or not scanned with a reason; a clamd adapter that speaks the protocol itself over a Unix or TCP socket, in chunks, with a size limit and timeouts; null and EICAR fake scanners for tests; and a policy that rejects,

  • PHP

    phil/upload-scan-bundle

    phil/upload-scan in Symfony: the scanner and its policy from configuration, a #[CleanFile] constraint for uploads, infected files quarantined outside the web root, listed on an admin page and purged after their retention, rescans on a worker, and the uploads of phil/media-bundle and the health check

  • PHP

    phil/url

    Web addresses for PHP: absolute http and https addresses normalised, kinds of address as enums that each carry their rule, international kinds included, and the kind of an address detected among enum sets

  • PHP

    phil/url-bundle

    phil/url in Symfony: a form field that detects the kind of a web address among accepted enum sets, the constraint UrlOfType, the column type phil_url, and addresses in Twig

  • PHP

    phil/ux-bundle

    PHIL UX in a Symfony application: the PHIL UX form theme, applied to every form, and the stylesheet of phil/ux-css mapped in AssetMapper

  • CSS

    phil/ux-css

    phil-ux, the CSS framework of PHIL: real, mostly classless CSS with --phil-* tokens, light and dark, and isX/hasX state classes; with the OKLCH contrast rule its themes are checked against

  • PHP

    phil/ux-easyadmin-bundle

    PHIL UX in the EasyAdmin back-office: EasyAdmin's colours, corners and fonts taken from the tokens of phil/ux-css, light and dark, in EasyAdmin's cascade layers, linked on every page of every dashboard

  • PHP

    phil/ux-kit

    PHIL UX kit for the Symfony UX Toolkit: the same recipes as the Shadcn kit, styled with phil-ux, installed with ux:install --kit; with the Twig functions its image recipes call, image_origin(), image_sources(), image_filters(), picture_props() and image_json_ld()

  • Twig

    phil/ux-kit-shadcn

    Tailwind versions, in the style of the Shadcn kit of the Symfony UX Toolkit, of the extra PHIL UX recipes, under the same names and props, installed with ux:install --kit

  • PHP

    phil/websymfony

    A template to initialize an web application to use Symfony 7.0

  • PHP

    phil/well-known-bundle

    The /.well-known/ addresses of a Symfony site: security.txt, change-password, WebFinger, NodeInfo, did:web, DID configuration, AT Protocol handle, app links, and documents of other bundles

  • JavaScript

    phil/base-bundle

    HTML5 boilerplate in symfony2 with twig. Add security tools. Add Quality Tools.

    Abandoned! See phil/microsymfony

  • PHP

    phil/geolocation-bundle

    A Symfony2 Bundle to handle geographic location. Add geolocation to your entities. Add address entities. Add user geo location. Add doctrine functions for calculating geographical distances in your project.

    Abandoned!

  • PHP

    phil/guzzle-bundle

    Add a Symfony and PHP QueryAggregator to Guzzle

    Abandoned!