Internative Logo

KTSD: An Association Website and Member Portal on a Dynamic CMS

KTSD: An Association Website and Member Portal on a Dynamic CMS

KTSD: An Association Website and Member Portal on a Dynamic CMS

The client

KTSD (Kozmetik ve Temizlik Ürünleri Sanayicileri Derneği) brings together Türkiye's cosmetics, cleaning and hygienic paper manufacturers. It keeps member companies informed about sector developments and regulation, coordinates working committees and events, and shares documents reserved for members. It also provides industry information to the public and the press.

The website serves both audiences. It represents the association publicly and gives employees of member companies a place to access the information they need.

The challenge

The old site was a Nuxt single-page app running on an older API. We reviewed its content and structure as part of the migration. The report delivered on 19 August 2026 documented problems across navigation, images, links and languages:

  • Nine top-level menu items opened a blank screen.
  • 25 pages had content but could not be reached from the menu.
  • 33 images were embedded directly in page bodies as base64, the largest at 1.6 MB. The "Our Members" page contained 1.69 MB of HTML for just 1,048 characters of text.
  • 45 of 114 image links were broken, and six member logos were hotlinked from third-party sites.
  • Three links on the live site pointed to a test server, and 24 legislation entries were labelled only "Click here".
  • Announcement addresses consisted entirely of numeric ids, with no readable words for people or search engines.
  • The Turkish and English versions were out of sync. Their member lists did not match, six announcements published in both languages were not linked to their counterparts, and some sections were missing from the English menu. Contact did not have its own page.

The work covered both the content and the way it was managed: restoring access to existing pages, fixing links and giving editors the means to publish without a developer.

What we built

We built the platform on our own product, Portal CMS, and tailored it to KTSD. Portal CMS runs the public site, member portal and mobile app on the client's own server. Coding began on 18 August 2026. The new site went live on 4 September, about two and a half weeks later.

A dynamic CMS that editors can manage themselves

The site is fully dynamic. Editors build pages using a library of 52 blocks, including heroes, text, images and video, collection lists, interactive elements, forms, layouts and embeds. Publishing requires neither a developer nor a deployment.

Content is organised into nine collections: announcements, people, member companies, projects, documents, links, press coverage, e-newsletters and legal texts. Editors can create new collections and define their fields. Each block can hold content entered by hand or draw it from a collection.

The admin panel also covers menus, redirects, SEO fields, the media library for images, video and documents, forms and incoming submissions. When a page's address changes, the system creates a 301 redirect automatically. Editors do not have to add it separately to keep the old link working.

Connected pages in two languages

Turkish pages sit at the root and English pages under /en. Each page is linked to its counterpart in the other language. The sitemap, hreflang, canonical tags and schema.org structured data are generated automatically from code.

We also reorganised the information architecture. 51 old addresses were consolidated into 24 meaningful ones, with 65 redirect rules keeping the old links working.

A record-by-record website migration

We moved and cleaned 672 content records. Each received a readable slug. We corrected Turkish capitalisation, extracted base64 images into the media library and changed all links from http to https. This content cleanup was part of the migration into the new structure.

A member extranet on the web

Employees of member companies access a private extranet through accounts created by KTSD. Its member-only document library supports folders, search and access by audience. Documents open through short-lived signed links, and every download is recorded in an audit log.

Members can also find announcements and the sector agenda, a calendar of meetings, training sessions and working groups, useful institutional links, surveys, company details and the committees they belong to. They sign in with a one-time code sent by email or a password. Access is tied to the company's membership: when it ends, the company's open sessions close too.

The extranet as a Flutter mobile app

Members can also use the extranet through KTSD Extranet, a Flutter mobile app. It went live on Google Play on 11 September 2026 and on the App Store on 16 September.

Whenever a document, announcement, event or survey is published, members receive a push notification and an entry in their in-app inbox. A short tour introduces the app at first sign-in. Usage statistics are collected only with the member's consent.

An admin panel for everyday work

The admin panel includes record and form drawers, user roles, Excel export, Search Console and Analytics summaries, a help centre and backups. We integrated Google Analytics 4 and Tag Manager with cookie consent, Firebase Analytics for the app and OneSignal for notifications. Cloudflare R2, Email and Turnstile handle file storage, email and form protection.

The interface design uses KTSD's own blue consistently across the website, extranet and app.

The outcome

  • The "Our Members" page went from 1.69 MB to 257 KB, roughly 85% lighter, with a compressed transfer size of 30 KB. The homepage is 240 KB, or 39 KB compressed. Server time to first byte is about 0.27 seconds.
  • 51 addresses became 24. Broken and empty menu items have been removed, 65 redirects preserve the old links, and the sitemap lists 173 URLs with corresponding pages in both languages.
  • The live site has 69 pages, 702 collection records and 1,657 media items. Editors manage all of them without a developer.
  • Member-only documents are accessible on the web and on phones, with permissions controlling access and downloads recorded in an audit trail.

Since 1 October 2026, we have supported the platform under an application maintenance agreement.

Technology

Next.js 16 · React 19 · Tailwind CSS · NestJS 11 · Fastify 5 · TypeScript · MongoDB · Dragonfly · BullMQ · Flutter 3.38 · Riverpod · TanStack Query · shadcn/ui · pnpm · Turborepo · Caddy · PM2 · GitHub Actions · fastlane · Cloudflare R2 · Google Analytics 4 · Firebase Analytics · OneSignal

Planning something similar?

If you run an association, chamber or federation and maintaining your website has become a job in itself, let's talk. Starting with the problems you already know, we can plan a custom website or tailor Portal CMS to your members' needs. You can also explore our work with NGOs and non-profits.

Related industries

Where we have built this before.

KTSD Extranet home screen bringing the sector agenda, announcements and recent documents together
KTSD Extranet: weekly member-only announcements
KTSD Extranet: searchable member-only document library of circulars, presentations and publications
KTSD Extranet: useful links to legislation, institutions and international sources

Keep reading

More articles from Customer Stories.