Select one or more tags, then press “Search Plugins”

Find Plugin with any / all of the selected criteria
Search Plugin

Sóc De Poble. Portal De Pobles Connectats Wordpress Plugin - Rating, Reviews, Demo & Download

Sóc De Poble Wordpress Plugin - Rating, Reviews, Demo & Download
No ratings yet
Free
Follow for free plugins, new theme releases and theme news

Plugin Description

Sóc de Poble is an open source civic network for rural communities: chat, posts, a marketplace, events and a map. It continues decades of rural activism and connects neighbours, associations and local businesses, with community ownership and independence from advertising platforms as its guiding principles.

The Enxufe architecture

The application is a modular single-page client, separated from its data provider. This plugin places the <soc-de-poble> web component on pages containing the [socdepoble_app] shortcode or the Sóc de Poble block. The plugin provides the WordPress adapter; the application contains the community features.

The current service uses a Supabase backend. The provider interfaces are designed for interchangeable backends, including future WordPress, Joomla or other host adapters. This does not mean those alternative backends are already implemented.

Independent communities and the Fediverse

The project aims to let independent rural communities run their own systems and communicate through the Fediverse. Federation is a roadmap goal, not a feature enabled by installing this plugin.

Documentation and resilience

The project is developed with AI assistance and is designed to remain understandable and maintainable by people. The application includes the public part of the project Wiki and design documentation. Private working documents and personal data are excluded by the publication policy.

Features

  • The [socdepoble_app] shortcode accepts nom_poble (display name), poble (village identifier) and ruta_inicial (initial application route).
  • A dynamic Sóc de Poble block provides the same three options.
  • Settings Sóc de Poble provides the host identity, package diagnostics (version, integrity and pinned data node) and embedding instructions.
  • Site Health checks report a missing application script or manifest, or a package targeting a development backend.
  • The application script loads only on pages that use it. Subresource Integrity is optional through socdepoble_enxufe_integritat; CDN plugins that rewrite output can otherwise prevent the script from loading.
  • An optional full-screen page template supports classic and block themes.
  • The socdepoble_enxufe_config filter sets the default display name and village identifier.
  • Shareable addresses: the application writes its current route to the page address as #sdp=/route (for example #sdp=/xat), so a copied or reloaded address opens the same view. The socdepoble_enxufe_ruta_a_url filter selects fragment (default) or parametre; any other value turns the feature off. Portable embedding code for other hosts does not include it.
  • Application language: by default the application opens in Valencian and the WordPress locale does not change it; visitors can choose another language inside the application. The socdepoble_enxufe_idioma filter can set the starting language of this site’s instance to one of the exact codes ca, es, en, eu or gl; any other value is ignored, and a visitor’s own choice still wins. Portable embedding code for other hosts does not include it.
  • Page translation without Google: the Translate button sends the page’s text through this server to Apertium (free software, no key) for Spanish, English, French and Galician. German and Basque need a configured service; an optional DeepL key replaces all of them.
  • Translation-ready (text domain socdepoble): translations for the plugin and the block editor come from translate.wordpress.org.

External services

This plugin connects to the Sóc de Poble service. Accounts, messages and posts are stored in its backend, not in the WordPress database. The application uses the following services when a visitor opens an embedded application and uses the relevant features:

  1. Sóc de Poble backend, currently hosted on Supabase: required for the connected service. It handles sign-in, profiles, messages, posts, marketplace listings, events and real-time updates. Google sign-in returns directly to the page that hosts the application. Terms and privacy information: https://socdepoble.org. Supabase terms: https://supabase.com/terms ; privacy: https://supabase.com/privacy
  2. Google Sign-In: used only when chosen by the visitor. Terms: https://policies.google.com/terms ; privacy: https://policies.google.com/privacy
  3. OpenStreetMap: used for the map view. Terms: https://wiki.osmfoundation.org/wiki/Terms_of_Use ; privacy: https://osmfoundation.org/wiki/Privacy_Policy
  4. Profile images from sign-in providers may load from lh3.googleusercontent.com, platform-lookaside.fbsbx.com, graph.facebook.com or avatars.githubusercontent.com. One design catalogue page embeds a YouTube video (youtube-nocookie.com). Terms: https://www.youtube.com/t/terms
  5. Translation, only when a visitor presses Translate: the page’s text or HTML is sent from WordPress to Apertium (beta.apertium.org, or apertium.org when it fails; Galician only beta.apertium.org) for Spanish, English, French and Galician, and for German and Basque to the LibreTranslate-compatible service set in SDP_TRADUCCIO_URL, if any. With a DeepL key, every language goes to api-free.deepl.com or api.deepl.com instead. Configuration, retention, terms and privacy are described below.
  6. Wikimedia (Wikipedia, Wikidata and Wikimedia Commons): only on a village page with missing details, when the visitor presses the button to bring them from Wikipedia. The visitor’s browser then sends the village name, IP address, browser user agent and language to ca.wikipedia.org, www.wikidata.org and commons.wikimedia.org, without cookies or the page address, and loads photos from upload.wikimedia.org or thumb.wikimedia.org. Terms: https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use ; privacy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy

  7. Sóc de Poble media server: the service’s content images (the village archive and community photos and illustrations: uploads, towns, fotos, events, ui, nano_cards, img, notes) are not bundled. The visitor’s browser loads each one from https://socdepoble.org/assets/ when a page shows it; like any image request, this sends the visitor’s IP address, browser user agent and the address of the page. Terms and privacy information: https://socdepoble.org/legal

Link previews per route

Off by default, and not available yet: current packages do not include the route table dist/seo-routes.json, so the filters described here have no effect. Once a package includes that table, when the socdepoble_enxufe_seo filter returns true and socdepoble_enxufe_ruta_a_url returns parametre, a request with ?sdp=/route gets that route’s Open Graph tags from the table only; nothing from the request is printed. The page cache must not ignore or strip the sdp query parameter.

Translation service

Without configuration, Spanish (ES), English (EN-GB), French (FR) and Galician (GL) use the public Apertium service, free software from the Apertium project, with no key: one request per uncached text, with an explicit format (txt or html), to https://beta.apertium.org/apy/translate and, after a transport error or a 5xx response, to https://apertium.org/apy/translate (same project). Galician uses only the beta endpoint: the main one has no Catalan to Galician pair. The constant SDP_TRADUCCIO_APERTIUM_URL replaces these endpoints. Apertium has no Catalan to German or Basque pair: German (DE) and Basque (EU) use the LibreTranslate-compatible endpoint in the constant SDP_TRADUCCIO_URL, with the destination’s language code and an optional key in SDP_TRADUCCIO_URL_CLAU; without it, these requests return 503 and the application says that translation is not available. Endpoint constants must be https URLs without credentials; other values are ignored. Each call to these services times out after 12 seconds, and a request stops calling them after 30 seconds; translations already received stay cached.

Optional DeepL: set DEEPL_API_KEY in the PHP process environment or as a constant in wp-config.php, and DeepL translates every language, Galician and Basque included. The plugin does not load the source repository’s .env file or expose keys in JavaScript. Free API keys ending in :fx use api-free.deepl.com; other keys use api.deepl.com. No SDK is required.

POST /wp-json/socdepoble/v1/traduir accepts JSON such as {“textos”:[“Bon dia”],”desti”:”ES”,”origen”:”CA”,”format”:”text”}. Supported destinations are ES, EN-GB, FR, DE, GL and EU. The format may be text or html; renderers must sanitize translated HTML. Each batch accepts up to 50 strings, 5000 Unicode characters and 20000 text bytes; the whole JSON request body is limited to 32768 bytes. The response is {“traduccions”:[“…”],”origen”:”CA”,”desti”:”ES”,”cache”:false}. The plugin’s own instances receive this same-origin service in the traductor-url attribute. Cookies and a WordPress login are not required. Portable embedding code omits this local service URL.

Public usage is limited to 30 uncached requests per 10 minutes per REMOTE_ADDR, 10000 characters per UTC day and 100000 per UTC month per WordPress site. Forwarded address headers are not trusted. Integer constants SDP_TRADUCCIO_LIMIT_DIARI and SDP_TRADUCCIO_LIMIT_MENSUAL override the character budgets; zero disables new upstream requests. Budgets are reserved atomically before sending and survive transient eviction. Failed requests still consume the local reservation because a timed-out request may have been billed. These local limits apply to every provider and also protect the public Apertium service; they are not a reading of a DeepL account balance. Each multisite site has its own limit, so configure account limits at DeepL as well.

Overlapping cache misses return 503 (busy); independent texts may proceed concurrently. A short global lock protects only budget reservation. Provider errors 403/429/456 trigger a 60-second pause, with no automatic retries; a timeout or transport failure does not, so the next request tries again. Repeated or overlapping batches reuse individual translations for seven days, separated by provider, language, format and DeepL key. WordPress may evict transients earlier.

An explicit translation request sends the selected text from WordPress to the provider over HTTPS, identified as SocDePoble-Translation. The plugin does not log original text, keys or service URLs, or place them in cache keys. Transients contain translated text for seven days and hashed client counters for ten minutes. Translations can contain the same personal data as the original text. Expired transients may remain in the database until WordPress cleans them up. Uninstallation removes database budgets, locks and transients; external object-cache entries normally expire within seven days. Apertium project and service information: https://www.apertium.org/ . For the service in SDP_TRADUCCIO_URL, its operator’s terms apply. DeepL terms: https://www.deepl.com/pro-license ; privacy: https://www.deepl.com/privacy

The service uses REMOTE_ADDR. Behind a reverse proxy, visitors may share a rate limit; configure trusted proxy address handling at the web server rather than trusting arbitrary forwarded headers. Keep the WordPress home and site URLs aligned with the public origin.

Translation limits must be integer constants, without quotes. Requests without an Origin header are permitted for non-browser clients; JSON and budget checks still apply. Visitors can exhaust the public daily budget: Origin is not authentication. WordPress HTTP hooks and other installed plugins are trusted server code and can observe outgoing requests.

Privacy

The plugin adds no analytics of its own. When embedded, the application does not send visit statistics to Sóc de Poble. If the host already loads Umami as window.umami, the application forwards its events to that host’s Umami instance.

Shareable addresses place the application route, including any search text or item identifier, in the page address, the browser history and copied links. In the default fragment mode the route stays in the browser and is not sent to the web server. The parametre mode sends it to the server as a query parameter, where it can appear in server logs and caches.

Source code and build

The file dist/soc-de-poble.standalone.js is compiled and minified; in the standalone package it is a small loader for the compiled and minified JavaScript modules in dist/trossos/. Human-readable source and build tools are public at https://github.com/socdepoble/socdepoble.org: the application is in src/, the build configuration in vite.standalone.config.js and this adapter in wordpress-plugin/. Each build writes dist/sdp-release.json with the version, bundle SHA-256 and integrity, and its pinned data node, and dist/sdp-inventari.json with the SHA-256 of every file, so a host can verify what it serves.

To build locally, run npm ci, npm run build:wp (standalone, dist/) and npm run build:wp:directori (WordPress, builds/directori/dist/). For a release, set SDP_RELEASE=1 and use the same SDP_VERSIO and public configuration for both commands. The packager verifies both inventories and their dependencies before creating packages.

The directory variant requires WordPress 6.6 or later and loads core React, ReactDOM and the JSX runtime through the react, react-dom and react-jsx-runtime handles. The standalone package includes its own React for Sollutia, other hosts and the project’s distribution channel. Both use the same embedding contract, with different bundle hashes.

Typography: the Noto Sans font files in dist/fonts/ are used under the SIL Open Font License 1.1 (dist/fonts/OFL.txt).

Screenshots

No screenshots provided


Reviews & Comments