Skip to main content
Portal & Website Theme Builder — A build-to-order Frappe app that lets your team re-skin the entire ERPNext customer/vendor p — 1/1Illustrative preview

A build-to-order Frappe app that lets your team re-skin the entire ERPNext customer/vendor portal and website

— navbar, footer, cards, login, signup and CMS pages — from a single settings DocType, no front-end code required.

ECOSIRE scopes, builds, installs and supports it for you.

What is Portal & Website Theme Builder?

A build-to-order Frappe app that lets your team re-skin the entire ERPNext customer/vendor portal and website — navbar, footer, cards, login, signup and CMS pages — from a single settings DocType, no front-end code required. ECOSIRE scopes, builds, installs and supports it for you. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

`Portal Theme Settings` single DocType with child tables for navbar items, footer columns, CSS injection blocks and per-role overrides, so branding is configuration, not code
`hooks.py` `doc_events` handler on save/validate that recompiles the theme bundle and clears the website cache automatically
Custom portal navbar and footer driven by `portal_menu_items` and `website_context` hooks — links, dropdowns, logo, CTA button
Branded login, signup, forgot-password and email-verification pages via overridden Frappe web templates, keeping native auth flow intact
Card and list-view styling for portal pages (invoices, orders, tickets, RFQs) with brand tokens instead of default Frappe cards
Named CSS injection slots (global head, portal-only, login-only, print) so custom CSS is scoped and upgrade-safe
Design tokens (primary/secondary colors, radius, spacing, font stack) stored as fields and compiled into CSS variables
Web font and favicon/OG-image handling via File records — no hard-coded asset paths that break on `bench migrate`
Responsive breakpoints and a configurable mobile navbar (collapse, drawer) as part of the theme model
Per-role portal theming using role profiles, so Vendor, Customer and Partner portals can differ
Whitelisted REST method (`frappe.whitelist()`) that returns the active theme as JSON for headless/mobile front-ends over the Frappe REST API
`app_include_css`/`app_include_js` bundling through Frappe's asset pipeline so the theme ships as a versioned bundle
Optional `scheduler_events` nightly job to rebuild assets and warm the website cache
Light/dark or multi-brand theme presets selectable per website, switchable without redeploying

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your ERPNext.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

ERPNext Compatibility
—
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
MariaDB 10.6+

About this Product

Out of the box, the Frappe/ERPNext portal and website look unmistakably like Frappe: the default navbar, the stock login screen, generic card layouts, and a footer that says "Powered by Frappe." For a business that puts customers, vendors, or members in front of that portal — to view invoices, raise support tickets, submit RFQs, or track orders — the un-branded experience quietly erodes trust. ERPNext natively gives you a website settings page, a splash logo, and a brand color, but the moment you want a custom navbar structure, branded login and signup pages, restyled portal cards, or per-role theming, you fall off the edge of what the UI can do and into hand-editing website_theme, overriding portal templates, and maintaining fragile CSS that breaks on the next bench update.

We build a proper Frappe app — its own module, installed with bench get-app and bench install-app — that turns all of this into structured configuration. At its core is a Portal Theme Settings single DocType (plus child tables for menu items, CSS injection blocks, and per-role overrides) that your admins edit like any other ERPNext form. On save, a hooks.py doc_events handler validates the theme and regenerates the compiled CSS/bundle, so the branded navbar, footer, card styles, and login/signup pages render immediately without a developer touching a template. We wire the theme into Frappe's website rendering through website_context, app_include_css, and portal_menu_items hooks so it applies consistently across www pages, the /app desk portal surfaces, and the logged-in customer portal — not just one of them.

Technically, the app exposes controlled extension points instead of a blank CSS box: named injection slots (global head, portal-only, login-only, print) so custom CSS lands in the right scope and survives upgrades; a whitelisted REST method (frappe.whitelist()) that returns the active theme as JSON for any headless or mobile front-end you run against the Frappe REST API; and a nightly scheduler_events job that can rebuild assets and warm caches. Branding assets (logo, favicon, OG image, web fonts) are stored as File records and referenced by field, so there are no hard-coded paths. Everything respects Frappe permissions and role profiles — you decide which roles may edit the theme, and per-role overrides let a "Vendor" portal look different from a "Customer" portal. Responsive breakpoints and mobile navbar behavior are part of the theme model, so the branded experience holds up on phones, not just desktop.

Because this is build-to-order, we start from your actual brand and portal, not a template gallery. After a short scoping call we confirm exactly which surfaces you need themed (portal, website, login, specific DocType web views), your brand tokens, and any v15/v16 target. We build against a copy of your requirements, ship installable source you own, and hand over a git repository — not a black box. Typical delivery is one working week from confirmed scope, and we install it, run UAT on a staging bench with a rollback plan, and stay on for a post-go-live support window.

What you get

  • Installable Frappe app source code for your version (installed via `bench get-app` / `bench install-app`), targeting Frappe/ERPNext v15 or v16
  • Installation and configuration on your bench, including `Portal Theme Settings` populated with your brand tokens and assets
  • Technical documentation: DocType schema, hooks, injection slots, whitelisted method contract and upgrade notes
  • User guide plus a live training session for the admins who will maintain the theme
  • UAT on a staging bench with a signed-off test plan and a documented rollback procedure
  • Post-go-live support window for defect fixes and configuration help
  • Git repository handover with full commit history and README so you own and can extend the code
  • Site backup and pre-install checklist so the change is reversible on production

Who this is for

Businesses running a branded customer portal

Companies whose customers log into ERPNext to see invoices, orders and tickets, and who need the portal, login and website to look like their brand — not stock Frappe — without a permanent front-end developer.

Vendor / supplier portal operators

Procurement-heavy organizations exposing an RFQ and supplier portal who want per-role theming so the vendor experience is distinct, professional and on-brand across navbar, cards and login.

ERPNext partners and implementers

Consultants delivering ERPNext to end clients who need a reusable, upgrade-safe theming layer they can configure per client instead of hand-editing `website_theme` and portal templates on every project.

Marketing and brand owners in ERPNext shops

Non-technical brand stewards who need to control logos, colors, fonts, footer content and login copy from an ERPNext form governed by permissions, without filing a ticket for every tweak.

How Portal & Website Theme Builder Compares

CriterionECOSIRECustom BuildCompetitorERPNext Native
Portal navbar & footer brandingConfigured from a DocType, applied via hooks across portal and websitePossible but hand-coded per template each timeOften only global logo/color, limited navbar controlLogo and brand color only; fixed structure
Branded login / signup pagesFully themed while keeping native auth flow intactRequires overriding auth templates by handRarely covered; usually website pages onlyStock Frappe login screen
Custom CSS managementNamed, scoped injection slots that survive upgradesAd-hoc CSS prone to breaking on bench updateSingle CSS box, unscopedEdit `website_theme` CSS field manually
Per-role portal themingRole-profile-based overrides (Vendor vs Customer)Custom conditional logic to build and maintainTypically one theme for all rolesNot supported
Upgrade safety (v15/v16)Isolated app, documented upgrade notes, hooks not core editsDepends on discipline; core edits risk being overwrittenVaries by vendor; may lag new versionsSafe but minimal capability
Headless / REST access to themeWhitelisted method returns theme as JSONWould need to be built separatelyUsually noneNone
Ownership & handoverFull source + git repo; you own and can extend itYou own it but built from scratch at higher costLicensed binary, limited or no sourceN/A — it's core
Support & delivery modelBuild-to-order, UAT, rollback, post-go-live support windowDepends on your team or contractor availabilityGeneric vendor support, no bespoke fitCommunity/self-serve

Frequently Asked Questions about Portal & Website Theme Builder

Is this an existing app I can download and install today?

No. This is build-to-order. ECOSIRE builds the app against your actual brand, portal surfaces and Frappe version, then installs it on your bench. There is no instant download — you receive installable source code and a git repository as part of the handover.

How long does delivery take?

Typical delivery is one working week from confirmed scope. The timeline starts once we've agreed on which surfaces to theme (portal, website, login, specific web views), your brand tokens and your target version. A short scoping call kicks it off; complex per-role or multi-brand requirements sit at the longer end of that range.

Will it survive `bench update` and future upgrades?

Yes — that's the point of building it as a proper Frappe app. Instead of hand-editing core templates and `website_theme`, we use `hooks.py`, scoped CSS injection slots and File-backed assets, so your branding is isolated from core and re-applies cleanly after `bench update` and `bench migrate`. We document upgrade notes for v15 and v16.

How do you handle support and updates after go-live?

Every build includes a post-go-live support window for defect fixes and configuration help. Because you receive the git repository and full source, your own team can also extend it. Beyond the included window, ECOSIRE offers ongoing support and enhancement engagements.

Does it work with a headless or mobile front-end?

Yes. The app exposes a whitelisted method (`frappe.whitelist()`) that returns the active theme as JSON over the Frappe REST API, so a custom mobile app or headless front-end can consume the same brand tokens the server-rendered portal uses.

Can different roles see differently themed portals?

Yes. Per-role overrides use Frappe role profiles, so a Vendor portal and a Customer portal can differ in navbar, cards and login while sharing one installed app. You control which roles may edit the theme through standard ERPNext permissions.

Do you modify ERPNext core or our data?

No core files are patched and no business data is changed. The theme lives in its own module with its own DocTypes and File records. We install on a staging bench first, run UAT, and keep a rollback plan and site backup before touching production.

Request a quote

Portal & Website Theme Builder

A build-to-order Frappe app that lets your team re-skin the entire ERPNext customer/vendor portal and website — navbar, footer, cards, login, signup and CMS pages — from a single settings DocType, no front-end code required. ECOSIRE scopes, builds, installs and supports it for you.

  • `Portal Theme Settings` single DocType with child tables for navbar items, footer columns, CSS injection blocks and per-role overrides, so branding is configuration, not code
  • `hooks.py` `doc_events` handler on save/validate that recompiles the theme bundle and clears the website cache automatically
  • Custom portal navbar and footer driven by `portal_menu_items` and `website_context` hooks — links, dropdowns, logo, CTA button
  • Branded login, signup, forgot-password and email-verification pages via overridden Frappe web templates, keeping native auth flow intact

Request a Quotation

Tell us about your Portal & Website Theme Builder requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.