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/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/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!
-