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 @@
+
+
\ 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" .}}