A new guild with a name that is easy to confuse
Cech Rzemieślników i Przedsiębiorców w Radomiu (the Guild of Craftsmen and Entrepreneurs in Radom) is a self-governing craft guild based in the House of Crafts on Kilińskiego Street. It brings together craftspeople, handles vocational apprenticeships and examinations, and operates within the structure of the regional Chamber of Crafts. We built the website from scratch, content included.
On top of that, Radom has a second guild with a very similar name, its own website and its own address. A craftsperson or employer looking for information about apprenticeships can easily mistake one for the other. So the site had to do more than inform: it had to answer one question without any doubt, am I in the right place.
Content built on facts, not generalities
An institution does not need marketing slogans. It needs answers to specific questions: how much an apprentice earns in the second year, how much funding an employer can get, how to register for the journeyman's examination, where the office is and in which room. That is why the content was written from sources, not from imagination.
- Statutory objectives quoted word for word from the KRS (the Polish National Court Register), not paraphrased
- Five launch news items based on the KRS entry and announcements from the Chamber of Crafts
- Apprentice pay rates for each year of training, plus reimbursement and funding for employers with current amounts for 2026
- A list of document templates linking to the Chamber's files, every link checked before launch
- The structure of craft self-government explained plainly: guild, chamber, national association
- Questions and answers on membership and apprenticeships, with the legal basis
The address, floor, room number, registration details, the Chamber's phone number and the board members appear in many places on the site: in the header, the footer, on the contact page and in the data for Google. All of them come from a single file. When it turned out during the work that the office room number was different from what the first materials said, a fix in one place changed it across the whole site and in the structured data at the same time.
The first version went in the bin
The first visual design took its colours from the House of Crafts building, with a serif typeface and a magazine-style layout. It was technically sound and did not pass review. The verdict: too template-like, not enough of the guild in it, and missing the green from the logo.
Instead of cosmetic fixes, we started from material that belongs to the client. The guild's designer sent us the logo as a vector file. From that file we took the colours, the green and the black of the outlines, and cut the cogwheel with the hammer and scales out of the logo to use as the site icon and favicon.
A palette taken from the building's facade
A serif typeface, a magazine-style layout
Icon tiles and cards with large numbers
Eyebrow headings, italics, numbered sections
Green and black taken straight from the logo
Barlow Condensed, close to the lettering in the logo, and Source Sans 3 for body text
A list of matters, an "In brief" box and an examinations table
Plain headings, no ornaments
Removing the typical patterns of templated design was not a matter of taste but a checkpoint. Gradients, rounded accent bars along edges, eyebrow headings, coloured italics, number strips and grids of icon cards were checked by searching the code, not just by eye.
How the work went
Establishing which guild it is
Verification in the KRS and a clear distinction from the guild with a similar name, which since 2024 has operated outside the Radom Chamber of Crafts. WordPress chosen because the office is to add news items itself
Content and structure
Home page, six topic pages, news and a privacy policy. Content based on the KRS, Chamber materials and current regulations on vocational apprenticeships
Version 1.0 on the staging server
A working site with a form, structured data and consent handling. Rejected in the design review
A new look built from the guild's logo
Colours, typefaces, icons, favicon and sharing image built from the designer's vector file. A simpler, more official layout
Move to the guild's domain
The guild's hosting, an SSL certificate, redirects to a single HTTPS address, an HSTS header and an office mailbox. Indexing switched on only after the guild confirmed the content
Two code reviews
One for security, one for standards compliance. Fixes to the site implemented before handover, minor remarks included
Lightweight, plugin-free, built to last
A website for an institution with no IT department has to run without supervision. Every plugin is one more thing to update and one more way for someone to break in. That is why the theme was written from scratch and does not use a single plugin: the form, consent handling, SEO, structured data, map and document list are all in the code.
No build step, no CSS framework, no JavaScript libraries. In a few years any WordPress developer will open this code and understand it without documentation. And the documentation exists anyway: an architecture overview, a guide for the office and a standards compliance report.
A map that does not track before consent
A Google map on a contact page is a typical data leak: embedded directly, it sets Google cookies before the visitor has accepted anything. Here the map loads only after a click, and until then it is accompanied by directions: where the building stands, how to recognise it and which floor the office is on.
Consent and measurement on a par with large websites
A small institution got the same consent model we use on our own website. Consent Mode v2 sets every category to denied as the very first script on the page, before any tag loads. The visitor's saved choice is restored immediately on every subsequent page.
- Seven consent signals in three categories: necessary, statistics and marketing
- A "Necessary only" button on equal footing with acceptance, settings available from every page in the footer
- Support for either the Google tag or a GTM container; if both are entered, only the container loads, so statistics are not counted twice
- Events ready for measurement: clicks on the phone number, email, social media, buttons and form submission
- A form enquiry counted only after a genuine submission, not when a bot falls into the trap
A form that keeps out spam and clutter
The contact request form has two fields: email and phone, both required. That is enough for the office to call back, and nothing beyond what needs to be processed.
- Server-side validation: address format, length, 9 to 15 digits in the phone number
- A limit of five submissions and twenty failed attempts per hour from a single address, counted on a hash of the address without storing it in the database
- A honeypot field for bots and a one-time security token; an invalid token leaves no trace in the database
- A reply from the office mailbox goes straight to the sender
Two code reviews, one focused on security and one on standards, pointed out among other things that invalid submissions could write state to the database beyond the limit, that the contrast of form field outlines was too low for people with low vision, and that further news pages lacked a correct canonical URL. All remarks concerning the site were implemented before handover, and the form field outline contrast is now 4.9 to 1.
Security and search visibility
Security headers including a content security policy, enforced HTTPS with HSTS, a blocked XML-RPC interface and public files that would reveal the WordPress version, hidden pages and the author sitemap. A security.txt file tells security researchers where to report a problem.
For search engines the guild is described as an organisation and a local institution: with its address, coordinates, KRS, NIP and REGON numbers (the Polish court register, tax and statistical identifiers) and its membership of the Chamber of Crafts. On top of that come breadcrumbs, news items marked up as news articles and FAQ sections. The address data is identical everywhere because it comes from a single file, which is the foundation of local SEO.
- AI assistants that cite pages live are allowed in, crawlers that harvest content in bulk are blocked
- Other model-training crawlers deliberately allowed: the content is informational and the guild cares about reach
- An
llms.txtfile describing the site for language models, a manifest and a full set of icons - Photos of the House of Crafts from Wikimedia Commons under free licences, each with the required author credit
Technologies
PHP
Custom classic theme
CSS without a framework
Dependency-free JavaScript
Consent Mode v2
Google Tag Manager / gtag.js
Schema.org JSON-LD
Content Security Policy
axe-core
Lighthouse
WP-CLI
Results
What this project teaches
A small website is no excuse for a lower standard. The guild got exactly what we deliver on larger projects: GDPR-compliant consent, two code reviews, accessibility and layout testing, documentation and a user guide. The difference was in scale, not in care. We did the project pro bono, as support for the local crafts community, and that is exactly why nothing was cut short.
The second lesson concerns the look. The version that "looked nice" lost to the version built from the client's own material. The guild's logo said more about its identity than any palette invented from scratch, and a simple, official layout proved better for an institution people visit for specific information.