{"id":373852,"date":"2026-10-20T03:00:22","date_gmt":"2026-10-20T03:00:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/teriya-suivi-projet-client\/"},"modified":"2026-10-20T03:49:06","modified_gmt":"2026-10-20T03:49:06","slug":"teriya-suivi-projet-client","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/teriya-suivi-projet-client\/","author":23571644,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.6","stable_tag":"1.0.6","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Teriya \u2014 Suivi Projet Client","header_author":"Ramata Sissoko","header_description":"Un espace client priv\u00e9 o\u00f9 chacun suit l'avancement de son projet, retrouve ses documents et ses vid\u00e9os, \u00e9change avec vous et remplit son brief. S'ajoute \u00e0 \u00ab Mon compte \u00bb de WooCommerce.","assets_banners_color":"f8f5ee","last_updated":"2026-10-20 03:49:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/teriyaweb.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":66,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"ramatasissoko","date":"2026-10-20 03:00:01","revision":3755834},"1.0.6":{"tag":"1.0.6","author":"ramatasissoko","date":"2026-10-20 03:49:06","revision":3755862}},"upgrade_notice":{"1.0.6":"<p>Files you share now show their real name to your client instead of a random one. Nothing else changes.<\/p>","1.0.5":"<p>The plugin no longer contacts any external server and is far lighter. Your projects and documents are untouched.<\/p>","1.0.4":"<p>Client documents are now stored outside the web root. If your host does not allow it, upload is disabled and the plugin tells you.<\/p>","1.0.3":"<p>Internal clean-up only. No change to how the plugin works.<\/p>","1.0.2":"<p>Internal renaming only. No change to how the plugin works.<\/p>","1.0.1":"<p>The project limit is gone. Follow as many clients as you want.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3755862,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3755862,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3755862,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3755862,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3755862,"resolution":"1","location":"assets","locale":"","width":1280,"height":1893},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3755862,"resolution":"2","location":"assets","locale":"","width":1280,"height":2013},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3755862,"resolution":"3","location":"assets","locale":"","width":1280,"height":2529},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3755862,"resolution":"4","location":"assets","locale":"","width":1280,"height":1597},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3755862,"resolution":"5","location":"assets","locale":"","width":858,"height":920}},"screenshots":{"1":"The client area: where the project stands, and the documents shared with the client","2":"Videos and the message thread, inside the WooCommerce account","3":"The brief, filled in by the client, with private file upload","4":"The project screen on the admin side, including the brief the client sent","5":"Settings: colours, wording, and the steps of your own method"}},"plugin_section":[],"plugin_tags":[17989,7142,21918,10301,286],"plugin_category":[45],"plugin_contributors":[287616],"plugin_business_model":[],"class_list":["post-373852","plugin","type-plugin","status-publish","hentry","plugin_tags-client-portal","plugin_tags-freelance","plugin_tags-my-account","plugin_tags-project","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-ramatasissoko","plugin_committers-ramatasissoko"],"banners":{"banner":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/banner-772x250.png?rev=3755862","banner_2x":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/banner-1544x500.png?rev=3755862","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/icon-128x128.png?rev=3755862","icon_2x":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/icon-256x256.png?rev=3755862","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/screenshot-1.png?rev=3755862","caption":"The client area: where the project stands, and the documents shared with the client"},{"src":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/screenshot-2.png?rev=3755862","caption":"Videos and the message thread, inside the WooCommerce account"},{"src":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/screenshot-3.png?rev=3755862","caption":"The brief, filled in by the client, with private file upload"},{"src":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/screenshot-4.png?rev=3755862","caption":"The project screen on the admin side, including the brief the client sent"},{"src":"https:\/\/ps.w.org\/teriya-suivi-projet-client\/assets\/screenshot-5.png?rev=3755862","caption":"Settings: colours, wording, and the steps of your own method"}],"raw_content":"<!--section=description-->\n<p>\"How is my website coming along?\"<\/p>\n\n<p>If you build websites for other people, you know that question. It arrives by text message, by email, sometimes on a Sunday evening. And every time, you stop what you are doing to answer it.<\/p>\n\n<p>This plugin answers for you.<\/p>\n\n<p>It adds a tab to the WooCommerce \"My account\" page. Your client logs in and sees, privately:<\/p>\n\n<ul>\n<li><strong>Their project progress<\/strong>, step by step, with the current step highlighted<\/li>\n<li><strong>Their documents<\/strong>, downloadable by them alone<\/li>\n<li><strong>Their videos<\/strong> \u2014 Loom, YouTube, Vimeo<\/li>\n<li><strong>Their messages<\/strong> with you, in the same place as everything else<\/li>\n<li><strong>Their brief<\/strong>: they describe their business, choose their pages, upload their logo and photos<\/li>\n<\/ul>\n\n<p>You receive the brief by email as soon as it is submitted, and you can read it again from the project screen.<\/p>\n\n<p>Note: the plugin interface is currently in French. Every string is translation ready.<\/p>\n\n<h4>What it changes day to day<\/h4>\n\n<p>Your clients stop asking. Your content arrives without chasing. And you look like a studio rather than someone improvising.<\/p>\n\n<h4>Built for freelancers<\/h4>\n\n<p>No account to create somewhere else, no external service holding your clients' files. Everything stays on your own site.<\/p>\n\n<h4>Client documents stay private<\/h4>\n\n<p>Client documents never go into the media library and never have a public URL.<\/p>\n\n<p>They are stored <strong>outside the web root<\/strong>, in a folder the plugin creates above your WordPress installation. No web server can serve a file from there, whatever its configuration. The plugin verifies this: the folder must sit outside the WordPress directory and outside the server's document root, and the check is repeated before every upload.<\/p>\n\n<p>Every download goes through PHP. The plugin checks that the logged-in person is the client attached to that project, or an administrator, before a single byte is sent. Files are always served as a download, never rendered in the browser, and they are given random names.<\/p>\n\n<p><strong>If your host does not allow writing above the WordPress installation, document upload is disabled.<\/strong> The plugin says so plainly in the admin and on the client's brief, and refuses to store anything. It will never fall back to a folder inside the public directory, because that protection cannot be guaranteed on every server. To enable uploads, ask your host for a writable folder above your WordPress installation.<\/p>\n\n<h4>It follows your theme<\/h4>\n\n<p>The plugin imposes neither fonts nor layout: it inherits from your theme. Tested on Astra, GeneratePress, Kadence, OceanWP, Neve, Blocksy, Hello Elementor, Storefront and the default WordPress themes, including in a narrow column.<\/p>\n\n<h4>Fully configurable<\/h4>\n\n<p>The tab name, six colours, the fourteen texts shown to the client, the steps of your own method and the pages offered in the brief are all set from the admin. No code to touch.<\/p>\n\n<h4>Free, with nothing held back<\/h4>\n\n<p>Every feature described above is included, for as many client projects as you want. No project limit, no time limit, no locked buttons.<\/p>\n\n<h4>No external service<\/h4>\n\n<p>This plugin contacts no outside server, at activation or at any other time. It bundles no third-party library, embeds no tracking, and adds no style or script to the WordPress admin screens. Its only stylesheet loads on the WooCommerce \"My account\" page, and nowhere else.<\/p>\n\n<p>Everything your clients send you stays on your own site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>WooCommerce must be active<\/li>\n<li>Go to <strong>Projets clients \u2192 R\u00e9glages<\/strong> for your colours, your texts and your steps<\/li>\n<li>Create a project, link it to a client: they see it in their account straight away<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20many%20client%20projects%20can%20i%20follow%3F\"><h3>How many client projects can I follow?<\/h3><\/dt>\n<dd><p>As many as you like. There is no limit.<\/p><\/dd>\n<dt id=\"is%20woocommerce%20required%3F\"><h3>Is WooCommerce required?<\/h3><\/dt>\n<dd><p>Yes. The client area is added to the WooCommerce \"My account\" page.<\/p><\/dd>\n<dt id=\"can%20my%20clients%20see%20each%20other%27s%20projects%3F\"><h3>Can my clients see each other's projects?<\/h3><\/dt>\n<dd><p>No. Each project is linked to one account, and the check is made twice: when displaying and when downloading.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20my%20theme%3F\"><h3>Does the plugin work with my theme?<\/h3><\/dt>\n<dd><p>It appears inside the WooCommerce \"My account\" area, which any WooCommerce compatible theme knows how to display. It inherits your fonts and colours instead of imposing its own.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%3F\"><h3>What happens to my data if I uninstall?<\/h3><\/dt>\n<dd><p>Projects, documents and briefs are kept. Only the plugin settings are removed.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20anything%20outside%20my%20site%3F\"><h3>Does the plugin send anything outside my site?<\/h3><\/dt>\n<dd><p>No. It contacts no external server, bundles no third-party library and collects nothing.<\/p><\/dd>\n<dt id=\"which%20languages%20are%20available%3F\"><h3>Which languages are available?<\/h3><\/dt>\n<dd><p>The interface is in French for now. Every string is prepared for translation, so other languages can be added.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Shared files now keep their original name in the client area. Until now the client saw the random name used to store the file on disk, which told them nothing. The file on disk keeps that random name, which is what protects it; only the label shown changed.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed a fatal error that broke the client brief whenever a file was attached: wp_handle_upload() takes its first argument by reference and was being given a literal array, which PHP 8 rejects.<\/li>\n<li>Brief attachments now also get random names and are stored outside the web root, like project documents.<\/li>\n<li>Removed the bundled Freemius SDK. The plugin is entirely free, nothing was gated behind a licence, and the SDK was contacting external servers on load and adding its styles to every admin screen. The plugin now ships as a 27 KB archive instead of 4 MB, and contacts nothing.<\/li>\n<li>Settings cleanup on uninstall now uses a standard uninstall.php.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Private client documents are now stored outside the web root, which is verified before every upload. If no such location is available, document upload is disabled and the plugin explains why, rather than relying on protection it cannot guarantee.<\/li>\n<li>Uploaded documents are given random names and no longer expose a public URL.<\/li>\n<li>Removing a document now verifies that the attachment belongs to that project, that it is a plugin document, and that the user is allowed to delete it.<\/li>\n<li>Documented where the source of the bundled Freemius SDK files can be obtained.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Removed an unused core file include.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>All function, class, constant, option, meta, post type and handle names are now prefixed with \"teriyaspc\" to avoid collisions with other plugins.<\/li>\n<li>Removed the duplicate plugin URI header.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>The plugin is now entirely free and unlimited: the project limit has been removed.<\/li>\n<li>Coding standards, input handling and readme prepared for the WordPress.org directory.<\/li>\n<li>WooCommerce is now declared as a required plugin.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"A private area inside WooCommerce \"My account\" where each client follows their project, finds their files and fills in their brief.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373852","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=373852"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ramatasissoko"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373852"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373852"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373852"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373852"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373852"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}