diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index a9c1e17..89786ce 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -19,6 +19,9 @@ The application supports the following environment variables: | `KVK` | `12345678` | KVK number for contact information | | `EMAIL` | `info@hogelandlinux.nl` | Contact email address | | `PHONE` | `+31 6 12345678` | Contact phone number | +| `STREET` | `Voorstraat 123` | Street address | +| `POSTAL_CODE` | `9967 AA` | Postal code | +| `VILLAGE` | `Eenrum` | Village/city name | | `TELEGRAM_BOT_TOKEN` | *(empty)* | Telegram bot token for contact form notifications | | `TELEGRAM_CHAT_ID` | *(empty)* | Telegram chat ID where notifications will be sent | @@ -84,6 +87,9 @@ COMPANY_NAME=Hogeland Linux KVK=12345678 EMAIL=info@hogelandlinux.nl PHONE=+31 6 12345678 +STREET=Voorstraat 123 +POSTAL_CODE=9967 AA +VILLAGE=Eenrum TELEGRAM_BOT_TOKEN=your_bot_token_here TELEGRAM_CHAT_ID=your_chat_id_here ``` diff --git a/README.md b/README.md index e47ffbc..101674c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Een Nederlandse website voor Linux migratie services in lijn met de endof10.org ## Overzicht Deze website helpt mensen bij het migreren van Windows 10 naar Linux, met focus op: -- Duurzame computing en het voorkomen van e-waste +- Duurzaam computergebruik en het voorkomen van e-waste - Voordelen van FOSS (Free and Open Source Software) - Hergebruik van oude hardware - Professionele Linux installatie services @@ -120,7 +120,7 @@ Voor productie gebruik: ## Ondersteuning -Deze website ondersteunt de [endof10.org](https://endof10.org) beweging voor duurzame computing. +Deze website ondersteunt de [endof10.org](https://endof10.org) beweging voor duurzaam computergebruik. ## Licentie diff --git a/docker-compose.yml b/docker-compose.yml index d6fb8bd..39ec8c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,6 +11,9 @@ services: - KVK=12345678 - EMAIL=info@hogelandlinux.nl - PHONE=+31 6 12345678 + - STREET=Voorstraat 123 + - POSTAL_CODE=9967 AA + - VILLAGE=Eenrum - TELEGRAM_BOT_TOKEN= # Set your Telegram bot token here - TELEGRAM_CHAT_ID= # Set your Telegram chat ID here restart: unless-stopped \ No newline at end of file diff --git a/main.go b/main.go index e829b6e..f0e3fd9 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,9 @@ type Config struct { KVK string Email string Phone string + Street string + PostalCode string + Village string Port string TelegramBotToken string TelegramChatID string @@ -29,6 +32,7 @@ type Config struct { type PageData struct { Config Title string + CurrentPage string CurrentYear int ErrorMessage string SuccessMessage string @@ -74,6 +78,9 @@ func NewServer() *Server { KVK: getEnv("KVK", "12345678"), // Replace with actual KVK number Email: getEnv("EMAIL", "info@hogelandlinux.nl"), Phone: getEnv("PHONE", "+31 6 12345678"), + Street: getEnv("STREET", "Voorstraat 123"), + PostalCode: getEnv("POSTAL_CODE", "9967 AA"), + Village: getEnv("VILLAGE", "Eenrum"), Port: ":" + getEnv("PORT", "8080"), TelegramBotToken: getEnv("TELEGRAM_BOT_TOKEN", ""), // Set this in environment TelegramChatID: getEnv("TELEGRAM_CHAT_ID", ""), // Set this in environment @@ -91,11 +98,12 @@ func NewServer() *Server { } } -// createPageData creates PageData with the given title -func (s *Server) createPageData(title string) PageData { +// createPageData creates PageData with the given title and current page +func (s *Server) createPageData(title, currentPage string) PageData { return PageData{ Config: s.config, Title: title, + CurrentPage: currentPage, CurrentYear: time.Now().Year(), } } @@ -110,13 +118,13 @@ func (s *Server) renderTemplate(w http.ResponseWriter, templateName string, data // homeHandler handles the home page func (s *Server) homeHandler(w http.ResponseWriter, r *http.Request) { - data := s.createPageData("Linux Migratie Service - Uw Computer Nieuw Leven Geven") + data := s.createPageData("Linux Migratie Service - Uw Computer Nieuw Leven Geven", "home") s.renderTemplate(w, "index.html", data) } // contactHandler handles the contact page func (s *Server) contactHandler(w http.ResponseWriter, r *http.Request) { - data := s.createPageData("Contact - " + s.config.CompanyName) + data := s.createPageData("Contact - "+s.config.CompanyName, "contact") if r.Method == "POST" { s.handleContactForm(w, r, &data) diff --git a/static/Tux.svg b/static/Tux.svg new file mode 100644 index 0000000..54b7a7d --- /dev/null +++ b/static/Tux.svg @@ -0,0 +1,363 @@ + + + Tux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/TuxAinrom.png b/static/TuxAinrom.png new file mode 100644 index 0000000..462f798 Binary files /dev/null and b/static/TuxAinrom.png differ diff --git a/static/style.css b/static/style.css index 0b71559..66e78a4 100644 --- a/static/style.css +++ b/static/style.css @@ -40,12 +40,13 @@ p { /* Navigation */ .navbar { - background: #1f2937; + background: #fff; padding: 1rem 0; position: sticky; top: 0; z-index: 100; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1); + border-bottom: 3px solid #059669; } .nav-container { @@ -58,15 +59,31 @@ p { position: relative; } +.nav-logo { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.nav-logo .tux-icon { + width: 2.5rem; + height: 2.5rem; + flex-shrink: 0; +} + .nav-logo h1 { - color: #059669; + color: #047857; font-size: 1.8rem; margin: 0; + font-weight: 700; } .nav-logo a { text-decoration: none; color: inherit; + display: flex; + align-items: center; + gap: 0.75rem; } .nav-links { @@ -77,17 +94,30 @@ p { .nav-links a { text-decoration: none; - color: white; + color: #374151; font-weight: 500; transition: all 0.3s ease; padding: 0.5rem 1rem; - border-radius: 4px; + border-radius: 6px; + position: relative; } .nav-links a:hover, .nav-links a.active { - color: #10b981; - background: rgba(16, 185, 129, 0.1); + color: #059669; + background: #ecfdf5; +} + +.nav-links a.active::after { + content: ''; + position: absolute; + bottom: -1.5rem; + left: 50%; + transform: translateX(-50%); + width: 4px; + height: 4px; + background: #059669; + border-radius: 50%; } /* Mobile Navigation */ @@ -95,14 +125,14 @@ p { display: none; background: none; border: none; - color: white; + color: #374151; font-size: 1.5rem; cursor: pointer; padding: 0.5rem; } .mobile-menu-toggle:hover { - color: #10b981; + color: #059669; } .mobile-menu { @@ -111,9 +141,10 @@ p { top: 100%; left: 0; right: 0; - background: #1f2937; - border-top: 1px solid #374151; + background: #fff; + border-top: 1px solid #e5e7eb; z-index: 1000; + box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1); } .mobile-menu.active { @@ -123,14 +154,15 @@ p { .mobile-menu a { display: block; padding: 1rem 1.5rem; - color: white; + color: #374151; text-decoration: none; - border-bottom: 1px solid #374151; + border-bottom: 1px solid #f3f4f6; } -.mobile-menu a:hover { - background: #374151; - color: #10b981; +.mobile-menu a:hover, +.mobile-menu a.active { + background: #ecfdf5; + color: #059669; } /* Hero Section */ @@ -893,9 +925,11 @@ p { /* Footer */ footer { - background: #374151; - color: #9ca3af; + background: #f9fafb; + color: #374151; padding: 3rem 0 1rem; + border-top: 3px solid #059669; + margin-top: 2rem; } .footer-content { @@ -906,23 +940,26 @@ footer { } .footer-section h3 { - color: white; + color: #047857; margin-bottom: 1rem; + font-weight: 600; } .footer-section a { - color: #9ca3af; + color: #059669; text-decoration: none; + transition: color 0.3s ease; } .footer-section a:hover { - color: #10b981; + color: #047857; + text-decoration: underline; } .footer-bottom { text-align: center; padding-top: 2rem; - border-top: 1px solid #4b5563; + border-top: 1px solid #e5e7eb; color: #6b7280; } diff --git a/templates/contact.html b/templates/contact.html index a0cd2e2..2903735 100644 --- a/templates/contact.html +++ b/templates/contact.html @@ -8,32 +8,7 @@ -
- -
+ {{template "header" .}}
@@ -48,6 +23,14 @@

Contactgegevens

+
+
📍
+
+

Adres

+

{{.Street}}

+

{{.PostalCode}} {{.Village}}

+
+
📧
@@ -65,14 +48,14 @@
🏢
-

KVK Nummer

+

KvK Nummer

{{.KVK}}

Openingstijden

-

Maandag - Vrijdag: 09:00 - 17:00

+

Maandag - Vrijdag: 09:00 - 17:00 (Op afspraak)

Weekend: Op afspraak

@@ -149,7 +132,7 @@
🛠️

Professionele service

-

Jarenlange ervaring met Linux systemen en migraties.

+

Ruim 20 jaar ervaring met Linux systemen en migraties.

🤝
@@ -166,29 +149,7 @@
- + {{template "footer" .}}