Complete multilingual web platform for Javna zdravstvena ustanova opΕ‘ta bolnica Kotor — serving 70,000+ residents across Kotor, Tivat and Herceg Novi municipalities.
A fully functional, production-ready public website for the General Hospital of Kotor — a state healthcare institution in Montenegro.
13 unique page types covering all essential hospital information: departments, clinics, patient guides, insurance, laboratory, news, FAQ, contacts, careers, prices, and the Meljine rehabilitation branch.
Full localization into Montenegrin, English, Russian, Ukrainian, Turkish, German, Spanish, and French. 457 translation keys per language, 3,656 translation lines total. Automatic browser language detection.
Docker containerization, Nginx with advanced caching and security, Kubernetes manifests, Let's Encrypt TLS, rate limiting, bot protection, gzip compression. Ready for deployment.
Every page is fully localized with proper hreflang tags, Open Graph metadata, and Schema.org structured data.
Modular Astro component architecture. Each component is self-contained with its own styles, translations, and responsive behavior.
457 translation keys per language, 8 complete language files, 3,656 lines of translations. Custom YAML-based system with Vite-native imports.
| Language | Code | URL Prefix | Keys | Status |
|---|---|---|---|---|
| Crnogorski (Montenegrin) | cnr | / (default) | 457 | Complete |
| English | en | /en/ | 457 | Complete |
| Russian | ru | /ru/ | 457 | Complete |
| Ukrainian | uk | /uk/ | 457 | Complete |
| Turkish | tr | /tr/ | 457 | Complete |
| German | de | /de/ | 457 | Complete |
| Spanish | es | /es/ | 457 | Complete |
| French | fr | /fr/ | 457 | Complete |
| Total | 3,656 | |||
Browser language detection on first visit. Serbian, Bosnian, Croatian automatically mapped to Montenegrin. Language preference saved in cookie for 1 year.
Every page includes <link rel="alternate"> tags for all 8 language versions. Critical for SEO in multilingual environments.
Flat key/value YAML files imported natively via Vite's import.meta.glob. Zero runtime overhead — all translations resolved at build time.
@type: Hospital)@astrojs/sitemap/departments/emergency)X-Robots-Tag header for demo/production modeAlpine-based Nginx image (nginx:1.25-alpine). Multi-stage build with rsync for atomic deploys. Environment-driven ROBOTS_NOINDEX flag for demo/production toggle.
Full K8s manifest: Deployment, Service (ClusterIP), PersistentVolumeClaim (5Gi), Ingress with cert-manager for automatic Let's Encrypt TLS. WWW-to-non-WWW redirect. Environment variables via Secrets.
Clean URL routing (try_files $uri $uri.html $uri/ /index.html). Tiered caching: 30-day immutable for assets, 1-hour revalidate for HTML. Rate limiting: 10r/s for HTML, 30r/s for static. Server tokens disabled.
X-Frame-Options: SAMEORIGINX-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-originPermissions-Policy: camera=(), microphone=(), geolocation=()Automatic TLS certificates via cert-manager with Let's Encrypt cluster issuer. WWW-to-non-WWW permanent redirect. Configured for jzuobkotor.me domain.
The current website provides a solid foundation. Below are the recommended next phases for evolving into a full-featured hospital portal.
Patient registration, clinic/department selection, time slot picker, booking confirmation, reminders via SMS/email.
Personal medical records, lab results integration with eZdravlje, appointment history, document management.
Doctor profiles with photos, specializations, qualifications, schedules. Searchable by department and specialty.
Admin panel for publishing news, service announcements, schedule changes. Multilingual content management.
Visitor statistics, popular pages, language distribution, device breakdown. Privacy-friendly, GDPR-compliant analytics.
Video consultations powered by the €1.1M EU-funded Montenegro-Croatia telemedicine project. Real-time patient-doctor communication.