Website for Laguntza Fisioterapia, a physiotherapy and osteopathy clinic in Urnieta, Gipuzkoa. The project uses Astro, TypeScript, multilingual routing, structured data, Cloudinary images, Leaflet maps, and Docker-based deployment.
Use this repository as a working example for:
- Astro clinic website development
- multilingual Astro sites in Basque and Spanish
- SEO for healthcare, physiotherapy, and local business websites
- static site deployment with Docker, Nginx, and GitHub Actions
- small business websites with contact forms, maps, and schema markup
- Features
- Tech Stack
- Requirements
- Local Development
- Project Structure
- Configuration
- SEO Notes
- Deployment
- Contributing
- License
- Astro 5 static site with file-based routing
- Basque (
eu) and Spanish (es) pages undersrc/pages/[lang]/ - shared company, navigation, footer, FAQ, and settings files in
src/config/ - reusable Astro components for layout, services, forms, maps, and sections
- Open Graph, FAQ schema, service schema, and structured business data
- responsive CSS theme built with custom properties
- Leaflet map integration for the clinic location
- WhatsApp floating action button
- Cloudinary image support and local optimized images
- Prettier formatting with Astro plugin
- GitHub Actions format checks
- Docker build and server deployment workflow
- Node.js from
.nvmrc - pnpm 8 or newer
- Git
nvm use
pnpm installStart Astro:
pnpm devOpen http://localhost:4321.
Useful commands:
| Command | Action |
|---|---|
pnpm dev |
Start the Astro dev server |
pnpm build |
Build the static site into dist/ |
pnpm preview |
Preview the production build |
pnpm format |
Format files with Prettier |
pnpm format:check |
Check formatting in CI |
pnpm astro ... |
Run Astro CLI commands |
laguntza-fisioterapia/
|-- .github/workflows/ # format check and server deployment
|-- nginx/ # production Nginx config
|-- public/ # static files copied by Astro
|-- src/
| |-- components/ # Astro UI components
| |-- config/ # site, company, nav, footer, FAQ settings
| |-- i18n/ # translation strings and helpers
| |-- images/ # local image assets
| |-- layouts/ # base page and post layouts
| |-- pages/ # Astro routes
| |-- styles/ # global CSS and theme tokens
| `-- utils/ # helper functions
|-- astro.config.mjs
|-- Dockerfile
|-- package.json
`-- README.md
Key files:
src/config/company.tsstores clinic contact, address, and business data.src/config/nav.tsdefines navigation for each language.src/i18n/ui.tsstores translated UI strings.src/components/head/contains SEO and structured data components.src/components/forms/ContactForm.astrocontains the contact form UI.src/components/LeafletMap.astrorenders the location map.
Update clinic details in src/config/company.ts.
Update routes and menu labels in src/config/nav.ts.
Update translations in src/i18n/ui.ts.
Update global theme values in src/styles/theme.css.
Add or edit localized pages in src/pages/[lang]/.
The site targets local searches for Laguntza Fisioterapia, physiotherapy in Urnieta, osteopathy in Gipuzkoa, sports injury recovery, therapeutic exercise, dry needling, and rehabilitation services in Basque and Spanish.
The codebase includes:
- localized URLs for Basque and Spanish content
- page metadata through shared head components
- Open Graph data for social sharing
- FAQ schema for service pages
- service schema for treatment pages
- clinic address and contact data in a central config file
robots.txt, web manifest, favicons, and sitemap support
For GitHub discovery, keep these phrases in the repository description or
topics where they fit: astro, astro-website, typescript,
physiotherapy, clinic-website, healthcare-website, multilingual,
i18n, seo, basque, spanish, static-site, docker, nginx.
Build the site:
pnpm buildPreview the build:
pnpm previewBuild and run Docker locally:
docker build -t laguntza-fisioterapia .
docker run -p 8080:8080 laguntza-fisioterapiaThe deployment workflow lives in .github/workflows/deploy-server.yml.
It deploys when you run the workflow by hand, or when the format workflow
passes on master and the commit message contains [deploy].
Required GitHub secrets:
SERVER_HOST
SERVER_USER
SERVER_SSH_KEY
SERVER_PORT
Deploy with a tagged commit:
git commit -m "Update services page [deploy]"
git push origin master- Create a branch.
- Make a focused change.
- Run
pnpm format. - Run
pnpm build. - Open a pull request with the reason for the change and any visual checks.
Report bugs through GitHub Issues. Include the page URL, the browser, the steps to reproduce, and screenshots when the bug affects layout.
This project uses the MIT License.
Laguntza Fisioterapia
Zubitxo Plaza, 3
20130 Urnieta, Gipuzkoa