{"id":383311,"date":"2026-10-11T15:24:18","date_gmt":"2026-10-11T15:24:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mesura-lite-joinery-configurator-for-woocommerce\/"},"modified":"2026-10-11T15:23:59","modified_gmt":"2026-10-11T15:23:59","slug":"ahime-joinery-configurator","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ahime-joinery-configurator\/","author":23582520,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.5.0","stable_tag":"0.5.0","tested":"7.1.3","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Ahime Joinery Configurator for WooCommerce","header_author":"Ahime","header_description":"Let customers configure windows, doors, shutters and blinds in 2D and 3D, with a price calculated to the cent and checked again by your store before the order is written.","assets_banners_color":"192b3b","last_updated":"2026-10-11 15:23:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/nahim-salami\/ahime-joinery-configurator","header_author_uri":"https:\/\/www.ahime.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"ahime","date":"2026-10-11 15:23:59","revision":3739683}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3739683,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3739683,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3739683,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3739683,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3739683,"resolution":"1","location":"assets","locale":"","width":1440,"height":1300}},"screenshots":{"1":"A two-leaf window configured with its dimensions, range, glazing and price."}},"plugin_section":[],"plugin_tags":[783,285844,39420,2471,286],"plugin_category":[45],"plugin_contributors":[285845],"plugin_business_model":[],"class_list":["post-383311","plugin","type-plugin","status-publish","hentry","plugin_tags-3d","plugin_tags-doors","plugin_tags-product-configurator","plugin_tags-windows","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-ahime","plugin_committers-ahime"],"banners":{"banner":"https:\/\/ps.w.org\/ahime-joinery-configurator\/assets\/banner-772x250.png?rev=3739683","banner_2x":"https:\/\/ps.w.org\/ahime-joinery-configurator\/assets\/banner-1544x500.png?rev=3739683","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ahime-joinery-configurator\/assets\/icon-128x128.png?rev=3739683","icon_2x":"https:\/\/ps.w.org\/ahime-joinery-configurator\/assets\/icon-256x256.png?rev=3739683","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ahime-joinery-configurator\/assets\/screenshot-1.png?rev=3739683","caption":"A two-leaf window configured with its dimensions, range, glazing and price."}],"raw_content":"<!--section=description-->\n<p>Ahime Joinery Configurator adds a joinery configurator to your WooCommerce store. Your customers compose the product themselves and see the price as they go; your store checks the configuration and recalculates the price before writing the order, so the price shown is the price paid.<\/p>\n\n<h4>What customers can configure<\/h4>\n\n<ul>\n<li>Windows, French windows, sliding doors, entrance doors and roof windows.<\/li>\n<li>Roller shutters, hinged shutters, garage doors, awnings, insect screens, interior blinds, external venetian blinds and zip screens.<\/li>\n<li>Dimensions to the millimetre, shapes, number of leaves, opening types, materials, ranges, glazing, colours and fitting.<\/li>\n<li>2D drawing with dimensions, facade view and 3D view, on desktop and mobile.<\/li>\n<\/ul>\n\n<h4>For the merchant<\/h4>\n\n<ul>\n<li>Prices calculated to the cent from the built-in reference catalogue, by your own store, without any connection to an external service.<\/li>\n<li>The configuration sent by the browser is checked field by field against an allowlist, then against the catalogue; combinations that cannot be manufactured, and values the catalogue does not know, are refused before the cart.<\/li>\n<li>WooCommerce cart and orders, with the configuration attached to each order line.<\/li>\n<li>Compatible with WooCommerce order storage (HPOS).<\/li>\n<\/ul>\n\n<h4>Full version<\/h4>\n\n<p>This plugin uses the built-in reference catalogue. The full version from Ahime sells at your own prices and adds workshop tools (site survey on each order, production file), updates and support. More at https:\/\/ahime.net<\/p>\n\n<h4>Source code<\/h4>\n\n<p>The configurator is written in TypeScript and React. This plugin ships a readable, unminified build of it in the <code>assets<\/code> folder. The human-readable source code of that build, the build configuration and the build instructions are public:<\/p>\n\n<p>https:\/\/github.com\/nahim-salami\/ahime-joinery-configurator<\/p>\n\n<p>To rebuild the JavaScript from that repository: <code>npm ci<\/code>, then <code>npm run build<\/code> (Node.js 20 or later). The files are written to <code>ahime-joinery-configurator\/assets\/<\/code>.<\/p>\n\n<h4>Third-party libraries<\/h4>\n\n<p>The JavaScript build bundles the following libraries, each under the MIT license, unmodified:<\/p>\n\n<ul>\n<li>React 18.3.1 and React DOM 18.3.1, with Scheduler 0.23.2: https:\/\/github.com\/facebook\/react<\/li>\n<li>three.js 0.185.1 (r185): https:\/\/github.com\/mrdoob\/three.js<\/li>\n<\/ul>\n\n<p>They are bundled from their published npm packages, in their own production builds.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install Ahime Joinery Configurator from Plugins &gt; Add New, or upload the ZIP file, then activate it.<\/li>\n<li>Create a WooCommerce product (for example \"Custom window\") and note its ID.<\/li>\n<li>Add the shortcode to a page: <code>[ahjc_configurator famille=\"fenetre\" produit=\"123\"]<\/code> (replace 123 with the product ID).<\/li>\n<\/ol>\n\n<p>Families for the <code>famille<\/code> attribute: fenetre (window), porte-fenetre (French window), coulissant (sliding door), porte-entree (entrance door), fenetre-toit (roof window), volet-roulant (roller shutter), volet-battant (hinged shutter), porte-garage (garage door), store-banne (awning), moustiquaire (insect screen), store-interieur (interior blind), bso (external venetian blind), screen-zip (zip screen).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20configurator%20call%20an%20external%20service%3F\"><h3>Does the configurator call an external service?<\/h3><\/dt>\n<dd><p>No. Prices and drawings are calculated in the customer's browser and checked again by your store. The plugin makes no network request.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20prices%3F\"><h3>Can I use my own prices?<\/h3><\/dt>\n<dd><p>This plugin uses the built-in reference catalogue. Selling at your own prices is part of the full version from Ahime.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20code%20of%20the%20javascript%3F\"><h3>Where is the source code of the JavaScript?<\/h3><\/dt>\n<dd><p>At https:\/\/github.com\/nahim-salami\/ahime-joinery-configurator, with the build tools and instructions. See the Source code section above.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>New name and slug: Ahime Joinery Configurator for WooCommerce (ahime-joinery-configurator).<\/li>\n<li>The plugin now only contains the windows, doors, shutters and blinds configurator.<\/li>\n<li>Cart: the posted configuration is filtered against an allowlist generated from the configuration type (known keys, types, allowed values, bounds); invalid configurations are refused with a notice.<\/li>\n<li>Pricing: a colour, glazing, door infill or other value unknown to the catalogue is refused by the server instead of being priced with a zero coefficient. A cart line that can no longer be priced is removed.<\/li>\n<li>All PHP identifiers, hooks, handles, meta keys and the shortcode use the ahjc prefix. The shortcode is now [ahjc_configurator].<\/li>\n<li>A single admin notice remains (unreadable catalogue), on the product edit screen only.<\/li>\n<li>Public source code and build instructions.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Every PHP file refuses direct access; exception messages are escaped.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>First version submitted to WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"Customers configure windows, doors, shutters and blinds in 2D and 3D, priced to the cent from a built-in reference catalogue.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/383311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=383311"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ahime"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=383311"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=383311"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=383311"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=383311"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=383311"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=383311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}