Catalogue and Portfolio
- A page for each of the five crafts, listing its own carpets
- Colour, Technique, Style and Size filters built from the catalogue, with counts
- Header search that suggests carpets as you type
10Case study · B2B catalogue & CMS
Pentagon Carpets is a family carpet atelier in Nepal that sells handmade rugs directly to importers, showrooms and interior designers. In July and August 2026 I built its B2B catalogue website and a self-service CMS with React, Express and PostgreSQL, deployed by GitHub Actions. The site is live at so.studionepal.com.
01The brief
Pentagon Carpets makes Tibetan, Persian, handtufted, handloom and flatweave rugs in Nepal and sells them to trade buyers abroad, with no middleman in between.
Those buyers judge a workshop by its website before writing. They want to see each piece clearly, read how it is made and send a precise brief. And the workshop has to add carpets and articles itself, without calling a developer.
The site had to look like the craft, speak to trade buyers and stay easy for staff to update.
02What I built
I built a React site with 11 fixed pages: home, heritage, portfolio, journal, custom order, contact and one page for each of the five crafts. Every carpet, article and extra page comes from PostgreSQL through an Express API, so the site grows without code changes.
Behind it, staff use an admin CMS to add carpets, write the journal, build pages, answer enquiries and track custom orders. I built it end to end as Full Stack Web Developer at Ektukra Digital Agency: the kind of website development in Nepal a business selling abroad needs.

03The CMS
Each role sees only the screens its job needs, and the server checks the same permission table the menu reads, as in every management system I build.
| Super admin | Editor | Sales manager | |
|---|---|---|---|
| Carpets | Add, edit, delete | Add and edit | View |
| Journal and pages | Add, edit, delete | Add, edit, delete | No access |
| Media library | Upload and delete | Upload and delete | View |
| Enquiries and custom orders | View and update | No access | View and update |
| Staff accounts | Create and deactivate | No access | No access |
The editors feel like familiar writing tools, and the CMS blocks mistakes that would break the public site, such as a new page saved at a fixed page’s address.
04Features
What a trade buyer gets, from the first craft page to a sent commission brief.

05Architecture
Two applications on two subdomains of one cPanel host, behind Cloudflare: the React build as static files, and the Express API under Passenger, talking to PostgreSQL.
Shared hosting set two traps. The image library opened about 90 threads against an account limit of 100, so the API now caps them before it starts.
And behind Cloudflare every visitor looked like one proxy sharing one rate limit, so the limiter now reads each real address.
06Engineering
The four decisions that shaped Pentagon Carpets, and the problem each one solves.
01
Every upload passes through sharp once: plain or transparent borders are trimmed, never more than 45% of a side, and the longest edge is capped at 1,600 px, over twice the largest frame a carpet appears in. PNG carpets keep their transparent corners.
02
The portfolio and five craft pages carry the SEO, each with its own title, description and structured data. Single carpets come and go with stock, so their pages are noindex and left out of the sitemap. It is how I plan sites as an SEO expert in Nepal.
03
Both forms save straight to the database, and enquiries record the page they came from. The first version filled empty fields with a default size and technique; I removed that, so staff never quote for a rug nobody asked for.
04
A push to main builds the site, checks the sitemap carries the live address, uploads both apps over FTPS and restarts the API. The run fails unless both answer with a 200, and deploys never touch server credentials or staff uploads.
Built in from the first deploy, not patched on after launch.
07Screens
The craft pages, the carpet pages and the commission form work the same on a phone as on a laptop.


08Status
The website is live at so.studionepal.com, with its catalogue, journal and pages edited through the CMS. The source code is private.
Live
It shows how I build for businesses that sell abroad: a catalogue that looks like the product, forms shaped around trade orders and a CMS staff run alone.
Related services
These are the services behind this case study. Each page lists prices, timelines and how I work, and every starting price is on my services page.
Also see Sajilai, a car and bike rental marketplace. Every project is in my web development portfolio, and the person behind them is on my about page.
What the Pentagon Carpets project included, what a website like it costs and how it works for export buyers.
Ask me on WhatsAppIt included a React website with 11 fixed pages, five craft pages and a filterable portfolio, an Express and PostgreSQL API, and an admin CMS for carpets, journal articles, pages, media, enquiries and custom orders. It also covered technical SEO, cPanel hosting and automatic deploys from GitHub Actions.
A static business website starts from NPR 18,000 and takes 1 to 2 weeks. A website with a CMS your staff can edit starts from NPR 35,000 and takes 2 to 4 weeks. A custom build like Pentagon Carpets is quoted on its scope. Domain and hosting are extra.
A B2B catalogue website shows a business’s products to trade buyers, such as importers, showrooms and designers, without a shopping cart. Each piece gets photos, specifications and an enquiry button, and prices are quoted privately. It suits export carpets, because orders are made to size and priced per enquiry.
Usually a catalogue. An export order depends on size, materials, quantity and shipping, so a fixed checkout price rarely fits. A catalogue with enquiry and commission forms collects those details first. If you also sell finished rugs to retail buyers, an online store from NPR 60,000 can sit beside it.
Yes. Staff sign in to the CMS to add carpets with photos, sizes, colours and specifications, write journal articles, create pages and edit the footer contact details. Editors handle content, sales managers handle enquiries and orders, and only a super admin manages accounts. Photos are resized automatically on upload.
Buyers use the Get in Touch form on eleven pages, or the commission form, which asks for ship-to country, company, quantity, target date and a brief. Both land in the CMS, where enquiries are marked read or replied and orders move through a status pipeline.
Each of the 11 fixed pages is prerendered with its own title, description, canonical tag, social tags and structured data, and the sitemap, robots.txt and llms.txt rebuild on every deploy. The craft pages and portfolio do the ranking, while single carpet pages are noindex because stock changes. An SEO audit checks the same groundwork on an existing site.
Yes. I build catalogue websites and CMSs for Nepali businesses that sell abroad, with enquiry forms shaped for trade buyers and SEO for the searches they make. See web development in Nepal for prices and timelines, or send me a list of your products for a fixed quote.
Send a short note about your project and budget. I reply within one working day with questions or a first estimate.
Ujjwal RupakhetiReplies within one working day
What are you planning?
Opens WhatsApp with your message started.