1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>FrappeXL (Excel View) for Frappe & ERPNext | Hybrowlabs Technologies</title><meta name="description" content="FrappeXL brings Excel View into Frappe and ERPNext with live DocType data, spreadsheet formulas, write-back, in-browser analytics, and collaborative reporting."/><meta name="keywords" content="Frappe Excel View, ERPNext Excel View, Frappe spreadsheet app, ERPNext spreadsheet integration, Frappe custom app, DocType write-back, Frappe analytics, Hybrowlabs"/><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"/><meta name="author" content="Hybrowlabs Technologies"/><meta name="publisher" content="Hybrowlabs Technologies"/><link rel="canonical" href="https://hybrowlabs.com/custom-apps/excel-view-for-frappe"/><meta property="og:title" content="FrappeXL (Excel View) for Frappe & ERPNext | Hybrowlabs Technologies"/><meta property="og:description" content="FrappeXL brings Excel View into Frappe and ERPNext with live DocType data, spreadsheet formulas, write-back, in-browser analytics, and collaborative reporting."/><meta property="og:url" content="https://hybrowlabs.com/custom-apps/excel-view-for-frappe"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Hybrowlabs Technologies"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://hybrowlabs.com/custom-apps/frappeXl/summery.png"/><meta property="og:image:alt" content="FrappeXL Excel View dashboard and spreadsheet architecture overview"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:url" content="https://hybrowlabs.com/custom-apps/excel-view-for-frappe"/><meta name="twitter:title" content="FrappeXL (Excel View) for Frappe & ERPNext | Hybrowlabs Technologies"/><meta name="twitter:description" content="FrappeXL brings Excel View into Frappe and ERPNext with live DocType data, spreadsheet formulas, write-back, in-browser analytics, and collaborative reporting."/><meta name="twitter:image" content="https://hybrowlabs.com/custom-apps/frappeXl/summery.png"/><meta name="twitter:image:alt" content="FrappeXL Excel View dashboard and spreadsheet architecture overview"/>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"FrappeXL (Excel View)","applicationCategory":"BusinessApplication","operatingSystem":"Web","description":"FrappeXL brings Excel View into Frappe and ERPNext with live DocType data, spreadsheet formulas, write-back, in-browser analytics, and collaborative reporting.","url":"https://hybrowlabs.com/custom-apps/excel-view-for-frappe","image":"https://hybrowlabs.com/custom-apps/frappeXl/summery.png","softwareHelp":{"@type":"CreativeWork","url":"https://github.com/Ujjwal-Aggrawal2279/Frappe-Excel"},"creator":{"@type":"Organization","name":"Hybrowlabs Technologies"},"provider":{"@type":"Organization","name":"Hybrowlabs Technologies","url":"https://hybrowlabs.com"},"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"featureList":["Excel-style spreadsheet interface inside Frappe","Live DocType data with server-side formulas","Write-back to Frappe DocTypes","In-browser analytics with DuckDB WASM","Real-time collaboration support"]}</script>
1<meta name="next-head-count" content="24"/><meta property="og:type" content="website"/><meta property="og:image" content="https://hybrowlabs.com/_next/image?url=%2Fimages%2FHybrowBlackLogo.png&w=256&q=256"/><meta name="twitter:card" content="summary_large_image"/><meta property="twitter:domain" content="hybrowlabs.com"/><meta name="twitter:image" content="https://hybrowlabs.com/_next/image?url=%2Fimages%2FHybrowBlackLogo.png&w=256&q=256"/><link rel="preload" href="/_next/static/css/d92ed3dd4e56b896.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d92ed3dd4e56b896.css" data-n-g=""/><noscript data-n-css=""></noscript>
1<script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script>
1<script defer="" src="/_next/static/chunks/4936.f10e72852b94cab6.js"></script>
1<script defer="" src="/_next/static/chunks/2813.9d6517d8058c861d.js"></script>
1<script defer="" src="/_next/static/chunks/1029.0352796a22d2f48e.js"></script>
1<script defer="" src="/_next/static/chunks/4289.766e7121b7b8c8da.js"></script>
1<script defer="" src="/_next/static/chunks/5483.e19eeb4424ad4da7.js"></script>
1<script defer="" src="/_next/static/chunks/7829.e16f7f98cc8fbfbb.js"></script>
1<script defer="" src="/_next/static/chunks/1487.df2102c7602938dd.js"></script>
1<script defer="" src="/_next/static/chunks/1800.ff9ba78c7a0988c2.js"></script>
1<script defer="" src="/_next/static/chunks/eef94ddb.12c1d894c9fd98d4.js"></script>
1<script defer="" src="/_next/static/chunks/7899.af68e4c2b3ef3bb2.js"></script>
1<script defer="" src="/_next/static/chunks/9497.9e3668cd4be7e23a.js"></script>
1<script src="/_next/static/chunks/webpack-52fc41f156e19212.js" defer=""></script>
1<script src="/_next/static/chunks/framework-3404d9ac298e860e.js" defer=""></script>
1<script src="/_next/static/chunks/main-f6bc7c280b3666c9.js" defer=""></script>
1<script src="/_next/static/chunks/pages/_app-5595f0e758259165.js" defer=""></script>
1<script src="/_next/static/chunks/30e1f94b-4c5b84cdba252abe.js" defer=""></script>
1<script src="/_next/static/chunks/9923-5172ebc44aab2fd2.js" defer=""></script>
1<script src="/_next/static/chunks/1482-a64493e3e25716f3.js" defer=""></script>
1<script src="/_next/static/chunks/48-5809698b887ad028.js" defer=""></script>
1<script src="/_next/static/chunks/3466-3ddd021c41489611.js" defer=""></script>
1<script src="/_next/static/chunks/6860-a45e4750f4923bde.js" defer=""></script>
1<script src="/_next/static/chunks/8178-9b20e8a27130e65b.js" defer=""></script>
1<script src="/_next/static/chunks/2135-4d6d8897ed81fbff.js" defer=""></script>
1<script src="/_next/static/chunks/612-3f0690c821b22204.js" defer=""></script>
1<script src="/_next/static/chunks/pages/custom-apps/excel-view-for-frappe-01ebb9383b1a9d4a.js" defer=""></script>
1<script src="/_next/static/2H33HB-Be57AO1hwMtuh2/_buildManifest.js" defer=""></script>
1<script src="/_next/static/2H33HB-Be57AO1hwMtuh2/_ssgManifest.js" defer=""></script>
1<meta name="facebook-domain-verification" content="8ih9qsrchawr23bnwe5ag3aotw49it" /></head><body><div id="__next" data-reactroot=""><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><header class="px-6 py-1 md:px-8 border-b-2 border-brand-primary-blue bg-brand-pure-white"><nav class="flex justify-between items-center flex-wrap" role="navigation" aria-label="Main navigation"><div class="logo flex items-center gap-4"><a class="flex min-h-[90px]" aria-label="Hybrowlabs Technologies homepage" href="/"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27128%27%20height=%2724%27/%3e"/></span><img alt="Hybrowlabs Technologies company logo" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Hybrowlabs Technologies company logo" src="/images/black_logo.svg" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></a><div class="hidden xl:flex items-center"><a href="https://frappe.io/partners/india/hybrowlabs-technologies" target="_blank" rel="noopener noreferrer" class="bg-brand-primary-blue text-white text-xs font-bold px-3 py-1.5 rounded-full whitespace-nowrap hover:opacity-90 transition-opacity duration-300 focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-blue-600" aria-label="View Hybrowlabs Technologies Frappe Partner Profile - Opens in new tab">Best Frappe Partner 2024</a></div></div><ul class="hidden nav-items lg:flex flex-grow justify-between items-center w-fit " role="menubar"><li class="pb-2.5 md:py-0 xl:px-2 relative " role="menuitem"><a class="font-extrabold navText whitespace-nowrap focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 transition-colors text-brand-primary-blue hover:text-brand-primary-blue/80" href="/about">About Us</a></li><li class="pb-2.5 md:py-0 xl:px-2 relative " role="menuitem"><a class="font-extrabold navText whitespace-nowrap focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 transition-colors text-brand-primary-blue hover:text-brand-primary-blue/80" href="/processes">Processes</a></li><li class="pb-2.5 md:py-0 xl:px-2 relative " role="menuitem"><a class="font-extrabold navText whitespace-nowrap focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 transition-colors text-brand-primary-blue hover:text-brand-primary-blue/80" href="/services">Services</a></li><li class="pb-2.5 md:py-0 xl:px-2 relative " role="menuitem"><a class="font-extrabold navText whitespace-nowrap focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 transition-colors text-brand-primary-blue hover:text-brand-primary-blue/80" href="/projects">Projects</a></li><div class="relative md:px-2"><h2 class="relative hover:text-black navText font-extrabold cursor-pointer text-brand-primary-blue"><li class="pb-2.5 md:py-0 relative ">HRMS</li></h2></div><div class="relative md:px-2"><h2 class="relative hover:text-black navText font-extrabold cursor-pointer text-brand-primary-blue"><li class="pb-2.5 md:py-0 relative ">ERPNext</li></h2></div><div class="relative md:px-1 "><h2 class="relative hover:text-black navText font-extrabold text-[#0038ff] cursor-pointer focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1"><li class="" role="menuitem">Industries</li></h2></div></ul><button class="ml-0 block xl:ml-16 burger cursor-pointer py-5 focu
1s:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 false" aria-expanded="false" aria-controls="mobile-menu" aria-label="Open navigation menu"><div class="false"><img class="cursor-pointer line1 " src="/images/blueLine.svg" alt="" aria-hidden="true"/><img class="pt-0.5 line2 " src="/images/blueLine.svg" alt="" aria-hidden="true"/></div></button></nav></header><div id="mobile-menu" class="section-accent navbar overflow-auto scrollbarStyle " aria-hidden="true"><div class="logo flex-grow w-2/3"><a class="flex mt-3 ml-7 min-h-[90px]" aria-label="Hybrowlabs Technologies homepage" href="/"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27128%27%20height=%2724%27/%3e"/></span><img alt="Hybrowlabs Technologies company logo" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Hybrowlabs Technologies company logo" src="/images/black_logo.svg" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></a><hr/></div><hr class="w-full h-0.5 bg-gray-300 border-0 rounded"/><div class="navbar-wrapper"><ul class="pb-3 relative mb-1 my-10 px-7" role="menu" aria-label="Mobile navigation menu"><li role="menuitem"><a class="font-bold sub-heading text-brand-black block focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 hover:text-brand-primary-blue transition-colors" href="/about">About Us</a><hr class="my-5 bg-gray-300 h-0.5"/></li><li role="menuitem"><a class="font-bold sub-heading text-brand-black block focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 hover:text-brand-primary-blue transition-colors" href="/processes">Processes</a><hr class="my-5 bg-gray-300 h-0.5"/></li><li role="menuitem"><a class="font-bold sub-heading text-brand-black block focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 hover:text-brand-primary-blue transition-colors" href="/services">Services</a><hr class="my-5 bg-gray-300 h-0.5"/></li><li role="menuitem"><a class="font-bold sub-heading text-brand-black block focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 hover:text-brand-primary-blue transition-colors" href="/integration">Integration</a><hr class="my-5 bg-gray-300 h-0.5"/></li><li role="menuitem"><a class="font-bold sub-heading text-brand-black block focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 py-1 hover:text-brand-primary-blue transition-colors" href="/projects">Projects</a><hr class="my-5 bg-gray-300 h-0.5"/></li><li role="menuitem" class="list-none"><div><button class="font-bold px-2 sub-heading text-brand-black w-full text-left focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded hover:text-brand-primary-blue transition-colors flex justify-between items-center py-2" aria-expanded="false"><span>ERPNext</span><svg class="w-5 h-5 transform transition-transform " fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button></div><hr class="my-5 bg-gray-300 h-0.5"/></li><div class="relative mb-7"><div class="flex px-2 flex-row justify-between cursor-pointer"><h2 class="font-bold sub-heading text-slate-800 block cursor-pointer"><li class="">Industries</li></h2><p class="px-10"><i class="arrow_down"></i></p></div><hr class="my-4 bg-gray-300 h-0.5"/></div></ul><div class="px-6 pb-7 flex flex-row justify-between"><div class="md:px-5 px-3 flex flex-col justify-between"><ul><li role="menuitem"><button class="font-bold text-lg text-brand-black block py-1 focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 hover:text-brand-primary-blue transition-colors w-full text-left" aria-label="Navigate to Careers page">Careers</button></li><li role="menuitem"><button class="font-bold text-lg text-brand-black block py-1 focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded px-2 hover:text-brand-primary-blue transition-colors w-full text-left" aria-label="Navigate to Blogs page">Blogs</button></li></ul><div class="flex flex-row gap-5"><a target="_blank" rel="noreferrer" href="https://www.instagram.com/hybrowlabs/" class="focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded" aria-label="Visit our Instagram page"><img class="w-6 h-6" src="/images/ig-blue.svg" alt="" aria-hidden="true"/></a><a target="_blank" rel="noreferrer" href="https://youtube.com/@hybrowlabs-best-app-devs" class="focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded" aria-label="Visit our YouTube channel"><img class="w-6 h-6" src="/images/yt-blue.svg" alt="" aria-hidden="true"/></a><a target="_blank" rel="noreferrer" href="https://www.linkedin.com/company/hybrowlabs-technologies/" class="focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 rounded" aria-label="Visit our LinkedIn page"><img class="w-6 h-6" src="/images/ln-blue.svg" alt="" aria-hidden="true"/></a></div></div><div class="flex flex-col w-1/2 gap-3"><p class="md:text-sm text-xs whitespace-normal">Weâre a leading global agency, building products to help major brands and startups, scale through the digital age.</p><a class="bg-brand-primary-blue text-center text-white font-bold md:sub-heading text-md py-3 px-5 rounded focus:ring-2 focus:ring-brand-primary-blue focus:ring-offset-2 hover:bg-brand-primary-blue/90 transition-colors" aria-label="Contact us to get in touch" href="/contact">Get In touch</a></div></div></div></div><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-highlight-black" aria-labelledby="custom-app-title"><div class=" mx-auto px-8"><div class="max-w-5xl mx-auto text-center">
1<h1 id="custom-app-title" class="main-heading font-bold font-gilroy text-white mb-4 lg:mb-8">FrappeXL <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">(Excel View)</span></h1><p class="sub-heading text-white/85 max-w-4xl mx-auto mb-6 lg:mb-8 leading-relaxed">FrappeXL Excel View is a powerful spreadsheet interface for Frappe and ERPNext, enabling real-time ERP analytics, live DocType data access, and seamless data management without exports.</p><div class="grid gap-4 md:grid-cols-2 xl:grid-cols-3 text-left max-w-5xl mx-auto mb-8 lg:mb-10"><div class="rounded-3xl border border-white/10 bg-white p-5"><p class="sub-heading font-bold font-gilroy text-black mb-2">Full Spreadsheet Experience</p><p class="text-brand-black text-sm leading-relaxed">Native spreadsheet UI embedded inside Frappe.</p></div><div class="rounded-3xl border border-white/10 bg-white p-5"><p class="sub-heading font-bold font-gilroy text-brand-black mb-2">Live ERP Data & Formulas</p><p class="text-brand-black text-sm leading-relaxed">Real-time DocType-aware analysis without exports.</p></div><div class="rounded-3xl border border-white/10 bg-white p-5"><p class="sub-heading font-bold font-gilroy text-brand-black mb-2">Write-Back to DocTypes</p><p class="text-brand-black text-sm leading-relaxed">Update records directly from the spreadsheet grid.</p></div></div><div class="flex flex-col sm:flex-row gap-4 justify-center"><a class="inline-flex text-sm md:text-md items-center justify-center gap-2 text-white font-bold md:px-8 px-4 py-4 rounded-xl transition-all duration-300 hover:opacity-90 shadow-lg bg-brand-primary-blue" href="/contact">Get a Demo<svg class="w-4 h-4" viewBox="0 0 24 24" fill="currentColor"><path d="M4 11V13H16L10.5 18.5L11.92 19.92L19.84 12L11.92 4.08L10.5 5.5L16 11H4Z"></path></svg></a><a href="https://github.com/Ujjwal-Aggrawal2279/Frappe-Excel" target="_blank" rel="noreferrer" class="inline-flex items-center text-sm md:text-md justify-center border-2 border-white text-white hover:bg-white hover:text-black md:px-8 px-4 py-4 rounded-xl transition-all duration-300">Star the Repo</a></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1" aria-labelledby="problem-heading"><div class="max-w-6xl mx-auto px-4 md:px-8"><div class="text-center max-w-4xl mx-auto mb-4 lg:mb-8"><h2 id="problem-heading" class="heading font-bold font-gilroy mb-4 lg:mb-8 text-brand-black">Every Frappe User Eventually Opens <span class="px-3 inline-block py-1 rounded-sm font-gilroy bg-[#e54887] text-white ">Excel</span></h2><p class="leading-relaxed sub-heading ">The workflow is painfully familiar - export data, analyse it in a spreadsheet, then re-import the results. By the time your report is finished, the underlying data has already changed. And every new analysis request means another developer script.</p></div><div class="grid text-center gap-6 lg:grid-cols-3 items-stretch md:grid-cols-2"><div class="bg-white flex flex-col rounded-3xl p-6 shadow-lg border border-blue-100 h-full"><h3 class="lg:text-xl text-base font-bold font-gilroy text-brand-black mb-3">Export -> Analyse -> Re-import</h3><p class="text-gray-700 leading-relaxed text-sm ">A repetitive, error-prone cycle that breaks data integrity and wastes developer time.</p></div><div class="bg-white flex flex-col rounded-3xl p-6 shadow-lg border border-blue-100 h-full"><h3 class="lg:text-xl text-base font-bold font-gilroy text-brand-black mb-3">Stale Reports</h3><p class="text-gray-700 leading-relaxed text-sm ">Reports are out of date before they are even shared. Live decisions are made on static snapshots.</p></div><div class="bg-white flex flex-col rounded-3xl p-6 shadow-lg border border-blue-100 h-full"><h3 class="lg:text-xl text-base font-bold font-gilroy text-brand-black mb-3">Developer Bottleneck</h3><p class="text-gray-700 leading-relaxed text-sm ">Every custom analysis request lands back on the developer. Business users stay blocked.</p></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-2" aria-labelledby="solution-
1heading"><div class="max-w-6xl mx-auto px-4 md:px-8"><div class="text-center max-w-4xl mx-auto mb-4 lg:mb-8"><h2 id="solution-heading" class="heading font-bold font-gilroy mb-4 lg:mb-8 text-brand-black">What is <span class="px-3 inline-block py-1 rounded-sm font-gilroy bg-black text-white ">FrappeXL?</span></h2><p class="leading-relaxed sub-heading ">Excel View brings a full spreadsheet experience directly into Frappe â live ERP data, real-time formulas, and direct write-back to DocTypes. No exports required, no context switching, no stale data.</p></div><div class="grid gap-6 md:grid-cols-2 items-stretch lg:grid-cols-3"><div class="rounded-3xl border border-gray-200 bg-white p-6 h-full shadow-sm"><svg class="w-7 h-7 mx-auto mb-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2L2 7L12 12L22 7L12 2ZM2 17L12 22L22 17M2 12L12 17L22 12" stroke="currentColor" stroke-width="2" fill="none"></path></svg><h3 class="sub-heading font-bold font-gilroy text-center text-brand-black mb-3">Full Spreadsheet Experience</h3><p class="text-gray-700 text-center leading-relaxed text-sm ">A native, familiar grid interface embedded inside the Frappe UI - users feel right at home without learning new tools.</p></div><div class="rounded-3xl border border-gray-200 bg-white p-6 h-full shadow-sm"><svg class="w-7 h-7 mx-auto mb-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.5 2 2 3.8 2 6V18C2 20.2 6.5 22 12 22C17.5 22 22 20.2 22 18V6C22 3.8 17.5 2 12 2ZM12 20C7.6 20 4 18.7 4 18V14.8C5.8 15.6 8.7 16 12 16C15.3 16 18.2 15.6 20 14.8V18C20 18.7 16.4 20 12 20ZM20 12C20 12.7 16.4 14 12 14C7.6 14 4 12.7 4 12V8.8C5.8 9.6 8.7 10 12 10C15.3 10 18.2 9.6 20 8.8V12ZM12 8C7.6 8 4 6.7 4 6C4 5.3 7.6 4 12 4C16.4 4 20 5.3 20 6C20 6.7 16.4 8 12 8Z"></path></svg><h3 class="sub-heading font-bold font-gilroy text-center text-brand-black mb-3">Live ERP Data & Formulas</h3><p class="text-gray-700 text-center leading-relaxed text-sm ">Formulas execute server-side against real-time DocType data. What you see is always current - no refresh, no export.</p></div><div class="rounded-3xl border border-gray-200 bg-white p-6 h-full shadow-sm"><svg class="w-7 h-7 mx-auto mb-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M3 3H21V5H3V3ZM3 7H21V9H3V7ZM3 11H21V13H3V11ZM3 15H21V17H3V15ZM3 19H21V21H3V19Z"></path></svg><h3 class="sub-heading font-bold font-gilroy text-center text-brand-black mb-3">Write-Back to DocTypes</h3><p class="text-gray-700 text-center leading-relaxed text-sm ">Edit cells and push changes directly back to Frappe DocTypes. Works on vanilla Frappe and ERPNext out of the box.</p></div></div><div><h3 class="sub-heading mt-10 font-bold font-gilroy text-center text-brand-black mb-3">FrappeXL a view</h3><div><div class="slick-slider solution-dashboard-slider slick-initialized"><div class="slick-list"><div class="slick-track" style="width:100%;left:0%"><div data-index="0" class="slick-slide slick-active slick-current" tabindex="-1" aria-hidden="false" style="outline:none;width:100%"><div><div class="px-2" tabindex="-1" style="width:100%;display:inline-block"><div class="rounded-xl flex items-center justify-center overflow-hidden "><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271200%27%20height=%27700%27/%3e"/></span><img alt="frappe excel view" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="max-w-full max-h-full object-contain" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="frappe excel view" src="/custom-apps/frappeXl/frappe-xl.png" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="max-w-full max-h-full object-contain" loading="lazy"/></noscript></span></div></div></div></div></div></div></div></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-3" style="background-color:#ffffff" aria-labelledby="specialization-heading">
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"ð¥ Bulk Import","description":"Smart dependency-aware CSV import that automatically resolves and creates related DocTypes in the correct order â one CSV, six levels, one click.","thumbnailUrl":["https://hybrowlabs.com/custom-apps/frappeXl/bulk-import.png"],"uploadDate":"2026-07-24T00:00:00+00:00","contentUrl":"https://hybrowlabs.com/custom-apps/frappeXl/bulk-import.mp4"}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"ð Smart Lookup","description":"ERP-native formulas built directly into your spreadsheet. Query GL balances, stock quantities, item prices, and any DocType field â all server-side.","thumbnailUrl":["https://hybrowlabs.com/custom-apps/frappeXl/smart-lookup.png"],"uploadDate":"2026-07-24T00:00:00+00:00","contentUrl":"https://hybrowlabs.com/custom-apps/frappeXl/smart-lookup.mp4"}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"ð Visual Report Builder","description":"Drag-and-drop SQL report construction with no code required. Powered by DuckDB WASM entirely in the browser â zero server load.","thumbnailUrl":["https://hybrowlabs.com/custom-apps/frappeXl/visual-query-builder.png"],"uploadDate":"2026-07-24T00:00:00+00:00","contentUrl":"https://hybrowlabs.com/custom-apps/frappeXl/visual-query-builder.mp4"}</script>
1<div class="container mx-auto px-8"><div class="space-y-4 "><div class="text-center md:mb-8 mb-4 "><h2 id="specialization-heading" class="heading font-bold font-gilroy text-brand-black mb-4 lg:mb-8">3 Demos Today</h2><p class="sub-heading max-w-6xl mx-auto">We'll walk through three core capabilities of Excel View, each showcasing a different dimension of what becomes possible when your spreadsheet lives inside your ERP.</p></div><div class="grid grid-cols-1 gap-8"><div><h2 id="specialization-heading" class="sub-heading text-center font-bold font-gilroy text-brand-black mb-2 lg:mb-2">ð¥ Bulk Import</h2><p class="text-gray-700 md:mb-8 mb-4 max-w-4xl mx-auto text-sm lg:text-base text-center leading-relaxed">Smart dependency-aware CSV import that automatically resolves and creates related DocTypes in the correct order â one CSV, six levels, one click.</p><div class="mx-auto w-full max-w-5xl overflow-hidden rounded-2xl bg-black shadow-lg"><video src="/custom-apps/frappeXl/bulk-import.mp4" poster="/custom-apps/frappeXl/bulk-import.png" controls="" muted="" playsinline="" preload="none" class="block w-full object-contain "></video></div></div><div><h2 id="specialization-heading" class="sub-heading text-center font-bold font-gilroy text-brand-black mb-2 lg:mb-2">ð Smart Lookup</h2><p class="text-gray-700 md:mb-8 mb-4 max-w-4xl mx-auto text-sm lg:text-base text-center leading-relaxed">ERP-native formulas built directly into your spreadsheet. Query GL balances, stock quantities, item prices, and any DocType field â all server-side.</p><div class="mx-auto w-full max-w-5xl overflow-hidden rounded-2xl bg-black shadow-lg"><video src="/custom-apps/frappeXl/smart-lookup.mp4" poster="/custom-apps/frappeXl/smart-lookup.png" controls="" muted="" playsinline="" preload="none" class="block w-full object-contain "></video></div></div><div><h2 id="specialization-heading" class="sub-heading text-center font-bold font-gilroy text-brand-black mb-2 lg:mb-2">ð Visual Report Builder</h2><p class="text-gray-700 md:mb-8 mb-4 max-w-4xl mx-auto text-sm lg:text-base text-center leading-relaxed">Drag-and-drop SQL report construction with no code required. Powered by DuckDB WASM entirely in the browser â zero server load.</p><div class="mx-auto w-full max-w-5xl overflow-hidden rounded-2xl bg-black shadow-lg"><video src="/custom-apps/frappeXl/visual-query-builder.mp4" poster="/custom-apps/frappeXl/visual-query-builder.png" controls="" muted="" playsinline="" preload="none" class="block w-full object-contain "></video></div></div></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1" aria-labelledby="benefits-heading"><div class="container mx-auto px-4 md:px-8"><div class="text-center max-w-4xl mx-auto mb-4 lg:mb-8"><h2 id="benefits-heading" class="heading font-bold font-gilroy mb-4 lg:mb-8 text-brand-black">Architecture That Stays <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">Resilient</span></h2><p class="leading-relaxed sub-heading ">DuckDB WASM -> JS fallback, permission enforcement at ORM layer, and TTL-based session cleanup ensure graceful degradation and security at every level.</p></div><div class="grid gap-6 items-stretch md:grid-cols-2 xl:grid-cols-3"><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><div class="lg:w-14 lg:h-14 w-8 h-8 rounded-2xl bg-black flex items-center justify-center mb-5"><svg class="md:w-7 md:h-7 w-4 h-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M22 21H2V3H4V19H6V17H10V19H12V16H16V19H18V18H22V21ZM16 8H18V15H16V8ZM12 11H14V15H12V11ZM8 13H10V15H8V13ZM4 12H6V15H4V12Z"></path></svg></div><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">DuckDB WASM for In-Browser Analytics</h3><p class="text-gray-700 text-sm flex-grow leading-relaxed">Running DuckDB via WebAssembly eliminates server round-trips for pivot and aggregate queries. The JS fallback ensures compatibility across all browsers, making analytics resilient without sacrificing performance in modern environments.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><div class="lg:w-14 lg:h-14 w-8 h-8 rounded-2xl bg-black flex items-center justify-center mb-5"><svg class="md:w-7 md:h-7 w-4 h-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M9.19 6.35C10.04 5.5 11.27 5 12.5 5C13.73 5 14.96 5.5 15.81 6.35C16.66 7.2 17.16 8.43 17.16 9.66C17.16 10.89 16.66 12.12 15.81 12.97L12.5 16.28L9.19 12.97C8.34 12.12 7.84 10.89 7.84 9.66C7.84 8.43 8.34 7.2 9.19 6.35M12.5 1C8.92 1 6 3.92 6 7.5C6 12.38 12.5 20 12.5 20S19 12.38 19 7.5C19 3.92 16.08 1 12.5 1Z"></path></svg></div><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">HyperFormula + FormulaBridge Separation</h3><p class="text-gray-700 text-sm flex-grow leading-relaxed">Decoupling the formula engine (HyperFormula) from the grid UI (Handsontable) via FormulaBridge allows either component to be upgraded independently. FRAPPE_* functions extend HyperFormula without modifying its core.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><div class="lg:w-14 lg:h-14 w-8 h-8 rounded-2xl bg-black flex items-center justify-center mb-5"><svg class="md:w-7 md:h-7 w-4 h-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1ZM12 21C8.13 19.91 5 16.54 5 11V6.3L12 3.19
1L19 6.3V11C19 16.54 15.87 19.91 12 21ZM15 9L10 14L8 12L9.41 10.59L10 11.17L13.59 7.58L15 9Z"></path></svg></div><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">Permission Enforcement at ORM Layer</h3><p class="text-gray-700 text-sm flex-grow leading-relaxed">frappe.has_permission() is called inside ORM methods, not at the API boundary - every data access is permission-checked regardless of which code path triggered it, providing defense in depth.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><div class="lg:w-14 lg:h-14 w-8 h-8 rounded-2xl bg-black flex items-center justify-center mb-5"><svg class="md:w-7 md:h-7 w-4 h-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M3 3H21V5H3V3ZM3 7H21V9H3V7ZM3 11H21V13H3V11ZM3 15H21V17H3V15ZM3 19H21V21H3V19Z"></path></svg></div><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">Shared sql_generator.js AST</h3><p class="text-gray-700 text-sm flex-grow leading-relaxed">The same SQL AST -> query generator is used by both the client-side PivotBuilder and the server-side GenBI pipeline, ensuring semantic consistency and reducing maintenance surface area.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><div class="lg:w-14 lg:h-14 w-8 h-8 rounded-2xl bg-black flex items-center justify-center mb-5"><svg class="md:w-7 md:h-7 w-4 h-4 text-brand-primary-blue" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12S6.48 22 12 22S22 17.52 22 12S17.52 2 12 2ZM10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"></path></svg></div><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">Redis for Ephemeral GenBI State</h3><p class="text-gray-700 text-sm flex-grow leading-relaxed">Conversation context is stored in Redis (fast, TTL-expiring) rather than MariaDB, keeping the relational store clean and making GenBI sessions self-expiring without manual cleanup logic.</p></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 bg-white" aria-labelledby="grid-engine-heading"><div class="container mx-auto px-8"><div class="grid xl:grid-cols-2 gap-12 items-center"><div><h2 id="grid-engine-heading" class="heading font-bold mb-4 text-center xl:text-left font-gilroy text-brand-black lg:mb-6 ">How the core <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">Grid Engine</span> is working:</h2><p class="sub-heading text-center xl:text-left lg:mb-8 mb-4">Our team combines deep technical expertise with real-world industry experience to deliver robust ERPNext implementations. We ensure seamless deployment, flexible customization, and smooth integrationsâfully aligned with your business needs.</p><div class="grid grid-cols-1 md:grid-cols-2 gap-4"><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">Handsontable 6.x</h3><p class="text-gray-700 leading-relaxed text-sm ">The primary spreadsheet UI. Renders the cell grid, handles keyboard navigation, selection, copy/paste, and cell editing events. Acts as the visual surface for all user input.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">FormulaBridge</h3><p class="text-gray-700 leading-relaxed text-sm ">The critical wiring layer between Handsontable and HyperFormula. Syncs cell data bidirectionally â HOT changes trigger HF evaluation and HF results flow back into HOT cells.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">HyperFormula</h3><p class="text-gray-700 leading-relaxed text-sm ">The in-browser formula engine. Handles =SUM, =IF, =VLOOKUP, and hundreds of standard spreadsheet functions â all computed locally in the browser at high speed.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">frappe_formula_plugin</h3><p class="text-gray-700 leading-relaxed text-sm ">Extends HyperFormula with custom functions: FRAPPE_GET, FRAPPE_SUM, FRAPPE_COUNT, GL_BALANCE, STOCK_QTY, ITEM_PRICE â each calling the backend asynchronously via frappe.call.</p></div></div></div><div class="relative flex justify-center items-center "><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27700%27%20height=%27500%27/%3e"/></span><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="w-full max-w-[90vw] h-auto object-fill rounded-lg shadow-lg" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="/custom-apps/frappeXl/frappexl-formula-engine.png" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="w-full max-w-[90vw] h-auto object-fill rounded-lg shadow-lg" loading="lazy"/></noscript></span></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1" aria-labelledby="analytics-layer-heading"><div class="container mx-auto px-8"><h2 id="analytics-layer-heading" class="heading font-bold mb-4 text-center font-gilroy text-brand-black lg:mb-6 ">
1Analytics Layer â <span class="px-3 inline-block py-1 rounded-sm font-gilroy bg-[#e54887] text-white "> Pivot, SQL & Charts</span></h2><p class="sub-heading text-center max-w-4xl mx-auto lg:mb-8 mb-4">Our team combines deep technical expertise with real-world industry experience to deliver robust ERPNext implementations. We ensure seamless deployment, flexible customization, and smooth integrationsâfully aligned with your business needs.</p><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4"><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">PivotBuilder</h3><p class="text-gray-700 leading-relaxed text-sm">Accepts user pivot configuration (Group By fields, aggregates) from the Toolbar and constructs a SQL Abstract Syntax Tree (AST). Passes the AST to sql_generator.js for rendering.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">sql_generator.js</h3><p class="text-gray-700 leading-relaxed text-sm">Transforms the AST into a valid SQL string. The same generator is reused in the GenBI backend pipeline, ensuring consistent query semantics between client and server.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">DuckDB WASM</h3><p class="text-gray-700 leading-relaxed text-sm">Runs the generated SQL query entirely in-browser using @duckdb/duckdb-wasm. No server round-trip needed for analytical queries â sub-second results for typical datasets.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">JS Fallback</h3><p class="text-gray-700 leading-relaxed text-sm">If DuckDB WASM initialization fails (browser incompatibility, memory limits), the system falls back to plain JavaScript array iteration to compute GROUP BY aggregates.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">PlotEngine + DashboardManager</h3><p class="text-gray-700 leading-relaxed text-sm">PlotEngine renders results using Frappe Charts. DashboardManager arranges multiple chart widgets in a draggable dashboard layout for multi-metric views.</p></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-2" aria-labelledby="collaboration-layer-heading"><div class="container mx-auto px-4 md:px-8"><h2 id="collaboration-layer-heading" class="heading font-bold text-center font-gilroy text-brand-black mb-8 lg:mb-10">Collaboration Layer - <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">Real-Time Canvas Sync</span></h2><div class="grid xl:grid-cols-2 gap-8"><div class="grid lg:gap-10 gap-5"><div class="rounded-[2rem] bg-brand-primary-blue p-6 lg:p-8 text-white shadow-lg xl:min-h-[200px]"><h3 class="sub-heading font-bold font-gilroy mb-4">CollabDialog & CollabSidebar</h3><p class="leading-relaxed text-white/95">UI components that allow users to join a shared canvas session, see active collaborators, and view live cursors/edits. The sidebar displays session participants and their current selection state.</p></div><div class="rounded-[2rem] bg-white border border-blue-100 p-6 lg:p-8 shadow-sm"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-4">Socket.IO Client <span class="text-brand-primary-blue"><-></span> Server</h3><p class="text-gray-600 leading-relaxed mb-4">The client emits three key events:</p><ul class="list-disc pl-5 space-y-3 text-gray-700 leading-relaxed mb-5"><li><code class="bg-slate-100 px-1.5 py-0.5 rounded">canvas:join</code> - subscribes to a collaboration room</li><li><code class="bg-slate-100 px-1.5 py-0.5 rounded">canvas:update</code> - broadcasts a cell change delta to all room members</li><li><code class="bg-slate-100 px-1.5 py-0.5 rounded">canvas:leave</code> - unsubscribes and cleans up presence state</li></ul><p class="text-gray-700 leading-relaxed">The Node.js Socket.IO server (via <code class="bg-slate-100 px-1.5 py-0.5 rounded">canvas_collab.js</code>) routes messages to room members and calls <code class="bg-slate-100 px-1.5 py-0.5 rounded">canvas_session_realtime.py</code> to persist session state to the CanvasSession DocType in MariaDB.</p></div></div><div class="w-full md:w-fit snap-x snap-mandatory max-w-full min-w-0 flex overflow-x-auto scrollbar-visible gap-4 pb-4 pr-4 md:grid md:grid-cols-2 md:place-content-center md:gap-4 md:overflow-visible overflow-y-hidden md:pb-0 md:pr-0 md:max-w-3xl mx-auto mt-8 "><div class="w-[180px] snap-start snap-[120px] min-w-[180px] h-[180px] md:w-[220px] md:min-w-0 md:h-[220px] flex-shrink-0 rounded-full p-4 flex flex-col items-center justify-center text-center border-4 bg-brand-primary-blue border-white text-white"><h3 class="text-sm lg:text-base font-bold font-gilroy mb-3">User Edit</h3><p class="text-white/95 leading-relaxed text-sm lg:text-base md:max-w-[220px]">User modifies a cell on the shared canvas.</p></div><div class="w-[180px] snap-start snap-[120px] min-w-[180px] h-[180px] md:w-[220px] md:min-w-0 md:h-[220px] flex-shrink-0 rounded-full p-4 flex flex-col items-center justify-center text-center border-4 bg-brand-primary-blue border-white text-white"><h3 class="text-sm lg:text-base font-bold font-gilroy mb-3">Client Emit</h3><p class="text-white/95 leading-relaxed text-sm lg:text-base md:max-w-[220px]">Socket.IO client emits canvas:update event to server.</p></div><div class="w-[180px] snap-start snap-[120px] min-w-[180px] h-[180px] md:w-[220px] md:min-w-0 md:h-[220px] flex-shrink-0 rounded-full p-4 flex flex-col items-center justify-center text-center border-4 bg-brand-primary-blue border-white text-white"><h3 class="text-sm lg:text-base font-bold font-gilroy mb-3">Server Route</h3><p class="text-white/95 leading-relaxed text-sm lg:text-base md:max-w-[220px]">Node.js Socket.IO server routes update to the room.</p></div><div class="w-[180px] snap-start snap-[120px] min-w-[180px] h-[180px] md:w-[220px] md:min-w-0 md:h-[220px] flex-shrink-0 rounded-full p-4 flex flex-col items-center justify-center text-center border-4 bg-brand-primary-blue border-white text-white"><h3 class="text-sm lg:text-base font-bold font-gilroy mb-3">Collaborators Sync</h3><p class="text-white/95 leading-relaxed text-sm lg:text-base md:max-w-[220px]">All collaborators receive update and grid refreshes.</p></div></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1" aria-labelledby="export-manager-heading"><div class="container mx-auto px-8"><h2 id="export-manager-heading" class="heading f font-bold mb-4 text-center font-gilroy text-brand-black lg:mb-6 ">Export Manager & Field Picker</h2><p class="sub-heading text-center max-w-4xl mx-auto lg:mb-8 mb-4">This module provides powerful tools for selecting, organizing, and exporting data with precision and flexibility. It empowers users to define exactly what data they need and how they want to extract it.</p><div class="grid grid-cols-1 max-w-3xl mx-auto items-stretch md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2 gap-4"><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading font-bold flex-grow font-gilroy text-brand-black mb-3">ExportManager</h3><p class="text-gray-700 flex-grow leading-relaxed text-sm">Triggered from the Toolbar, ExportManager supports two output formats: <strong>XLSX</strong> (via the tree_export RPC defined in tree_import.py) and <strong>CSV</strong> (client-side generation). The XLSX export routes through frappe.call â A4 and uses Frappe's ORM to pull structured data before serializing.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading flex-grow font-bold font-gilroy text-brand-black mb-3">FieldPicker, CFManager & QueryFlowPanel</h3><p class="text-gray-700 flex-grow leading-relaxed text-sm">FieldPicker fetches DocType field metadata via get_meta RPC and lets users select which fields to display in the grid. CFManager manages conditional formatting rules stored client-side. QueryFlowPanel provides a visual query builder interface that feeds field selections into the DataManager and Analytics layers.</p></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1" aria-labelledby="orm-security-heading"><div class="container mx-auto px-8"><h2 id="orm-security-heading" class="heading f font-bold mb-4 text-center font-gilroy text-brand-black lg:mb-6 ">Frappe <span class="px-3 inline-block py-1 rounded-sm font-gilroy bg-[#e54887] text-white ">ORM & Security</span></h2><div class="grid grid-cols-1 container mx-auto md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2 gap-4"><div class="rounded-3xl primary-bg text-white border border-blue-100 shadow-lg p-6 "><h3 class="sub-heading font-bold flex-grow font-gilroy mb-3">frappe.has_permission()</h3><p class=" flex-grow leading-relaxed text-sm">Every <span class="bg-blue-700 p-2 rounded-md">frappe.get_list()</span> and <span class="bg-blue-700 p-2 rounded-md">frappe.get_meta()</span> call passes through the Frappe permission engine. Access is validated against the current user's roles and DocType-level permissions before any data is returned or modified. This is enforced at the ORM layer, not the API layer â providing defense in depth.</p></div><div class="grid gap-2"><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 "><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">frappe.get_list()</h3><p class="text-gray-700 flex-grow leading-relaxed text-sm">FieldPicker fetches DocType The primary ORM query method used by API groups A
11, A2, and A3. Accepts filters, fields, order_by, and limit parameters. Returns permission-filtered result sets from MariaDB.</p></div><div class="rounded-3xl flex flex-col bg-white border border-blue-100 shadow-lg p-6 "><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">frappe.get_meta()</h3><p class="text-gray-700 flex-grow leading-relaxed text-sm">Returns the full field schema for a DocType â field names, types, options, and link targets. Used by FieldPicker, DataManager, and the GenBI entity resolver.</p></div></div></div></div></section><section class=" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-2" aria-labelledby="request-lifecycle-heading"><div class="container mx-auto px-8"><h2 id="request-lifecycle-heading" class="heading f font-bold mb-4 text-center font-gilroy text-brand-black lg:mb-6 ">End-to-End Data Flow â <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">Full Request Lifecycle</span></h2><p class="sub-heading text-center max-w-4xl mx-auto mb-4">This lifecycle demonstrates how a single custom formula touch point spans all five system layers â browser rendering, formula evaluation, async RPC, ORM permission check, and database query â completing in a single round-trip.</p><div><div class="slick-slider solution-dashboard-slider slick-initialized"><div class="slick-list"><div class="slick-track" style="width:100%;left:0%"><div data-index="0" class="slick-slide slick-active slick-current" tabindex="-1" aria-hidden="false" style="outline:none;width:100%"><div><div class="px-2" tabindex="-1" style="width:100%;display:inline-block"><div class="rounded-xl flex items-center justify-center overflow-hidden "><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271200%27%20height=%27700%27/%3e"/></span><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="max-w-full max-h-full object-contain" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="/custom-apps/frappeXl/request-lifecycle.png" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="max-w-full max-h-full object-contain" loading="lazy"/></noscript></span></div></div></div></div></div></div></div></div></div></section><section class="py-7 sm:px-6 sm:py-9 lg:px-8 lg:py-12 bg-white" aria-labelledby="summary-takeaways-heading"><div class="container mx-auto px-4 sm:px-6 lg:px-8"><div class="grid grid-cols-1 gap-8 lg:gap-10 xl:grid-cols-2 xl:gap-12 items-center"><div><h2 id="summary-takeaways-heading" class="heading font-bold mb-4 text-center xl:text-left font-gilroy text-brand-black lg:mb-6">Summary & Takeaways</h2><p class="sub-heading text-center xl:text-left lg:mb-8 mb-4">Built on a robust multi-layer browser architecture, this system combines a powerful grid engine, in-browser analytics, and real-time collaboration to deliver seamless data experiences.</p><div class="grid grid-cols-1 sm:grid-cols-2 gap-4"><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-5 sm:p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">Four Browser Layers</h3><p class="text-gray-700 leading-relaxed text-sm">UI Shell â Grid Engine (HOT + HyperFormula) â Analytics (DuckDB WASM) â Collaboration (Socket.IO)</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-5 sm:p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">Clean Backend Contracts</h3><p class="text-gray-700 leading-relaxed text-sm"><span>All RPCs are whitelisted in <span class="bg-gray-200 p-1 rounded-lg">api.py</span> All data access is ORM- mediated with permission checks.Four custom DocTypes cover all persistence needs.</span></p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-5 sm:p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">AI-First Analytics</h3><p class="text-gray-700 leading-relaxed text-sm">GenBI pipeline (6 stages, Redis-backed multi-turn) enables natural language queries over any Frappe DocType with LLM-generated narrative output.</p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-5 sm:p-6 h-full"><h3 class="sub-heading font-bold font-gilroy text-brand-black mb-3">Resilient by Design</h3><p class="text-gray-700 leading-relaxed text-sm">DuckDB WASM â JS fallback, permission enforcement at ORM layer, and TTL-based session cleanup ensure graceful degradation and security at every level.</p></div></div></div><div class="relative w-full max-w-2xl mx-auto xl:max-w-none"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27700%27%20height=%27500%27/%3e"/></span><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="w-full max-w-[90vw] h-auto object-cover rounded-lg shadow-lg" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="FrappeXL Excel View dashboard with ERPNext data and analytics" src="/custom-apps/frappeXl/summery.png" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="w-full max-w-[90vw] h-auto object-cover rounded-lg shadow-lg" loading="lazy"/></noscript></span></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 bg-white" aria-labelledby="install-commands-heading"><div class="container mx-auto px-8 max-w-7xl"><div class="container mx-auto"><h2 id="install-commands-heading" class="heading text-center font-bold font-gilroy text-brand-black mb-4 lg:mb-6">Install in <span class="px-3 inline-block py-1 rounded-sm font-gilroy bg-[#e54887] text-white ">2 Commands</span></h2><p class="sub-heading text-center text-gray-text leading-relaxed max-w-5xl mx-auto mb-8 lg:mb-10">Excel View is fully <span class="px-3 inline-block py-1 rounded-sm font-gilroy primary-bg text-white ">open-source</span> and runs entirely on-premise. No cloud dependency, no licensing fees, no data leaving your infrastru
1cture. Compatible with vanilla Frappe and ERPNext.</p><div class="relative rounded-[2rem] section-bg-1 max-w-5xl mx-auto border border-gray-200 px-6 py-10 lg:px-8 lg:py-7 mb-10 lg:mb-12 overflow-hidden"><code class="block text-base md:text-xl font-mono text-brand-black break-all leading-relaxed"><span>bench </span><span class="text-[#ef4444]">get-app</span><span> </span><span class="text-[#4b5563]">https://github.com/Ujjwal-Aggrawal2279/Frappe-Excel </span></code><code class="block text-base md:text-xl font-mono text-brand-black break-all leading-relaxed mt-3">bench install-app excel_view</code><button title="copy" class="absolute top-3 right-3 lg:top-4 lg:right-4 p-2 rounded-lg text-lg text-gray-text hover:text-gray-600"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"></path></svg></button></div><div class="grid max-w-4xl mx-auto gap-8 md:grid-cols-2 mb-10"><div><div class="flex items-center justify-center md:justify-start gap-3 mb-4"><div class="flex h-10 w-10 items-center justify-center rounded-xl bg-[#fff4d6] text-[#f59e0b]"><svg class="w-5 h-5" viewBox="0 0 24 24" fill="currentColor"><path d="M18 8H17V6C17 3.24 14.76 1 12 1C9.24 1 7 3.24 7 6H9C9 4.34 10.34 3 12 3C13.66 3 15 4.34 15 6V8H6C4.9 8 4 8.9 4 10V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V10C20 8.9 19.1 8 18 8ZM18 20H6V10H18V20ZM12 17C13.1 17 14 16.1 14 15C14 13.9 13.1 13 12 13C10.9 13 10 13.9 10 15C10 16.1 10.9 17 12 17Z"></path></svg></div><h3 class="sub-heading text-center font-bold font-gilroy text-brand-black">Fully Open Source</h3></div><p class="text-sm text-center md:text-left lg:text-base text-gray-text leading-relaxed max-w-xl">MIT licensed. Fork it, extend it, contribute back. The entire codebase is available on GitHub.</p></div><div><div class="flex justify-center md:justify-start items-center gap-3 mb-4"><div class="flex h-10 w-10 items-center justify-center rounded-xl bg-[#ffe8d9] text-[#f97316]"><svg class="w-5 h-5" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1ZM12 21C8.13 19.91 5 16.54 5 11V6.3L12 3.19L19 6.3V11C19 16.54 15.87 19.91 12 21ZM15 9L10 14L8 12L9.41 10.59L10 11.17L13.59 7.58L15 9Z"></path></svg></div><h3 class="sub-heading text-center font-bold font-gilroy text-brand-black">Fully On-Premise</h3></div><p class="text-sm lg:text-base text-center md:text-left text-gray-text leading-relaxed max-w-xl">All data stays on your server. No external services, no telemetry, no surprises.</p></div></div><div class="flex text-center justify-center flex-col gap-2 text-gray-text sm:flex-row sm:items-center sm:gap-3"><span class="flex h-8 w-8 mx-auto md:mx-0 items-center justify-center rounded-full bg-[#fff4d6] text-[#eab308]"><svg class="w-4 h-4" viewBox="0 0 24 24" fill="currentColor"><path d="M12 17.27L18.18 21L16.54 13.97L22 9.24L14.81 8.63L12 2L9.19 8.63L2 9.24L7.46 13.97L5.82 21L12 17.27Z"></path></svg></span><p class="sub-heading leading-relaxed">Star the repo:<!-- --> <a href="https://github.com/Ujjwal-Aggrawal2279/Frappe-Excel" target="_blank" rel="noreferrer" class="font-bold text-brand-black break-all hover:text-brand-primary-blue transition-colors">github.com/Ujjwal-Aggrawal2279/Frappe-Excel</a></p></div></div></div></section><section class="sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 primary-bg text-white" aria-labelledby="thank-you-heading"><div class="container mx-auto px-8 max-w-7xl"><div class="container text-center mx-auto"><h2 id="thank-you-heading" class="main-heading font-bold font-gilroy mb-4 lg:mb-8">Thank You!</h2><p class="sub-heading mx-auto text-gray-text leading-relaxed max-w-4xl mb-4 lg:mb-8">We hope Excel View changes how your teams interact with Frappe data. We'd love your feedback, contributions, and questions.</p><div class="grid text-left max-w-4xl mx-auto gap-5 md:grid-cols-2 lg:grid-cols-3 lg:mb-8 mb-4"><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading text-center md:text-left font-bold font-gilroy text-brand-black mb-3">Chinmay Kulkarni</h3><p class="text-gray-700 leading-relaxed text-sm md:text-base"><div><p>[email protected]</p> <p>Hybrowlabs Technologies</p><p>Hybrowlabs Technologies</p></div></p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading text-center md:text-left font-bold font-gilroy text-brand-black mb-3">Ujjwal Aggrawal</h3><p class="text-gray-700 leading-relaxed text-sm md:text-base"><div><p>Hybrowlabs Technologies</p> <p>Hybrowlabs Technologies</p></div></p></div><div class="rounded-3xl bg-white border border-blue-100 shadow-lg p-6 h-full"><h3 class="sub-heading text-center md:text-left font-bold font-gilroy text-brand-black mb-3">The Project</h3><p class="text-gray-700 leading-relaxed text-sm md:text-base"><div><p>github.com/Ujjwal-Aggrawal2279/Frappe-Excel</p> <p>Issues, PRs, and stars welcome</p></div></p></div></div><div class="rounded-md mx-auto text-white px-6 py-6 lg:px-7 lg:py-8"><div class="flex flex-col justify-center gap-4 md:flex-row md:items-center"><p class="text-sm md:text-base leading-relaxed max-w-5xl">Questions? Let's discuss. We're happy to go deeper on any of the three demos or the architecture behind Excel View.</p></div></div><div class="flex flex-col sm:flex-row gap-4 justify-center"><a class="inline-flex items-center justify-center gap-2 text-white font-bold px-8 py-4 rounded-xl transition-all duration-300 hover:opacity-90 shadow-lg bg-[#e54887]" href="/contact">Talk to Hybrowlabs<svg class="w-4 h-4" viewBox="0 0 24 24" fill="currentColor"><path d="M4 11V13H16L10.5 18.5L11.92 19.92L19.84 12L11.92 4.08L10.5 5.5L16 11H4Z"></path></svg></a><a class="inline-flex items-center justify-center border-2 border-white text-white hover:bg-white hover:text-black px-8 py-4 rounded-xl transition-all duration-300" href="/custom-apps">Explore More Apps</a></div></div></div></section><footer aria-label="Website footer navigation and information"><div class="py-4 bg-white"><div class="container mx-auto px-8"><div class="border-t border-gray-200 pt-8 mb-4"><h3 class="text-lg font-bold font-gilroy text-brand-black mb-2">Industries We Serve</h3><div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 gap-3"><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-chemical-manufacturing">Chemical Manufacturing</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-textile-manufacturing-industries">Textile Manufacturing</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-food-beverage-manufacturing">Food & Beverage</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-pharmaceutical-manufacturing">Pharmaceutical</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-fashion-retail">Fashion Retail</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-healthcare-services">Healthcare Services</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-ecommerce-retail">E-commerce Retail</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-construction-services">Construction & Real Estate</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-education">Education</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-automotive-manufacturing">Automotive</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-electronics-manufacturing">Electronics</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-professional-services">Professional Services</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/industries/erpnext-for-trading">Import/Export Trading</a></div></div><div class="border-t border-gray-200 pt-8"><h3 class="text-lg font-bold font-gilroy text-brand-black mb-2">Our Global Presence</h3><div class="mb-8">
1<h4 class="text-base font-semibold font-gilroy text-gray-800 mb-4">India</h4><div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-3"><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/mumbai">Mumbai</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/delhi">Delhi</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/bangalore">Bangalore</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/chennai">Chennai</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/hyderabad">Hyderabad</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/pune">Pune</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/kolkata">Kolkata</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/ahmedabad">Ahmedabad</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/jaipur">Jaipur</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/lucknow">Lucknow</a></div></div><div class="mb-6"><h4 class="text-base font-semibold font-gilroy text-gray-800 mb-4">International</h4><div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3"><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/dubai">Dubai, UAE</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/abu-dhabi">Abu Dhabi, UAE</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/sharjah">Sharjah, UAE</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/new-yor
1k">New York, USA</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/san-francisco">San Francisco, USA</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/london">London, UK</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/singapore">Singapore</a><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none block py-1" href="/location/toronto">Toronto, Canada</a></div></div><div class="mt-2 mg-2 mb-4"><a class="inline-flex items-center text-sm font-medium hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" style="color:#0038ff" href="/location">View All Locations<svg class="ml-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></a></div></div><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 mb-2 md:mb-4 lg:mb-4"><div><img src="/images/black_logo.svg" alt="Hybrowlabs Technologies" class="w-40 h-8 mb-2"/><p class="text-sm text-gray-600 leading-relaxed mb-6 max-w-xs">Leading ERPNext & HRMS implementation experts helping businesses scale through digital transformation.</p><div><p class="text-sm font-semibold font-gilroy text-brand-black mb-2">Ready to Transform?</p><a class="inline-block text-white bg-brand-primary-blue px-6 py-2 rounded-lg text-sm font-semibold hover:opacity-90 transition-opacity focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" style="background-color:#0038ff" href="/contact">Schedule Free Demo</a></div></div><div><h3 class="text-lg mb-2 font-bold font-gilroy text-brand-black ">Quick Links</h3><ul class="grid grid-cols-2 gap-y-2 max-w-full"><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/about">About Us</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/services">Services</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/projects">Projects</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/integration">Integration</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/customer-resources/welcome">Customer Resources</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/contact">Careers</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/contact">Contact</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/blog">Blog</a></li></ul></div><div class="lg:col-span-2"><h3 class="text-lg font-bold font-gilroy text-brand-black mb-2">Core Services</h3><ul class="grid grid-cols-1 lg:grid-cols-2 gap-3"><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/erpnext-development-services">ERPNext Partners</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/services">ERPNext & HRMS Implementation</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/hrms/training-development">Training & Support</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/services/cloud-transformation">Cloud Hosting</a></li><li><a class="text-sm text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/tools">ERP Tools</a></li></ul></div></div></div></div><div class="py-2 border-t border-gray-200" style="background-color:#fafafa"><div class="container mx-auto px-8"><div class="flex flex-col md:flex-row md:justify-between md:items-center space-y-4 md:space-y-0"><div class="flex flex-col md:flex-row md:items-center space-y-3 md:space-y-0 md:space-x-8"><div><span class="text-sm text-gray-600 mr-4">Follow us:</span><div class="inline-flex space-x-3"><a href="https://www.linkedin.com/company/hybrowlabs-technologies/" target="_blank" rel="noopener noreferrer" class="hover:opacity-80 transition-opacity duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" aria-label="Follow us on LinkedIn"><img src="/images/ln.svg" alt="LinkedIn icon" class="w-5 h-5"/></a><a href="https://www.instagram.com/hybrowlabs/" target="_blank" rel="noopener noreferrer" class="hover:opacity-80 transition-opacity duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" aria-label="Follow us on Instagram"><img src="/images/ig.svg" alt="Instagram icon" class="w-5 h-5"/></a><a href="https://www.facebook.com/hybrowlabs/" target="_blank" rel="noopener noreferrer" class="hover:opacity-80 transition-opacity duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" aria-label="Follow us on Facebook"><img src="/images/fb.svg" alt="Facebook icon" class="w-5 h-5"/></a><a href="https://www.youtube.com/@Hybrowlabs_Technologies" target="_blank" rel="noopener noreferrer" class="hover:opacity-80 transition-opacity duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" aria-label="Follow us on YouTube"><img src="/images/yt.svg" alt="YouTube icon" class="w-5 h-5"/></a></div></div><p class="text-sm text-gray-600">ð Pune, India ⢠24/7 Global Support</p></div><div class="flex flex-col md:items-end space-y-2"><div class="flex flex-wrap gap-x-4 gap-y-1 text-sm"><a class="text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/legal/privacy-policy">Privacy Policy</a><span class="text-gray-600" aria-hidden="true">â¢</span><a class="text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/legal/terms-and-conditions">Terms</a><span class="text-gray-600" aria-hidden="true">â¢</span><a class="text-gray-700 hover:text-blue-600 hover:underline transition-colors duration-200 focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:outline-none" href="/html-sitemap">Sitemap</a></div><p class="text-xs text-gray-500">© 2025 Hybrowlabs Technologies. All rights reserved.</p></div></div></div></div></footer></div>
1<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"header":{"value":{"data":{"menus":[{"label":"About Us","type":"simple","menuoptions":[],"url":"/about"},{"label":"Processes","type":"simple","url":"/processes"},{"label":"Services","type":"simple","url":"/services"},{"label":"Projects","type":"simple","url":"/projects"},{"label":"ERPNext","type":"simple","menuoptions":[],"url":"/ERPnext-development-services"},{"label":"Industries","type":"simpledropdown","url":"","menuoptions":[{"title":"Auto Mobile","category":"","url":"/development-services-for-automobile-industry"},{"category":"","title":"SaaS","url":"/development-services-for-Saas-Industry"},{"category":"","title":"E-Commerce","url":"/development-services-for-ecommerce-industry"},{"category":"","title":"Education","url":"/development-services-for-ed-tech-industry"},{"category":"","title":"Healthcare","url":"/software-solutions-for-healthcare-industry"},{"category":"","title":"Sports","url":"/Development-services-for-sports-industry"},{"category":"","title":"Retail","url":"/solutions-for-retail-industry"},{"category":"","title":"Manufacturing","url":"/development-services-for-manufacturing-industry"}]}]}}}},"__N_SSG":true},"page":"/custom-apps/excel-view-for-frappe","query":{},"buildId":"2H33HB-Be57AO1hwMtuh2","isFallback":false,"dynamicIds":[84936,82813,21029,74289,75483,57829,91487,51800,72701,59497],"gsp":true,"scriptLoader":[]}</script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.