Commit Graph

23 Commits

Author SHA1 Message Date
popovskik 974daa59f3 Add Official information page (EN/MK/SI) + fill real bank details
New legal/registration reference page at /{lang}/legal/ with the official
details: legal name, registered office, registration number (4128133000),
tax number (44932448), VAT status, SKIS activity, registration date, bank
(NLB d.d.), IBAN SI56 0284 3026 6115 703, SWIFT LJBASI2X, representative,
and contact. New css/pages/_legal.css. Linked as "Official information" in
the footer legal bar on all pages.

Also fills the Support page's bank-transfer card with the same real IBAN/
bank/SWIFT (placeholders removed). SEO block + hreflang + sitemap (210
pages) regenerated.

MK/SI labels AI-drafted -> native review. SWIFT LJBASI2X is inferred from
the IBAN bank code (02 = NLB) -> please double-check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 00:56:19 +02:00
popovskik de3b65fb15 Add MSOS Hub venue page (EN/MK/SI) + add to Who We Are menu
A promo page for the MSOS Hub — a renovated community/event space in
Ljubljana for gatherings up to 50 people. Sections: hero with quick facts,
the funding/partner story (Ministry of Foreign Affairs and Trade of North
Macedonia, Municipality of Ljubljana, Macedonian Cultural Association
"Macedonia"), what you can do here, what's inside (amenities), an image
placeholder gallery (photos pending — captioned), "made possible by", and a
booking CTA (mailto info@msosorg.com). New css/pages/_hub.css.

'MSOS Hub' added to the Who We Are dropdown (desktop + mobile) on all pages.
SEO block + hreflang + sitemap (207 pages) regenerated.

MK/SI translations are AI-drafted -> native review. Real photos to replace
the captioned placeholders when available.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 00:39:58 +02:00
popovskik b9dee56628 Add Support MSOS page (EN/MK/SI) and wire the header button
New donation/partnership landing page telling the MSOS story of being
community-built: hero, "built by the community" narrative, four ways to
support (partner/sponsor, donate, offer skills/space, spread the word),
"where your support goes" impact, a bank-transfer card (placeholder IBAN/
bank/SWIFT for the org to fill in), a partners thank-you marquee, and a
contact CTA (mailto info@msosorg.com). New css/pages/_support.css.

The header "Support MSOS" button (previously a dead <button>) now links to
/{lang}/support/ on all pages. SEO block + hreflang + sitemap regenerated.

MK/SI translations are AI-drafted -> native review. Bank details are
placeholders pending real IBAN/SWIFT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 23:54:00 +02:00
popovskik 587fd3d197 Footer dedup, dual contact email, privacy-policy accuracy
- Remove the duplicate Privacy/Cookie links from the footer Organisation
  column; keep them (plus Manage cookies) in the bottom legal bar
- Show both info@msosorg.com and info.msosorg@gmail.com in the privacy +
  cookie policy prose (en/mk/si)
- Fix the privacy policy's now-false "no tracking cookies" sentence to
  reflect consent-based Google Analytics (en/mk/si)

MK/SI policy text is AI-drafted -> native review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 23:28:04 +02:00
popovskik 8067d6a354 Add "Manage cookies" footer link (GDPR consent withdrawal)
Adds a per-language "Manage cookies" link to the footer legal bar on all
201 pages, wired to window.msosOpenConsent() so visitors can change or
withdraw their choice at any time (GDPR requirement). Verified: decline ->
re-open via link -> accept flips analytics consent to granted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 22:17:13 +02:00
popovskik f24fc704d6 Add GDPR cookie-consent banner (Consent Mode v2)
- consent.js: self-contained, non-blocking bottom banner in EN/MK/SI,
  remembers the choice in localStorage, links to the per-language cookie
  policy. Accept -> gtag consent 'update' granted; Decline stays denied.
- Head GA snippet restores a returning visitor's prior "granted" choice
  before the first hit; loads /consent.js on every page.
- Re-openable via window.msosOpenConsent() for a "manage cookies" link.

Verified in-browser: shows for new visitors, Accept grants + remembers,
reload keeps consent without re-prompting, Slovene text + /si/ policy link.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 18:30:35 +02:00
popovskik 9a6d2c335c Add Google Analytics 4 (G-WVYV807VSS) with Consent Mode v2
- gtag.js injected on all 201 pages via tools/seo_inject.py + on 404.html
- Consent Mode v2 defaults all storage to 'denied' (EEA-safe: tag loads,
  no tracking cookies until a consent banner grants analytics_storage)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 12:52:19 +02:00
popovskik 314667f692 SEO polish: OG image, favicons, 404, article schema, image optimization
- Add branded 1200x630 og-default.jpg; article pages use their hero as
  og:image, others use the default
- Wire the existing (previously unlinked) favicon set into every page
- Add branded 404.html with root-absolute paths + noindex
- Emit Article + localized BreadcrumbList JSON-LD on all article pages
- Convert 74 heavy served photos to WebP (28MB -> 8.5MB, -70%), rewrite
  references, add loading=lazy/decoding=async to below-fold images and
  fetchpriority=high to heroes (protect LCP)
- Stop tracking images/original/ (458MB of unused source masters; kept on
  disk, gitignored) and ignore .playwright-mcp/

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 12:15:53 +02:00
popovskik b393859467 Add technical SEO foundation, MK/SI about-us + timeline, content fixes
SEO (all 201 pages, en/mk/si):
- Inject canonical, hreflang (en/mk/sl + x-default), Open Graph, Twitter
  cards and Organization JSON-LD via idempotent SEO:START/END block
- Generate multilingual sitemap.xml (xhtml:link alternates) + robots.txt
- Curated meta descriptions for lead-less pages (home, become-a-member,
  faq, news hub, my-route); every page now has a description
- Absolute URLs target final domain msosorg.com, not the temp host
- Add reusable tools/seo_inject.py (+ README)

Content fixes:
- Translate about-us and timeline-and-milestones into MK + SI, wire up
  their pages, and repair the previously-dead "Who We Are" nav links
  across all mk/si pages
- Remove duplicate en/projects/makedonska-studentska-vecer-vo-ljubljana
  (unreferenced; already covered by macedonian-student-night-in-ljubljana)

Locale correctness:
- Normalise Slovene pages to <html lang="sl"> (correct ISO 639-1)
- Map sl->si in main.js so the language-switcher highlight and newsletter
  i18n keep working on Slovene pages (data-lang="si" still maps to /si/)

MK/SI translations and descriptions are AI-drafted; flag for native review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 11:43:10 +02:00
popovskik 9e8cbc5876 Homepage refresh, activities redesign + newsletter rollout
Navigation
- Replace "Donate" with a "Support MSOS ❤️" CTA site-wide
- Remove dead nav links (Gallery, Press releases)
- Turn the one-item News dropdown into a direct link

Homepage
- Replace the non-functional "Become part" contact form with a
  "Find your people in Slovenia" join CTA (blue/white gradient band,
  orange button, photo collage), in all three languages
- Fix the placeholder Activities subtitle
- Redesign Activities into card-style tabs with icons; move per-tab
  content into HTML panels and switch by index so the tabs work in
  every language (MK/SI tabs were previously dead)

Newsletter (MailerLite)
- Add the subscribe block to the News hub, news articles, and every
  events/projects page and hub, in all three languages
- Resize/rebalance the block, shrink the privacy line, add top spacing
- Standardise on honest copy (drop the "2,000+ subscribers" claim)
- Load main.js on the News hub pages (they shipped without it, so the
  form and header dropdowns didn't work there)
- Fix a dead privacy-policy link on the makedonska-vecer page
- Document the signup convention in docs/newsletter-signup.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-01 19:51:59 +02:00
popovskik f6fab99ebb Remove "Get Involved" nav dropdown (dead links, duplicated the CTA buttons)
The "Get Involved" dropdown (Become a member / Support MSOS) had dead href="#"
links and only duplicated the two top-right buttons (Become a member, Donate).
Removed it site-wide (desktop + mobile, en/si/mk) - 390 blocks across 195 pages,
including the privacy-policy header the generators slice from, so regeneration
stays clean. Nav is now Who We Are / What We Do / For Students / News + the two
pill buttons.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-01 11:59:34 +02:00
popovskik efb3c6ea39 Fix mobile nav/TOC/overflow on article pages + harden membership form
Mobile fixes (article, guide, get-to-know, projects pages):
- Remove duplicate main.js include site-wide. footer.js emitted a
  <script src=main.js> inside the footer block while pages also load one
  before </body>, so DOMContentLoaded ran twice and every tap toggled the
  mobile menu / article TOC twice (net no-op). Menu and TOC only worked on
  the homepage. Now exactly one main.js per page, before </body>.
- Kill horizontal overflow: add overflow-x: clip to html/body (clips the
  off-canvas mobile nav panel without breaking position: sticky, unlike
  overflow-x: hidden).
- Reset align-items to stretch in the mobile .article-layout-container
  rule; the desktop flex-start made .article-container size to max-content
  width in a column flexbox and overflow the viewport.

Membership form hardening (Become a Member):
- Honeypot field + localStorage cooldown (30s gap, max 3/24h) + stronger
  email regex; trilingual cooldown alert message.
- Apps Script (setup doc): per-email auto-reply dedupe + daily send cap;
  applicant reply is a plain thank-you that never echoes submitted answers.
- Draft HTML welcome email (email-welcome-preview.html) for later use.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-01 10:59:55 +02:00
popovskik a21450c8c8 Add flagship Become a Member page with interactive multi-step form
New trilingual /<lang>/become-a-member/ conversion page: hero with real-photo collage, why-join benefits, animated MSOS-in-numbers, ways to participate, membership-in-real-life and projects showcase (real project photos), testimonials, who-can-join, an adaptive multi-step form (student + supporter flows, conditional fields, progress, personalised messages, validation, success screen), FAQ and final CTA. Site-wide 'Become a member' buttons now link here. Form posts to a Google Form once wired; metrics/testimonials are placeholders to confirm.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-01 00:14:13 +02:00
popovskik ea9acc4968 Add News hub and wire homepage Latest news to a dated content index
New /<lang>/news/ hub aggregates real projects (title+image read from their pages), placeholder news announcements, and blog items, newest-first with type badges and a type filter. Homepage Latest news now shows the newest dated items as badged cards with a working See all to the hub; the News menu link points there too. Dates in news.js are placeholders to replace with real publish dates.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 23:50:05 +02:00
popovskik ec794a32e6 Nav cleanup + new Blog page
Remove 'Mentorship Programme' and 'Open calls' from the menus, rename 'Announcements' to 'News and Announcements', and wire the Blog link. Add a trilingual /<lang>/blog/ page with a distinct look: featured strip, client-side topic filters, and a masonry card wall with colour-coded tags (placeholder posts for now).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 23:39:17 +02:00
popovskik 4df3651db7 Add trilingual FAQ page and wire FAQ links site-wide
New /<lang>/faq/ page (en/si/mk) with categorised accordion Q&A that link into the Student Welcome Guide, plus a contact/Viber block. Nav 'FAQs' links and 'See all FAQs' buttons across the site now point to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 22:35:12 +02:00
popovskik cc849fa6dd Vendor language flags locally and add scrolling partners marquee
Flags: replace flag-icons CDN with local SVGs (images/flags/{gb,si,mk}.svg) referenced as CSS backgrounds, so no external dependency and no per-page path issues. Partners: replace the static home-page logo row with a seamless auto-scrolling, hover-pausing marquee (CSS-only, reduced-motion aware, edge fade).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 22:16:54 +02:00
popovskik 95b2484117 Redesign language switcher with circular flag icons
Desktop dropdown and mobile modal now show circular country flags (flag-icons) with clean language names and an active-language highlight, driven by the page lang via main.js.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 22:06:10 +02:00
popovskik 44433d4145 Footer: correct legal name spelling and unify left-column text style
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 21:57:21 +02:00
popovskik fc3ac32e7e Rebuild site footer across all pages
Add legal name, real social links (FB/IG/LinkedIn/YouTube), clickable email, guide and section navigation, and 2026 copyright. All links depth-correct per page and translated per language.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 21:46:50 +02:00
popovskik cee9f1da10 Add Student Welcome Guide, legal pages, and working newsletter
Student Welcome Guide (Phase 1):
- Landing + 5 topic pages (journey, bachelor, master, deadlines, eVS)
  in EN/SI/MK, reusing the article auto-TOC
- New css/pages/_guide.css components and a 3:1 hero image placeholder
- Functional client-side "Build my route" tool (student-guide.js)
- "Student Welcome Guide" menu link wired site-wide

Legal pages:
- Trilingual Privacy Policy and Cookie Policy (GDPR-oriented,
  MailerLite disclosed, IP RS complaint route)
- Footer legal strip + Organisation column links wired site-wide,
  depth-aware, plus header/footer templates

Newsletter:
- MailerLite subscribe handler in main.js upgrades both form variants
  on every page: validation, double opt-in, inline trilingual status
- Subscribe status styles in css/pages/_projects.css

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 02:17:35 +02:00
popovskik 7502e5db27 Add the remaining Get to Know stories with sourced images
Complete the two country sections with the place, food, culture, and
heritage stories, so every hub card now leads to a full article instead
of a pending page.

Articles (EN/SI/MK each):
- Slovenia: Lake Bled Beyond the Famous View, A First Taste of Slovenian
  Food, Slovenian Habits That May Surprise You, and Slovenia's Stories in
  Stone and Tradition.
- Macedonia: Ohrid, More Than a Postcard, plus the earlier Skopje and
  Ljubljana stories that were still untracked.
- Table, Music and Dance, and History articles for Macedonia are in place
  and still use image placeholders until their photos are sourced.

Images:
- Real, sourced photos wired into every finished article, each with an
  attribution caption (place, photographer where known, source link).
  Images are center-cropped to a uniform 3:2 and downscaled; webp and
  jfif sources converted to jpg.
- Each article's hero image is reused on its hub card.
- Welcome to Macedonia now opens with Macedonia Square in Skopje; the
  Church of St. John at Kaneo photo moves to the Ohrid story.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 11:04:06 +02:00
popovskik 8ca03d5886 Add Get to Know Slovenia and Macedonia sections with Welcome articles
Launch the two country sections as a cultural bridge, following the
approved Phase A spec and reusing the Events & Projects structure.

Hubs (6 pages, EN/SI/MK each):
- get-to-know-slovenia and get-to-know-macedonia
- Section header + newsletter form, 6-category filter (Places & Nature,
  Culture & Traditions, Food & Flavours, History & Heritage,
  People & Identity), 6 launch cards, empty state, client-side pagination.
- Five cards per hub link to articles that arrive in later batches.

Articles (6 pages, EN/SI/MK each):
- Welcome to Slovenia and Welcome to Macedonia, full text with the
  auto-generated table of contents and sticky mobile header.
- Real, sourced images with attribution captions (place, photographer,
  source link). Wikimedia photos also link the CC BY-SA licence and note
  that the image was cropped. Images center-cropped to a uniform 3:2 and
  downscaled. Each article's hero image is reused on its hub card.

Site-wide:
- Wire the For Students menu links (desktop and mobile) to the new hubs on
  every page and in the header templates; rename the menu label from
  North Macedonia to Macedonia (formal name kept in body content).
- Placeholder styles for images and cards still awaiting a sourced photo.
- Add caption styling for the hero image and give the article table of
  contents clear separation from the footer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-28 17:56:08 +02:00