Fattoruso Ingegneria — Business Website
Bilingual (IT/EN) business website for an engineering consultancy. Built with Astro 4 + Sveltia CMS, i18n routing, and a CMS non-technical staff can actually use.
Context
Fattoruso Ingegneria is a civil and structural engineering consultancy that needed a professional web presence — bilingual (Italian and English), easy for non-technical staff to maintain, and deployable without ongoing hosting costs.
The site needed to do several things well: present services and completed projects with rich media, publish news articles, and let the firm’s principals manage content themselves without touching code or depending on a developer for day-to-day updates.
Architecture
The site is a fully static Astro 4 build deployed to GitHub Pages via GitHub Actions. Sveltia CMS runs client-side from /admin/, authenticated via GitHub OAuth, and commits content changes directly to the repository — triggering an automatic rebuild on every save.
i18n routing is handled by Astro’s native i18n integration with prefixDefaultLocale: true. Both /it/ and /en/ routes are built statically. Content collections have bilingual fields (titleIt / titleEn, descriptionIt / descriptionEn, bodyEn) — the CMS exposes both in a single edit form. Italian is the default locale; English content is secondary.
Content collections:
solutions— service offerings with icon, description, and markdown bodyprojects— portfolio entries with gallery, category, location, role, and status fields in both languagesnews— articles with date, image, and bilingual bodysite-settings— CV upload, contact info, theme, analytics token, language mode toggle
Image handling goes through Cloudinary. The CMS uses the Cloudinary media library widget for uploads; frontmatter stores full Cloudinary URLs; an ImageOptimizer component handles responsive transforms at build time.
Key Decisions
Astro over WordPress: The firm’s previous site was WordPress — slow, required plugin maintenance, and had a hosting bill. Astro produces a static site: zero server, CDN-delivered, free on GitHub Pages. The CMS UX is simpler than WordPress for the operations they actually do (add a project, publish news).
Sveltia CMS over Decap/Netlify CMS: Sveltia has a substantially better editor UX than Decap CMS (the renamed Netlify CMS fork), particularly for media management. It also works identically on GitHub Pages without requiring a Netlify backend.
Bilingual fields in a single collection over separate locale collections: Separate IT and EN collections would require editors to open two entries to update one article. A single collection with titleIt/titleEn fields means one edit form, one save, one commit. The English content is optional — fields default to empty strings so the site degrades gracefully when English copy hasn’t been written yet.
GitHub Pages over Cloudflare Pages: The firm’s GitHub organization was already the source of truth for version control. Deploying from the same repository to GitHub Pages via Actions required zero additional service accounts.
Outcome
Non-technical staff can publish news, add projects with photo galleries, and update service descriptions entirely through the CMS — no developer involvement needed for routine content work. The site loads faster than its WordPress predecessor and costs nothing to host.
Next project
Prusa Monitoring →