Pharmaceutical regulatory consulting · 2026
Bilingual website and content dashboard for a pharmaceutical regulatory consultancy
Byet Elkhebra Eldwaea helps pharmaceutical, biosimilar, medical-device, cosmetics and food-supplement companies register their products in Egypt and across the Gulf, Jordan and MENA. We designed and built its Arabic–English website, then added a dashboard behind it so its team can change any of its content, at any time, without waiting on us. Then we tuned the site for speed and for search engines.
Visit the live site (opens in a new tab)
Built by
- Client
- Withheld at the client’s request
- Timeline
- May – July 2026
- Squad
- 1 engineer, from design to release
- Languages
- Arabic and English, right to left included
- Services on the site
- 5 categories · 18 service pages
- Homepage requests
- 8 → 2
- Dashboard access
- 6 roles, permissions per section
- Status
- Live
Technologies
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS 4
- Framer Motion
- Laravel 10
- MySQL
- Spatie Permission
- pdf.js
- JSON-LD
The product
12 images01
Brief
The website had to stay current without a developer.
Context
Byet Elkhebra Eldwaea is a pharmaceutical regulatory-affairs consultancy in Giza, Egypt. It registers products, prepares CTD and eCTD dossiers, sets up quality systems, runs pharmacovigilance and trains regulatory teams, for companies in Egypt, the Gulf, Jordan and MENA.
Problem
The first version of the site, which we built, held its sentences, service pages and images in the code. Every new service, article or corrected line would have waited on us for a code change and a release.
Goals
- Every page's content editable in both languages
- Services, articles and a book library managed from one dashboard
- Access by role, with a record of who changed what
- A site that stays fast and that search engines read correctly
02
Team
One engineer, from the design to the release.
| Lead engineerThe design, the Next.js site, the Laravel API and dashboard, the releases, search and speed | ×1 | The design, the Next.js site, the Laravel API and dashboard, the releases, search and speed | Senior |
|---|
03
UI/UX design
A consultancy’s authority, in navy and gold.
Who worked on it
The site speaks to regulatory managers at pharmaceutical companies, so it had to read as calm and expert. We set it in deep navy with gold, a serif for headlines, a plain sans-serif for reading and Cairo for Arabic. The homepage opens on what the consultancy does, its certification and its own figures, with a direct line to an expert on WhatsApp. Every page was designed in Arabic and English, right to left as well as left to right.
- One type systemFraunces for headlines, Inter for reading and Cairo for Arabic, the same on every page.
- A direct line to an expertThe hero carries a WhatsApp button, so a visitor can ask a question without filling in a form.
- The book as an objectThe Regulatory Science Framework™ is shown as a book with its cover, and opens into pages that turn.
04
Frontend
Every page comes from the dashboard, and the site still loads fast.
Who worked on it
The site is built with Next.js 16, React 19 and Tailwind CSS 4, in Arabic and English with full right-to-left layouts. Every page is built from what the dashboard holds: the homepage sections, five service categories and eighteen service pages, the Regulatory Intelligence Center and the book page. Each section shows only when it has content. Pages are cached and refreshed every few minutes, so an edit reaches the site without a new release.
Decision 1
Pages render on request, not at build time
A build made while the API was unreachable would have shipped an empty homepage until the cache refreshed.
Trade-off · The first visit to each language after a release renders live.
Decision 2
Each section fails on its own
When one section's data is missing or the API stumbles, the rest of the page still renders, and search engines never meet an error page.
Trade-off · A missing section disappears quietly, so the team notices it on the site, not from an error.
Decision 3
The book's PDF goes through the site's own address
pdf.js can then read the file in ranges without cross-origin errors from the API's storage.
Trade-off · Every PDF passes through the site's server, which serves only the storage folders it allows.
The Regulatory Science Framework™ book opens as a page-turning flipbook. pdf.js reads the PDF in small pieces in a background worker, and the pages are drawn a few at a time, so a 113-page book opens without a long wait.
- Two requests instead of eightThe homepage used to make eight calls to the API. Two combined endpoints now return everything it needs, and the layout, the page and its metadata share them.
- The headline paints firstThe hero's animation moved from JavaScript to CSS, so the headline shows on the first paint instead of waiting for the page's scripts. It still respects reduced motion.
- Lighter imagesThe site's own images were recompressed (the hero from 5.1 MB to 742 KB) and are served as AVIF or WebP.
- Read correctly by search enginesEach page has its own title, description, canonical address and Arabic and English alternates, structured data (organization, services, FAQs, articles, the book, breadcrumbs) and a place in a sitemap that covers both languages.
- Arabic and English, mirroredLayouts, menus and the mobile drawer mirror for Arabic. Email and phone fields stay left to right, and dates follow each language.
- Old addresses keptThirteen permanent redirects send the old service addresses to the new ones, in both languages.
05
Backend & architecture
One dashboard for all the content, in both languages.
Who worked on it
The API and the dashboard are one Laravel 10 application. Every text the site shows is stored once with its Arabic and English side by side, and the API returns it already in the visitor's language, so the website never handles translation.
Decision 1
Both languages in one field
A text and its translation are saved together, and the API hands the site one language, so the site never handles translation.
Trade-off · Searching within one language means searching inside JSON, not a plain column.
Decision 2
Combined endpoints built from the existing ones
The two combined endpoints call the same code as the single endpoints, so every part keeps the shape the site already knew.
Trade-off · The combined answers aren't cached on the server; the site's own cache carries that load.
Decision 3
A version number for the settings cache
Settings are read on every page. Saving one moves a version number, which retires every cached copy at once without needing cache tags.
Trade-off · The other endpoints rely on the website's cache rather than the server's.
The dashboard works in Arabic and English, right to left included. From it the team manages pages and their sections, the service catalog, news and its categories, FAQs, training programs, a book library with its PDFs, partners, menus, a media library, the newsletter list with a CSV export, and site-wide settings such as branding and search defaults. Six roles come ready, from a super admin to a read-only viewer, each with permissions per section, and an activity log records who changed what.
- Six roles, permissions per sectionSuper admin, content manager, editor, leads manager, SEO manager and viewer. An editor edits only the articles they wrote.
- Activity logChanges to pages, services, articles, partners, books and users are recorded with who made them.
- Fewer database queriesThe service tree, partners and menus load their images and children together, not one query per item.
06
DevOps
The site on Vercel, the dashboard on the client’s own hosting.
Who worked on it
The website runs on Vercel, with www as its one primary address so that every canonical link agrees. The API and the dashboard run on the client’s own Hostinger hosting, which we deploy to through the access the client gave us. The API compresses its text and JSON answers, and its robots file keeps the dashboard and the API out of search while still letting crawlers fetch the images a shared link shows.
07
Outcome
The client updates the site on its own.
The site has run on the dashboard since July 2026. The client’s team changes services, articles, the book and the site’s settings itself, in both languages, without a release and without waiting on us.
Tell us what you’re building.
A short message is enough. A senior engineer replies within 1 working day.
