feat(services): add keyword-focused service landing pages
Deploy to Production / Build & Verify (push) Has been cancelled
Deploy to Production / Pre-Deploy Tests (push) Has been cancelled
Deploy to Production / Deploy to Railway (push) Has been cancelled
Deploy to Production / Deploy to Render (push) Has been cancelled
Deploy to Production / Deploy to VPS (PM2) (push) Has been cancelled
Deploy to Production / Deploy to Fly.io (push) Has been cancelled
Deploy to Production / Post-Deploy Verification (push) Has been cancelled
Deploy to Production / Notify on Failure (push) Has been cancelled
E2E Test Suite / Smoke Tests (P0) (push) Has been cancelled
E2E Test Suite / Critical User Journeys (push) Has been cancelled
E2E Test Suite / API Integration Tests (push) Has been cancelled
E2E Test Suite / Form Interaction Tests (push) Has been cancelled
E2E Test Suite / Destructive & Chaos Tests (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (chromium) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (firefox) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (webkit) (push) Has been cancelled
E2E Test Suite / Mobile Device Tests (push) Has been cancelled
E2E Test Suite / Security Header Tests (push) Has been cancelled
E2E Test Suite / Test Report Summary (push) Has been cancelled
Ping Search Engines / Notify Search Engines (push) Failing after 13m25s
Deploy to Production / Build & Verify (push) Has been cancelled
Deploy to Production / Pre-Deploy Tests (push) Has been cancelled
Deploy to Production / Deploy to Railway (push) Has been cancelled
Deploy to Production / Deploy to Render (push) Has been cancelled
Deploy to Production / Deploy to VPS (PM2) (push) Has been cancelled
Deploy to Production / Deploy to Fly.io (push) Has been cancelled
Deploy to Production / Post-Deploy Verification (push) Has been cancelled
Deploy to Production / Notify on Failure (push) Has been cancelled
E2E Test Suite / Smoke Tests (P0) (push) Has been cancelled
E2E Test Suite / Critical User Journeys (push) Has been cancelled
E2E Test Suite / API Integration Tests (push) Has been cancelled
E2E Test Suite / Form Interaction Tests (push) Has been cancelled
E2E Test Suite / Destructive & Chaos Tests (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (chromium) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (firefox) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (webkit) (push) Has been cancelled
E2E Test Suite / Mobile Device Tests (push) Has been cancelled
E2E Test Suite / Security Header Tests (push) Has been cancelled
E2E Test Suite / Test Report Summary (push) Has been cancelled
Ping Search Engines / Notify Search Engines (push) Failing after 13m25s
Add five SEO landing pages under /services that reuse existing section components (GuaranteeBand, InlineLeadForm) and a new prop-driven ServiceFaq: - /services/custom-erp-development - /services/university-erp - /services/government-it-solutions-gem-vendor - /services/police-management-system - /services/react-native-app-development Each page has 1,000+ words of specific copy, a real portfolio-backed case study (IIT Patna, PSCL Bihar, Police MS, Pophealth), a comparison table / stat block, a page-specific FAQ that feeds the FAQPage schema, and a CTA into the existing inline lead form (/api/contact). Service + FAQ + BreadcrumbList schema are passed into SEO.astro; the visible FAQ accordion does not duplicate the JSON-LD. All company stats match the canonical site-wide set. Wire the pages into navigation: deep-dive links from the /services detail sections, a new "Solutions" group on the HTML sitemap, and entries in both the dynamic sitemap.xml.ts and the served static public/sitemap.xml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
a21aa99e90
commit
22251ea82e
@@ -15,6 +15,31 @@
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/services/custom-erp-development/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/services/university-erp/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/services/government-it-solutions-gem-vendor/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/services/police-management-system/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/services/react-native-app-development/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://workroot.in/portfolio/</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
---
|
||||
// ServiceFaq — reusable, prop-driven FAQ accordion for the keyword-focused
|
||||
// service landing pages (e.g. /services/custom-erp-development).
|
||||
//
|
||||
// IMPORTANT: this component renders only the VISIBLE accordion. It does NOT
|
||||
// emit FAQPage JSON-LD. The owning page is expected to pass the same `faqs`
|
||||
// array into <SEO faq={faqs} />, which emits exactly one FAQPage node. Keeping
|
||||
// schema emission in SEO.astro (and out of here) guarantees a single FAQPage
|
||||
// per page even when several of these accordions could theoretically render.
|
||||
//
|
||||
// Visual + a11y behaviour mirrors HomepageFaq.astro (single-open accordion,
|
||||
// real <button> questions, aria-expanded, grid-rows expand with no layout
|
||||
// shift) but uses a `svc-faq-*` class namespace so it never collides with the
|
||||
// homepage FAQ script if both ever appear together.
|
||||
|
||||
interface FaqItem {
|
||||
question: string;
|
||||
answer: string;
|
||||
}
|
||||
|
||||
interface Props {
|
||||
faqs: FaqItem[];
|
||||
eyebrow?: string;
|
||||
heading?: string;
|
||||
subheading?: string;
|
||||
}
|
||||
|
||||
const {
|
||||
faqs,
|
||||
eyebrow = 'Before you reach out',
|
||||
heading = 'Frequently asked questions',
|
||||
subheading = 'Straight answers on scope, cost, timelines, ownership, and how we work.',
|
||||
} = Astro.props;
|
||||
---
|
||||
|
||||
<section
|
||||
class="py-20 sm:py-24 bg-secondary-50 dark:bg-secondary-950 border-t border-secondary-100 dark:border-secondary-800"
|
||||
aria-labelledby="svc-faq-heading"
|
||||
>
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<div class="text-center mb-12 sm:mb-16" data-animate="fade-up">
|
||||
<span
|
||||
class="inline-block px-4 py-2 rounded-full bg-accent-50 dark:bg-accent-900/30 text-accent-700 dark:text-accent-300 text-xs sm:text-sm font-bold uppercase tracking-wider mb-4"
|
||||
>
|
||||
{eyebrow}
|
||||
</span>
|
||||
<h2
|
||||
id="svc-faq-heading"
|
||||
class="text-3xl sm:text-4xl lg:text-5xl font-bold text-secondary-900 dark:text-secondary-100 mb-4 leading-tight"
|
||||
>
|
||||
{heading}
|
||||
</h2>
|
||||
<p class="text-base sm:text-lg text-secondary-600 dark:text-secondary-300">
|
||||
{subheading}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<ul class="space-y-3 sm:space-y-4" role="list">
|
||||
{
|
||||
faqs.map((item, index) => (
|
||||
<li
|
||||
class="bg-white dark:bg-secondary-800 rounded-2xl border border-secondary-200 dark:border-secondary-700 hover:border-primary-300 dark:hover:border-primary-500/60 shadow-sm transition-colors duration-200 overflow-hidden"
|
||||
>
|
||||
<button
|
||||
type="button"
|
||||
class="svc-faq-question w-full text-left px-5 sm:px-7 py-5 sm:py-6 flex items-start justify-between gap-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400 focus-visible:ring-offset-2 focus-visible:ring-offset-secondary-50 dark:focus-visible:ring-offset-secondary-950 rounded-2xl"
|
||||
aria-expanded="false"
|
||||
aria-controls={`svc-faq-answer-${index}`}
|
||||
id={`svc-faq-question-${index}`}
|
||||
>
|
||||
<span class="font-semibold text-base sm:text-lg text-secondary-900 dark:text-secondary-100 leading-snug">
|
||||
{item.question}
|
||||
</span>
|
||||
<svg
|
||||
class="svc-faq-icon w-5 h-5 sm:w-6 sm:h-6 mt-0.5 sm:mt-1 text-primary-500 dark:text-primary-400 flex-shrink-0 transition-transform duration-300"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M19 9l-7 7-7-7" />
|
||||
</svg>
|
||||
</button>
|
||||
<div
|
||||
class="svc-faq-answer grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-out"
|
||||
id={`svc-faq-answer-${index}`}
|
||||
role="region"
|
||||
aria-labelledby={`svc-faq-question-${index}`}
|
||||
>
|
||||
<div class="overflow-hidden">
|
||||
<p class="px-5 sm:px-7 pb-5 sm:pb-6 -mt-1 text-sm sm:text-base text-secondary-600 dark:text-secondary-300 leading-relaxed">
|
||||
{item.answer}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
|
||||
<p class="text-center text-sm sm:text-base text-secondary-600 dark:text-secondary-400 mt-10 sm:mt-12">
|
||||
Have a different question?{' '}
|
||||
<a
|
||||
href="#inline-lead-form"
|
||||
class="font-semibold text-primary-600 dark:text-primary-300 hover:underline"
|
||||
>
|
||||
Ask us directly →
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.svc-faq-answer[data-expanded='true'] {
|
||||
grid-template-rows: 1fr;
|
||||
}
|
||||
|
||||
.svc-faq-question[aria-expanded='true'] .svc-faq-icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.svc-faq-answer,
|
||||
.svc-faq-icon {
|
||||
transition: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script is:inline>
|
||||
(function () {
|
||||
var buttons = document.querySelectorAll('.svc-faq-question');
|
||||
if (!buttons.length) return;
|
||||
|
||||
function setExpanded(button, expanded) {
|
||||
button.setAttribute('aria-expanded', expanded ? 'true' : 'false');
|
||||
var answerId = button.getAttribute('aria-controls');
|
||||
if (!answerId) return;
|
||||
var answer = document.getElementById(answerId);
|
||||
if (!answer) return;
|
||||
if (expanded) {
|
||||
answer.setAttribute('data-expanded', 'true');
|
||||
} else {
|
||||
answer.removeAttribute('data-expanded');
|
||||
}
|
||||
}
|
||||
|
||||
buttons.forEach(function (button) {
|
||||
button.addEventListener('click', function () {
|
||||
var isOpen = button.getAttribute('aria-expanded') === 'true';
|
||||
buttons.forEach(function (other) {
|
||||
if (other !== button) setExpanded(other, false);
|
||||
});
|
||||
setExpanded(button, !isOpen);
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
@@ -246,6 +246,23 @@ const caseStudies = [
|
||||
},
|
||||
];
|
||||
|
||||
// Dedicated, keyword-focused landing pages that deep-dive a service. Keyed by
|
||||
// the service `id` so each detail section can surface its related page(s)
|
||||
// directly in the on-page navigation flow.
|
||||
const landingPages: Record<string, { label: string; href: string }[]> = {
|
||||
'government-systems': [
|
||||
{ label: 'Government IT & GeM vendor', href: '/services/government-it-solutions-gem-vendor' },
|
||||
{ label: 'Police Management System', href: '/services/police-management-system' },
|
||||
],
|
||||
'erp-solutions': [
|
||||
{ label: 'Custom ERP development', href: '/services/custom-erp-development' },
|
||||
{ label: 'University ERP', href: '/services/university-erp' },
|
||||
],
|
||||
'mobile-development': [
|
||||
{ label: 'React Native app development', href: '/services/react-native-app-development' },
|
||||
],
|
||||
};
|
||||
|
||||
// Process steps
|
||||
const processSteps = [
|
||||
{
|
||||
@@ -545,6 +562,28 @@ const processSteps = [
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
{/* Deep-dive landing pages related to this service */}
|
||||
{landingPages[service.id] && (
|
||||
<div class="mt-6 pt-5 border-t border-secondary-200 dark:border-secondary-700">
|
||||
<p class="text-xs font-semibold text-secondary-400 dark:text-secondary-500 uppercase tracking-wider mb-2">Explore in depth</p>
|
||||
<ul class="flex flex-wrap gap-x-5 gap-y-2">
|
||||
{landingPages[service.id].map((page) => (
|
||||
<li>
|
||||
<a
|
||||
href={page.href}
|
||||
class={`inline-flex items-center gap-1.5 text-sm font-semibold ${service.iconColor} hover:underline focus:outline-none focus:underline`}
|
||||
>
|
||||
{page.label}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<!-- Visual element -->
|
||||
|
||||
@@ -0,0 +1,307 @@
|
||||
---
|
||||
// Custom ERP Development — keyword-focused service landing page.
|
||||
// Reuses the shared section components (GuaranteeBand, InlineLeadForm,
|
||||
// ServiceFaq) and feeds Service + FAQ schema into SEO.astro.
|
||||
//
|
||||
// All company stats mirror the canonical site-wide set used in
|
||||
// ProofNumbers.astro, /portfolio, and SEO.astro — 20+ projects · 11 districts ·
|
||||
// 50,000+ records · 99.9% uptime · 8+ years. Case-study numbers are taken
|
||||
// verbatim from the IIT Patna and Bihar government case studies on /portfolio.
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import SEO from '../../components/SEO.astro';
|
||||
import GuaranteeBand from '../../components/GuaranteeBand.astro';
|
||||
import InlineLeadForm from '../../components/InlineLeadForm.astro';
|
||||
import ServiceFaq from '../../components/ServiceFaq.astro';
|
||||
|
||||
const pageTitle = 'Custom ERP Development Services';
|
||||
const pageDescription =
|
||||
'Custom ERP development by WorkRoot — bespoke enterprise systems on Spring Boot, Angular & Next.js. Already running for IIT Patna and across 11 government districts. Get a free scope.';
|
||||
|
||||
const serviceName = 'Custom ERP Development';
|
||||
const serviceDescription =
|
||||
'Bespoke ERP and enterprise resource planning systems built around your real workflows — modules for operations, personnel, finance, inventory, reporting and role-based access. Delivered with Spring Boot, Angular, and Next.js, and proven in university and multi-district government deployments.';
|
||||
|
||||
// Capabilities — what a WorkRoot custom ERP build typically covers.
|
||||
const modules = [
|
||||
{ title: 'Operations & workflow', body: 'Model your real approval chains, hand-offs, and SLAs instead of bending the business to a rigid template.' },
|
||||
{ title: 'Role-based access control', body: 'Granular permissions per role, department, and district — the same RBAC layer running in our government deployments.' },
|
||||
{ title: 'Personnel & HR', body: 'Staff records, duty rosters, leave, and audit trails — the backbone of our 15,000+ officer police deployment.' },
|
||||
{ title: 'Inventory & assets', body: 'Stock, procurement, and asset lifecycle tracking with reconciliation and low-stock alerting.' },
|
||||
{ title: 'Dashboards & reporting', body: 'Real-time operational dashboards and scheduled exports for leadership oversight and compliance.' },
|
||||
{ title: 'Integrations & APIs', body: 'Clean REST APIs so your ERP talks to payment gateways, SMS/email, and existing legacy systems.' },
|
||||
];
|
||||
|
||||
// Comparison table — off-the-shelf ERP vs a WorkRoot custom build.
|
||||
const comparison = [
|
||||
{ dimension: 'Fit to your workflow', offShelf: 'You adapt your process to the software', custom: 'The software is built around your process' },
|
||||
{ dimension: 'Per-seat licensing', offShelf: 'Recurring per-user fees that scale with headcount', custom: 'You own the source — no per-seat tax' },
|
||||
{ dimension: 'Source-code ownership', offShelf: 'Vendor-locked, closed source', custom: 'Full IP transfer on delivery' },
|
||||
{ dimension: 'Customisation', offShelf: 'Limited to vendor-exposed settings', custom: 'Any module, any rule, any report' },
|
||||
{ dimension: 'Data residency', offShelf: 'Often the vendor’s cloud / region', custom: 'Your servers, your region, your control' },
|
||||
{ dimension: 'Hosting model', offShelf: 'SaaS only', custom: 'On-prem, your VPC, or managed by us' },
|
||||
];
|
||||
|
||||
const stats = [
|
||||
{ value: '5+', label: 'ERP & enterprise deployments' },
|
||||
{ value: '20,000+', label: 'Users across systems' },
|
||||
{ value: '11', label: 'Districts running our platforms' },
|
||||
{ value: '99.9%', label: 'Uptime on critical systems' },
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
question: 'How much does a custom ERP cost?',
|
||||
answer:
|
||||
'Custom ERP engagements typically run ₹2,00,000–₹15,00,000 depending on the number of modules, user roles, and integrations. We offer fixed-price quotes for well-defined scopes and time-and-materials for evolving ones. Every estimate is free and itemised.',
|
||||
},
|
||||
{
|
||||
question: 'How long does it take to build a custom ERP?',
|
||||
answer:
|
||||
'Most ERP builds ship a usable first module in 6–8 weeks and reach full rollout in 3–6 months. We work in 2-week sprints with a live staging environment from day one, so you see and steer working software early rather than waiting for a big-bang launch.',
|
||||
},
|
||||
{
|
||||
question: 'Do we own the source code?',
|
||||
answer:
|
||||
'Yes. Full IP transfer is included — you receive the repositories, deployment access, and documentation on delivery. There are no per-seat licence fees, and you are free to host, extend, or hand the system to another team at any time.',
|
||||
},
|
||||
{
|
||||
question: 'Can you integrate with our existing systems?',
|
||||
answer:
|
||||
'Yes. We build clean REST APIs and have integrated ERPs with payment gateways, SMS and email providers, government identity systems, and legacy MySQL/PostgreSQL databases. If your current tool can export data, we can migrate and connect to it.',
|
||||
},
|
||||
{
|
||||
question: 'Is a custom ERP secure enough for sensitive data?',
|
||||
answer:
|
||||
'Security is built into every layer: role-based access control, encrypted data at rest and in transit, full audit logging, and OWASP-aligned reviews. The same architecture currently runs a Bihar government police platform across 11 districts under strict security compliance.',
|
||||
},
|
||||
{
|
||||
question: 'What technology stack do you use for ERP?',
|
||||
answer:
|
||||
'We build on Spring Boot for the backend, Angular or Next.js for the admin and user interfaces, and PostgreSQL or MySQL for the data layer — the same stack behind the IIT Patna University Management System and our multi-district government deployments.',
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={pageTitle} description={pageDescription}>
|
||||
<SEO
|
||||
slot="head"
|
||||
type="Service"
|
||||
breadcrumbs={[
|
||||
{ name: 'Home', url: '/' },
|
||||
{ name: 'Services', url: '/services' },
|
||||
{ name: 'Custom ERP Development', url: '/services/custom-erp-development' },
|
||||
]}
|
||||
service={{ name: serviceName, description: serviceDescription }}
|
||||
faq={faqs}
|
||||
/>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-20 lg:py-28 overflow-hidden">
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
|
||||
<div class="absolute top-1/4 left-0 w-80 h-80 bg-primary-500/10 rounded-full blur-3xl animate-pulse-slower"></div>
|
||||
<div class="absolute bottom-0 right-1/4 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl animate-pulse-slow"></div>
|
||||
<div class="absolute inset-0 opacity-5" style="background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
</div>
|
||||
<div class="container-wrapper relative">
|
||||
<div class="max-w-3xl">
|
||||
<nav aria-label="Breadcrumb" class="mb-6">
|
||||
<ol class="flex flex-wrap items-center gap-2 text-sm text-secondary-400">
|
||||
<li><a href="/" class="hover:text-primary-300">Home</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li><a href="/services" class="hover:text-primary-300">Services</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li class="text-secondary-200" aria-current="page">Custom ERP Development</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-6 text-sm font-semibold text-primary-300 bg-primary-500/10 rounded-full border border-primary-500/20">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-primary-400 animate-pulse" aria-hidden="true"></span>
|
||||
ERP & Enterprise Systems
|
||||
</span>
|
||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 leading-tight">
|
||||
Custom ERP development that fits
|
||||
<span class="text-transparent bg-clip-text bg-gradient-to-r from-primary-400 via-primary-300 to-accent-400"> your workflow, not a template.</span>
|
||||
</h1>
|
||||
<p class="text-lg sm:text-xl text-secondary-300 max-w-2xl mb-8 leading-relaxed">
|
||||
Replace scattered spreadsheets and disconnected tools with one bespoke system your team actually trusts —
|
||||
built on Spring Boot, Angular, and Next.js, and already running for IIT Patna and across 11 government districts.
|
||||
</p>
|
||||
<div class="flex flex-col sm:flex-row gap-4">
|
||||
<a href="#inline-lead-form" data-cta="erp-hero-primary" class="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-primary-500 to-primary-600 px-8 py-4 text-base font-bold text-white shadow-lg hover:shadow-xl hover:scale-105 transition-all focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-offset-2 focus:ring-offset-secondary-900">
|
||||
Get my free ERP scope
|
||||
<svg class="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="tel:+919561417403" data-cta="erp-hero-call" class="inline-flex items-center justify-center rounded-xl border-2 border-white/30 bg-white/5 px-8 py-4 text-base font-bold text-white hover:bg-white/10 transition-all focus:outline-none focus:ring-2 focus:ring-white/50">
|
||||
Talk to an engineer
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Stat block -->
|
||||
<div class="mt-14 grid grid-cols-2 sm:grid-cols-4 gap-4 lg:gap-6">
|
||||
{stats.map((stat) => (
|
||||
<div class="bg-white/5 backdrop-blur-sm rounded-xl p-4 lg:p-5 text-center border border-white/10">
|
||||
<p class="text-2xl lg:text-3xl font-bold text-white">{stat.value}</p>
|
||||
<p class="text-secondary-400 text-sm mt-1">{stat.label}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Overview / prose -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<span class="text-primary-500 dark:text-primary-400 font-semibold text-sm uppercase tracking-wider">What we build</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mt-2 mb-6">Enterprise software shaped around how you actually operate</h2>
|
||||
<div class="space-y-5 text-lg text-secondary-700 dark:text-secondary-300 leading-relaxed">
|
||||
<p>
|
||||
An off-the-shelf ERP forces every organisation into the same boxes. That works until your approval chain, your
|
||||
district structure, or your compliance rules don’t fit the template — and then you are paying per seat for software
|
||||
your team quietly works around in spreadsheets. A custom ERP flips that relationship: the system is built around the
|
||||
way you already run, so adoption is high and the workarounds disappear.
|
||||
</p>
|
||||
<p>
|
||||
WorkRoot has been delivering bespoke enterprise systems since 2022, and the engineers on our team carry 8+ years of
|
||||
experience building software that has to stay up. We have shipped enterprise platforms for an IIT, for a state
|
||||
government across 11 districts, and for private operators handling tens of thousands of users. Across those systems
|
||||
we manage <strong>50,000+ records</strong> and hold <strong>99.9% uptime</strong> on the deployments that cannot
|
||||
afford to go dark.
|
||||
</p>
|
||||
<p>
|
||||
Every engagement starts with your workflow, not our codebase. We map the real process — who requests what, who
|
||||
approves it, where it gets stuck — and then build modules that remove the friction: operations and workflow,
|
||||
role-based access, personnel and HR, inventory and assets, finance, and the dashboards leadership needs to see it
|
||||
all. The result is one system of record instead of five disconnected tools, and a single source of truth your
|
||||
auditors will thank you for.
|
||||
</p>
|
||||
<p>
|
||||
Because the system is yours, there are no per-seat licence fees and no vendor lock-in. We hand over the full source
|
||||
code, the repositories, the deployment pipeline, and the documentation. You can host it on-premise, in your own
|
||||
cloud account, or let us run it for you under a maintenance retainer — the choice stays with you.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Modules grid -->
|
||||
<section class="py-16 lg:py-24 bg-secondary-50 dark:bg-secondary-800/50">
|
||||
<div class="container-wrapper">
|
||||
<div class="text-center max-w-2xl mx-auto mb-12">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Modules we build into custom ERPs</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Mix and match the pieces your operation needs — each one production-proven in a live deployment.</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{modules.map((m) => (
|
||||
<div class="bg-white dark:bg-secondary-800 rounded-2xl p-7 border border-secondary-100 dark:border-secondary-700 shadow-sm hover:shadow-lg transition-shadow">
|
||||
<div class="w-12 h-12 rounded-xl bg-primary-50 dark:bg-primary-900/30 text-primary-600 dark:text-primary-300 flex items-center justify-center mb-4" aria-hidden="true">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-secondary-900 dark:text-secondary-100 mb-2">{m.title}</h3>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-sm leading-relaxed">{m.body}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Comparison table -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Off-the-shelf ERP vs a custom build</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Where a bespoke system pays you back.</p>
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-2xl border border-secondary-200 dark:border-secondary-700 shadow-sm">
|
||||
<table class="w-full text-left border-collapse min-w-[640px]">
|
||||
<caption class="sr-only">Comparison of off-the-shelf ERP software versus a custom ERP built by WorkRoot</caption>
|
||||
<thead>
|
||||
<tr class="bg-secondary-50 dark:bg-secondary-800">
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-700 dark:text-secondary-200">Dimension</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-500 dark:text-secondary-400">Off-the-shelf ERP</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-primary-700 dark:text-primary-300">Custom ERP (WorkRoot)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{comparison.map((row, i) => (
|
||||
<tr class={i % 2 === 0 ? 'bg-white dark:bg-secondary-900' : 'bg-secondary-50/50 dark:bg-secondary-800/40'}>
|
||||
<th scope="row" class="px-5 py-4 text-sm font-semibold text-secondary-900 dark:text-secondary-100 align-top">{row.dimension}</th>
|
||||
<td class="px-5 py-4 text-sm text-secondary-600 dark:text-secondary-400 align-top">{row.offShelf}</td>
|
||||
<td class="px-5 py-4 text-sm text-secondary-700 dark:text-secondary-200 align-top font-medium">
|
||||
<span class="inline-flex items-start gap-2">
|
||||
<svg class="w-4 h-4 mt-0.5 flex-shrink-0 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
{row.custom}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Case study -->
|
||||
<section class="py-16 lg:py-24 bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-5 text-sm font-semibold text-purple-300 bg-purple-500/10 rounded-full border border-purple-500/20">Case study · Enterprise ERP</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-white mb-4">University Management System — IIT Patna</h2>
|
||||
<p class="text-lg text-secondary-300 leading-relaxed mb-8">
|
||||
IIT Patna needed a single platform to replace fragmented legacy systems across admissions, course registration,
|
||||
examination scheduling, grade management, and faculty administration. We built an end-to-end ERP on a
|
||||
<strong class="text-white"> Next.js</strong> front end with a <strong class="text-white">Spring Boot</strong> backend
|
||||
and a <strong class="text-white">MySQL</strong> data layer — designed for scalability and high availability across the
|
||||
entire academic community.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-4 mb-8">
|
||||
{[{ v: '3,000+', l: 'Students served' }, { v: '500+', l: 'Courses managed' }, { v: '200+', l: 'Faculty onboarded' }].map((s) => (
|
||||
<div class="bg-white/5 border border-white/10 rounded-xl p-5 text-center">
|
||||
<p class="text-2xl sm:text-3xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs sm:text-sm mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<blockquote class="border-l-4 border-primary-500 pl-5 text-secondary-200 italic leading-relaxed">
|
||||
“WorkRoot delivered our University Management System for IIT Patna on time and within budget. The Next.js + Spring Boot
|
||||
architecture is robust and scalable. They are a reliable technology partner for complex enterprise projects.”
|
||||
<footer class="mt-3 not-italic text-sm text-secondary-400">— Dilip Raj, Director, MOC Soft Technologies Pvt Ltd</footer>
|
||||
</blockquote>
|
||||
<div class="mt-8 flex flex-wrap gap-4">
|
||||
<a href="/portfolio#university-management-iitp" class="inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200">
|
||||
Read the full case study
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="/services/university-erp" class="inline-flex items-center gap-2 text-secondary-300 font-semibold hover:text-white">
|
||||
Explore our University ERP page
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" /></svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- More deployments strip -->
|
||||
<section class="py-12 bg-secondary-50 dark:bg-secondary-800/50 border-y border-secondary-100 dark:border-secondary-800">
|
||||
<div class="container-wrapper">
|
||||
<p class="text-center text-sm font-semibold uppercase tracking-wider text-secondary-500 dark:text-secondary-400 mb-6">More enterprise systems we’ve shipped</p>
|
||||
<div class="flex flex-wrap items-center justify-center gap-3">
|
||||
<a href="/services/police-management-system" class="px-4 py-2 rounded-full bg-white dark:bg-secondary-800 border border-secondary-200 dark:border-secondary-700 text-sm font-medium text-secondary-700 dark:text-secondary-300 hover:border-primary-300 transition-colors">Police Management System · 11 districts</a>
|
||||
<a href="/services/government-it-solutions-gem-vendor" class="px-4 py-2 rounded-full bg-white dark:bg-secondary-800 border border-secondary-200 dark:border-secondary-700 text-sm font-medium text-secondary-700 dark:text-secondary-300 hover:border-primary-300 transition-colors">SCMS for PSCL, Bihar Govt · 50,000+ records</a>
|
||||
<a href="/portfolio#plnr-financing" class="px-4 py-2 rounded-full bg-white dark:bg-secondary-800 border border-secondary-200 dark:border-secondary-700 text-sm font-medium text-secondary-700 dark:text-secondary-300 hover:border-primary-300 transition-colors">PLNR Financing · 5,000+ users</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ServiceFaq
|
||||
faqs={faqs}
|
||||
heading="Custom ERP — your questions answered"
|
||||
subheading="Cost, timelines, ownership, integrations, and security for a bespoke ERP build."
|
||||
/>
|
||||
|
||||
<GuaranteeBand />
|
||||
<InlineLeadForm />
|
||||
</BaseLayout>
|
||||
@@ -0,0 +1,307 @@
|
||||
---
|
||||
// Government IT Solutions / GeM Vendor — keyword-focused service landing page.
|
||||
// Reuses GuaranteeBand, InlineLeadForm and ServiceFaq, and feeds Service + FAQ
|
||||
// schema into SEO.astro.
|
||||
//
|
||||
// Canonical stats mirror ProofNumbers.astro / /portfolio / SEO.astro:
|
||||
// 20+ projects · 11 districts · 50,000+ records · 99.9% uptime · 8+ years.
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import SEO from '../../components/SEO.astro';
|
||||
import GuaranteeBand from '../../components/GuaranteeBand.astro';
|
||||
import InlineLeadForm from '../../components/InlineLeadForm.astro';
|
||||
import ServiceFaq from '../../components/ServiceFaq.astro';
|
||||
|
||||
const pageTitle = 'Government IT Solutions & GeM Vendor';
|
||||
const pageDescription =
|
||||
'GeM-empanelled government IT vendor. WorkRoot builds secure, multi-district public-service platforms — live across 11 Bihar districts at 99.9% uptime. Get a free scope for your tender.';
|
||||
|
||||
const serviceName = 'Government IT Solutions';
|
||||
const serviceDescription =
|
||||
'Secure, compliant government IT systems for public bodies and smart-city missions — multi-district deployment, role-based access, audit logging, and data residency. Delivered by a GeM-empanelled vendor with live platforms across 11 districts in Bihar at 99.9% uptime.';
|
||||
|
||||
const capabilities = [
|
||||
{ title: 'Multi-district deployment', body: 'One platform rolled out across districts without rewriting it for each — proven across 11 Bihar districts.' },
|
||||
{ title: 'Citizen-facing portals', body: 'Public service portals for bookings, applications, and status tracking, built for low-bandwidth access.' },
|
||||
{ title: 'Audit & compliance', body: 'Audit logging baked into the data layer, role-based access control, and tamper-evident record-keeping.' },
|
||||
{ title: 'Smart-city systems (SCMS)', body: 'Operational systems for civic facilities — slot booking, real-time availability, and oversight dashboards.' },
|
||||
{ title: 'Data residency & security', body: 'Hosting in your region under strict security standards — encrypted at rest and in transit.' },
|
||||
{ title: 'High availability', body: 'Infrastructure engineered for 99.9% uptime on mission-critical public services.' },
|
||||
];
|
||||
|
||||
// Capability / readiness stat block presented as a checklist table.
|
||||
const readiness = [
|
||||
{ dimension: 'GeM empanelment', detail: 'Empanelled for relevant IT service categories on the Government e-Marketplace.' },
|
||||
{ dimension: 'Live government deployments', detail: 'Smart Crematorium Management System for Patna Smart City Limited (PSCL), Bihar Government.' },
|
||||
{ dimension: 'Multi-district experience', detail: 'Police Management System deployed across 11 districts for the Bihar State Government.' },
|
||||
{ dimension: 'Records under management', detail: '50,000+ government records managed across live deployments.' },
|
||||
{ dimension: 'Security posture', detail: 'Role-based access control, full audit trails, OWASP-aligned reviews, encrypted data.' },
|
||||
{ dimension: 'Uptime track record', detail: '99.9% uptime sustained on critical public-service systems.' },
|
||||
];
|
||||
|
||||
const stats = [
|
||||
{ value: '11', label: 'Districts deployed' },
|
||||
{ value: '50,000+', label: 'Government records' },
|
||||
{ value: '99.9%', label: 'Uptime' },
|
||||
{ value: 'GeM', label: 'Empanelled vendor' },
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
question: 'Is WorkRoot a GeM-empanelled vendor?',
|
||||
answer:
|
||||
'Yes. WorkRoot is empanelled for relevant IT service categories on the Government e-Marketplace (GeM), and we have delivered platforms used across 11 districts in Bihar. We can respond to GeM bids and government tenders for web, ERP, and smart-city systems.',
|
||||
},
|
||||
{
|
||||
question: 'Have you delivered for government clients before?',
|
||||
answer:
|
||||
'Yes. We built the Smart Crematorium Management System (SCMS) for Patna Smart City Limited under the Bihar Government, and a Police Management System deployed across 11 districts for the Bihar State Government, handling personnel, case tracking, and FIR digitisation for 15,000+ officers.',
|
||||
},
|
||||
{
|
||||
question: 'How do you handle data residency and security for government systems?',
|
||||
answer:
|
||||
'Government data stays in your chosen region on infrastructure you control. We apply role-based access control, encrypt data at rest and in transit, log every action for audit, and run OWASP-aligned security reviews. The same controls run our live Bihar government deployments under strict compliance.',
|
||||
},
|
||||
{
|
||||
question: 'Can a single platform serve multiple districts?',
|
||||
answer:
|
||||
'Yes — that is exactly what our multi-district architecture is built for. We use a database-per-district model with central aggregation and district-specific feature configuration, so one codebase rolls out across districts without a separate rewrite for each.',
|
||||
},
|
||||
{
|
||||
question: 'What uptime can you commit to for public services?',
|
||||
answer:
|
||||
'We sustain 99.9% uptime on our mission-critical government deployments through high-availability infrastructure, monitoring, and blue-green deployments. We can align an SLA to the criticality of your service during scoping.',
|
||||
},
|
||||
{
|
||||
question: 'What technology do you use for government platforms?',
|
||||
answer:
|
||||
'We build on Spring Boot, Astro, and Golang with PostgreSQL and MySQL — the stack behind our SCMS and police deployments. The choice favours long-term maintainability, security, and performance under real public load.',
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={pageTitle} description={pageDescription}>
|
||||
<SEO
|
||||
slot="head"
|
||||
type="Service"
|
||||
breadcrumbs={[
|
||||
{ name: 'Home', url: '/' },
|
||||
{ name: 'Services', url: '/services' },
|
||||
{ name: 'Government IT Solutions', url: '/services/government-it-solutions-gem-vendor' },
|
||||
]}
|
||||
service={{ name: serviceName, description: serviceDescription }}
|
||||
faq={faqs}
|
||||
/>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-20 lg:py-28 overflow-hidden">
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
|
||||
<div class="absolute top-1/4 left-0 w-80 h-80 bg-red-500/10 rounded-full blur-3xl animate-pulse-slower"></div>
|
||||
<div class="absolute bottom-0 right-1/4 w-96 h-96 bg-orange-500/10 rounded-full blur-3xl animate-pulse-slow"></div>
|
||||
<div class="absolute inset-0 opacity-5" style="background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
</div>
|
||||
<div class="container-wrapper relative">
|
||||
<div class="max-w-3xl">
|
||||
<nav aria-label="Breadcrumb" class="mb-6">
|
||||
<ol class="flex flex-wrap items-center gap-2 text-sm text-secondary-400">
|
||||
<li><a href="/" class="hover:text-primary-300">Home</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li><a href="/services" class="hover:text-primary-300">Services</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li class="text-secondary-200" aria-current="page">Government IT Solutions</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-6 text-sm font-semibold text-red-300 bg-red-500/10 rounded-full border border-red-500/20">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-red-400 animate-pulse" aria-hidden="true"></span>
|
||||
GeM-empanelled · Government IT
|
||||
</span>
|
||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 leading-tight">
|
||||
Government IT systems that
|
||||
<span class="text-transparent bg-clip-text bg-gradient-to-r from-red-400 via-orange-300 to-amber-300"> roll out across districts and stay up.</span>
|
||||
</h1>
|
||||
<p class="text-lg sm:text-xl text-secondary-300 max-w-2xl mb-8 leading-relaxed">
|
||||
A GeM-empanelled vendor with secure, audit-ready platforms already live across 11 Bihar districts at 99.9% uptime.
|
||||
Built on Spring Boot, Astro, Golang and PostgreSQL — with the role-based access, data residency, and compliance public
|
||||
services demand.
|
||||
</p>
|
||||
<div class="flex flex-col sm:flex-row gap-4">
|
||||
<a href="#inline-lead-form" data-cta="gov-hero-primary" class="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-primary-500 to-primary-600 px-8 py-4 text-base font-bold text-white shadow-lg hover:shadow-xl hover:scale-105 transition-all focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-offset-2 focus:ring-offset-secondary-900">
|
||||
Scope my government project
|
||||
<svg class="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="tel:+919561417403" data-cta="gov-hero-call" class="inline-flex items-center justify-center rounded-xl border-2 border-white/30 bg-white/5 px-8 py-4 text-base font-bold text-white hover:bg-white/10 transition-all focus:outline-none focus:ring-2 focus:ring-white/50">
|
||||
Talk to our team
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-14 grid grid-cols-2 sm:grid-cols-4 gap-4 lg:gap-6">
|
||||
{stats.map((stat) => (
|
||||
<div class="bg-white/5 backdrop-blur-sm rounded-xl p-4 lg:p-5 text-center border border-white/10">
|
||||
<p class="text-2xl lg:text-3xl font-bold text-white">{stat.value}</p>
|
||||
<p class="text-secondary-400 text-sm mt-1">{stat.label}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Overview -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<span class="text-red-500 dark:text-red-400 font-semibold text-sm uppercase tracking-wider">Why public bodies choose us</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mt-2 mb-6">Digitise public services without the rewrite-for-each-district tax</h2>
|
||||
<div class="space-y-5 text-lg text-secondary-700 dark:text-secondary-300 leading-relaxed">
|
||||
<p>
|
||||
Public-sector technology fails in predictable ways: a system built for one office can’t scale to the next district,
|
||||
paper processes survive alongside half-finished portals, and security or audit requirements get bolted on too late.
|
||||
WorkRoot builds government platforms the other way around — multi-district from day one, with audit logging and
|
||||
role-based access designed into the data layer rather than retrofitted.
|
||||
</p>
|
||||
<p>
|
||||
We are empanelled on the Government e-Marketplace (GeM) and have delivered for real public clients. For
|
||||
<strong> Patna Smart City Limited</strong> under the Bihar Government we built and shipped a Smart Crematorium
|
||||
Management System that now manages <strong>50,000+ records</strong> across 10+ facilities. For the Bihar State
|
||||
Government we delivered a Police Management System deployed across <strong>11 districts</strong>, digitising FIRs,
|
||||
case tracking, and personnel administration for <strong>15,000+ officers</strong>. Both run at 99.9% uptime.
|
||||
</p>
|
||||
<p>
|
||||
Our architecture is deliberately conservative where it counts. We favour a database-per-district model with central
|
||||
aggregation so each district’s data stays isolated while leadership still gets a consolidated view. Offline-resilient
|
||||
design keeps field-critical modules working through patchy connectivity. Every sensitive action is written to an
|
||||
immutable audit log, access is governed by role-based permissions, and data is encrypted both at rest and in transit.
|
||||
Data residency stays under your control — on-premise, in your government cloud, or managed by us within your region.
|
||||
</p>
|
||||
<p>
|
||||
Just as importantly, you own what we build. Full source-code ownership, documentation, and deployment access are part
|
||||
of delivery, so your department is never hostage to a single vendor. That combination — GeM empanelment, a real
|
||||
multi-district track record, and clean handover — is why public bodies trust us with services citizens depend on.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Capabilities grid -->
|
||||
<section class="py-16 lg:py-24 bg-secondary-50 dark:bg-secondary-800/50">
|
||||
<div class="container-wrapper">
|
||||
<div class="text-center max-w-2xl mx-auto mb-12">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">What we deliver for government</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Every capability below is running in a live public-sector deployment today.</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{capabilities.map((c) => (
|
||||
<div class="bg-white dark:bg-secondary-800 rounded-2xl p-7 border border-secondary-100 dark:border-secondary-700 shadow-sm hover:shadow-lg transition-shadow">
|
||||
<div class="w-12 h-12 rounded-xl bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-300 flex items-center justify-center mb-4" aria-hidden="true">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /></svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-secondary-900 dark:text-secondary-100 mb-2">{c.title}</h3>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-sm leading-relaxed">{c.body}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Readiness table -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Tender-ready at a glance</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">What we bring to a government engagement.</p>
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-2xl border border-secondary-200 dark:border-secondary-700 shadow-sm">
|
||||
<table class="w-full text-left border-collapse min-w-[560px]">
|
||||
<caption class="sr-only">WorkRoot government IT readiness and track record</caption>
|
||||
<thead>
|
||||
<tr class="bg-secondary-50 dark:bg-secondary-800">
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-700 dark:text-secondary-200">Criterion</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-primary-700 dark:text-primary-300">WorkRoot</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{readiness.map((row, i) => (
|
||||
<tr class={i % 2 === 0 ? 'bg-white dark:bg-secondary-900' : 'bg-secondary-50/50 dark:bg-secondary-800/40'}>
|
||||
<th scope="row" class="px-5 py-4 text-sm font-semibold text-secondary-900 dark:text-secondary-100 align-top w-1/3">{row.dimension}</th>
|
||||
<td class="px-5 py-4 text-sm text-secondary-700 dark:text-secondary-200 align-top">
|
||||
<span class="inline-flex items-start gap-2">
|
||||
<svg class="w-4 h-4 mt-0.5 flex-shrink-0 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
{row.detail}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Case studies (two government projects) -->
|
||||
<section class="py-16 lg:py-24 bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-5xl mx-auto">
|
||||
<div class="text-center mb-12">
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-4 text-sm font-semibold text-red-300 bg-red-500/10 rounded-full border border-red-500/20">Government case studies</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-white">Live public-sector deployments</h2>
|
||||
</div>
|
||||
<div class="grid lg:grid-cols-2 gap-8">
|
||||
<!-- SCMS -->
|
||||
<article class="bg-white/5 border border-white/10 rounded-2xl p-8">
|
||||
<h3 class="text-xl font-bold text-white mb-2">SCMS for PSCL, Bihar Government</h3>
|
||||
<p class="text-sm text-secondary-400 mb-4">Patna Smart City Limited · Astro · Golang · PostgreSQL</p>
|
||||
<p class="text-secondary-300 leading-relaxed mb-6">
|
||||
A Smart Crematorium Management System digitising slot booking, real-time availability, digital record-keeping, and
|
||||
automated reporting — cutting booking from hours to minutes across 10+ facilities.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
{[{ v: '10+', l: 'Facilities' }, { v: '50,000+', l: 'Records' }, { v: '99.9%', l: 'Uptime' }].map((s) => (
|
||||
<div class="bg-white/5 rounded-lg p-3 text-center">
|
||||
<p class="text-xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<a href="/portfolio#scms-pscl" class="mt-6 inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200 text-sm">
|
||||
Full case study
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" /></svg>
|
||||
</a>
|
||||
</article>
|
||||
<!-- Police -->
|
||||
<article class="bg-white/5 border border-white/10 rounded-2xl p-8">
|
||||
<h3 class="text-xl font-bold text-white mb-2">Police Management System — Bihar</h3>
|
||||
<p class="text-sm text-secondary-400 mb-4">Bihar State Government · Spring Boot · Angular · MySQL</p>
|
||||
<p class="text-secondary-300 leading-relaxed mb-6">
|
||||
A centralised system across 11 districts handling personnel management, FIR digitisation, case tracking, and duty
|
||||
roster scheduling — with role-based access and strict security compliance for thousands of concurrent users.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
{[{ v: '11', l: 'Districts' }, { v: '15,000+', l: 'Officers' }, { v: '100,000+', l: 'Cases' }].map((s) => (
|
||||
<div class="bg-white/5 rounded-lg p-3 text-center">
|
||||
<p class="text-xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<a href="/services/police-management-system" class="mt-6 inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200 text-sm">
|
||||
Police system details
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" /></svg>
|
||||
</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ServiceFaq
|
||||
faqs={faqs}
|
||||
eyebrow="For government buyers"
|
||||
heading="Government IT & GeM — your questions answered"
|
||||
subheading="Empanelment, track record, security, data residency, and multi-district rollout."
|
||||
/>
|
||||
|
||||
<GuaranteeBand />
|
||||
<InlineLeadForm />
|
||||
</BaseLayout>
|
||||
@@ -0,0 +1,285 @@
|
||||
---
|
||||
// Police Management System — keyword-focused service landing page.
|
||||
// Reuses GuaranteeBand, InlineLeadForm and ServiceFaq, and feeds Service + FAQ
|
||||
// schema into SEO.astro.
|
||||
//
|
||||
// Case-study numbers are taken verbatim from the Police Management System
|
||||
// entry on /portfolio: 11 districts · 15,000+ officers · 100,000+ cases.
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import SEO from '../../components/SEO.astro';
|
||||
import GuaranteeBand from '../../components/GuaranteeBand.astro';
|
||||
import InlineLeadForm from '../../components/InlineLeadForm.astro';
|
||||
import ServiceFaq from '../../components/ServiceFaq.astro';
|
||||
|
||||
const pageTitle = 'Police Management System Development';
|
||||
const pageDescription =
|
||||
'Custom Police Management System development — FIR digitisation, case tracking, personnel & duty rosters. WorkRoot’s platform runs across 11 Bihar districts for 15,000+ officers.';
|
||||
|
||||
const serviceName = 'Police Management System Development';
|
||||
const serviceDescription =
|
||||
'Custom Police Management System software for state and district law-enforcement bodies — FIR digitisation, case tracking, personnel management, duty-roster scheduling, and real-time reporting with role-based access control. Built on Spring Boot and Angular, deployed across 11 districts in Bihar for 15,000+ officers.';
|
||||
|
||||
const modules = [
|
||||
{ title: 'FIR digitisation', body: 'Digital First Information Reports with structured capture, search, and status tracking — replacing paper registers.' },
|
||||
{ title: 'Case tracking', body: 'End-to-end case lifecycle from registration to disposal, with 100,000+ cases tracked in production.' },
|
||||
{ title: 'Personnel management', body: 'Officer records, postings, transfers, and service history for 15,000+ personnel.' },
|
||||
{ title: 'Duty roster scheduling', body: 'Automated duty rosters and shift planning that remove manual scheduling errors.' },
|
||||
{ title: 'Reporting dashboards', body: 'Real-time dashboards for district and HQ oversight, with scheduled compliance exports.' },
|
||||
{ title: 'Role-based access control', body: 'Granular permissions by rank, role, and district, with full audit logging of sensitive actions.' },
|
||||
];
|
||||
|
||||
const stats = [
|
||||
{ value: '11', label: 'Districts deployed' },
|
||||
{ value: '15,000+', label: 'Officers managed' },
|
||||
{ value: '100,000+', label: 'Cases tracked' },
|
||||
{ value: '99.9%', label: 'Uptime' },
|
||||
];
|
||||
|
||||
// Before/after comparison stat-table: manual processes vs the digital system.
|
||||
const comparison = [
|
||||
{ dimension: 'FIR filing', before: 'Paper registers, no central search', after: 'Digital FIRs, searchable across districts' },
|
||||
{ dimension: 'Case status', before: 'Manual file movement, opaque', after: 'Real-time tracking from registration to disposal' },
|
||||
{ dimension: 'Personnel records', before: 'District-siloed paper files', after: 'Unified service records for 15,000+ officers' },
|
||||
{ dimension: 'Duty rosters', before: 'Hand-written, error-prone', after: 'Automated scheduling with conflict checks' },
|
||||
{ dimension: 'Oversight', before: 'Periodic manual compilation', after: 'Live dashboards for HQ and districts' },
|
||||
{ dimension: 'Data consistency', before: 'Inconsistent across 11 districts', after: 'Single source of truth with audit trail' },
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
question: 'Have you built a police management system before?',
|
||||
answer:
|
||||
'Yes. WorkRoot developed and deployed a Police Management System for the Bihar State Government across 11 districts. It handles personnel management, FIR digitisation, case tracking, and duty-roster scheduling for 15,000+ officers and 100,000+ cases at 99.9% uptime.',
|
||||
},
|
||||
{
|
||||
question: 'What modules does a police management system include?',
|
||||
answer:
|
||||
'Core modules are FIR digitisation, case tracking, personnel management, duty-roster scheduling, real-time reporting dashboards, and role-based access control with audit logging. We tailor the module set to your jurisdiction’s workflow during scoping.',
|
||||
},
|
||||
{
|
||||
question: 'How do you secure sensitive law-enforcement data?',
|
||||
answer:
|
||||
'Through defence-in-depth: role-based access control by rank and district, encryption at rest and in transit, immutable audit logging of every sensitive action, and OWASP-aligned security reviews. The system is built to strict security compliance for thousands of concurrent users.',
|
||||
},
|
||||
{
|
||||
question: 'Can the system scale across many districts?',
|
||||
answer:
|
||||
'Yes. Our multi-district architecture uses a database-per-district model with central aggregation, so each district’s data stays isolated while HQ gets a consolidated view. The live Bihar deployment already spans 11 districts on a single codebase.',
|
||||
},
|
||||
{
|
||||
question: 'How long does deployment take?',
|
||||
answer:
|
||||
'Timelines depend on the number of modules and districts. We deliver a usable first module in weeks and roll out district-by-district to manage change and training. We share a detailed plan after the discovery phase.',
|
||||
},
|
||||
{
|
||||
question: 'What technology stack do you use?',
|
||||
answer:
|
||||
'The police platform is built on Spring Boot for the backend, Angular for the interface, and MySQL for the data layer — chosen for security, maintainability, and performance under heavy concurrent load.',
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={pageTitle} description={pageDescription}>
|
||||
<SEO
|
||||
slot="head"
|
||||
type="Service"
|
||||
breadcrumbs={[
|
||||
{ name: 'Home', url: '/' },
|
||||
{ name: 'Services', url: '/services' },
|
||||
{ name: 'Police Management System', url: '/services/police-management-system' },
|
||||
]}
|
||||
service={{ name: serviceName, description: serviceDescription }}
|
||||
faq={faqs}
|
||||
/>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-20 lg:py-28 overflow-hidden">
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
|
||||
<div class="absolute top-1/4 left-0 w-80 h-80 bg-red-500/10 rounded-full blur-3xl animate-pulse-slower"></div>
|
||||
<div class="absolute bottom-0 right-1/4 w-96 h-96 bg-orange-500/10 rounded-full blur-3xl animate-pulse-slow"></div>
|
||||
<div class="absolute inset-0 opacity-5" style="background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
</div>
|
||||
<div class="container-wrapper relative">
|
||||
<div class="max-w-3xl">
|
||||
<nav aria-label="Breadcrumb" class="mb-6">
|
||||
<ol class="flex flex-wrap items-center gap-2 text-sm text-secondary-400">
|
||||
<li><a href="/" class="hover:text-primary-300">Home</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li><a href="/services" class="hover:text-primary-300">Services</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li class="text-secondary-200" aria-current="page">Police Management System</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-6 text-sm font-semibold text-red-300 bg-red-500/10 rounded-full border border-red-500/20">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-red-400 animate-pulse" aria-hidden="true"></span>
|
||||
Law-enforcement software
|
||||
</span>
|
||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 leading-tight">
|
||||
Police Management System
|
||||
<span class="text-transparent bg-clip-text bg-gradient-to-r from-red-400 via-orange-300 to-amber-300"> proven across 11 districts.</span>
|
||||
</h1>
|
||||
<p class="text-lg sm:text-xl text-secondary-300 max-w-2xl mb-8 leading-relaxed">
|
||||
Digitise FIRs, case tracking, personnel records, and duty rosters in one secure platform — the system we built for the
|
||||
Bihar State Government already serves 15,000+ officers and tracks 100,000+ cases at 99.9% uptime.
|
||||
</p>
|
||||
<div class="flex flex-col sm:flex-row gap-4">
|
||||
<a href="#inline-lead-form" data-cta="police-hero-primary" class="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-primary-500 to-primary-600 px-8 py-4 text-base font-bold text-white shadow-lg hover:shadow-xl hover:scale-105 transition-all focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-offset-2 focus:ring-offset-secondary-900">
|
||||
Discuss your deployment
|
||||
<svg class="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="tel:+919561417403" data-cta="police-hero-call" class="inline-flex items-center justify-center rounded-xl border-2 border-white/30 bg-white/5 px-8 py-4 text-base font-bold text-white hover:bg-white/10 transition-all focus:outline-none focus:ring-2 focus:ring-white/50">
|
||||
Talk to our team
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-14 grid grid-cols-2 sm:grid-cols-4 gap-4 lg:gap-6">
|
||||
{stats.map((stat) => (
|
||||
<div class="bg-white/5 backdrop-blur-sm rounded-xl p-4 lg:p-5 text-center border border-white/10">
|
||||
<p class="text-2xl lg:text-3xl font-bold text-white">{stat.value}</p>
|
||||
<p class="text-secondary-400 text-sm mt-1">{stat.label}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Overview -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<span class="text-red-500 dark:text-red-400 font-semibold text-sm uppercase tracking-wider">Built for the field</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mt-2 mb-6">From paper registers to a single digital system of record</h2>
|
||||
<div class="space-y-5 text-lg text-secondary-700 dark:text-secondary-300 leading-relaxed">
|
||||
<p>
|
||||
Before digitisation, police departments across Bihar’s districts relied on paper-based processes for FIR filing, case
|
||||
tracking, and personnel management. The result was the familiar pattern: delays moving files between offices,
|
||||
inconsistent records from one district to the next, and no way for headquarters to see the current picture without a
|
||||
manual compilation. WorkRoot was engaged to replace that with one centralised, secure system.
|
||||
</p>
|
||||
<p>
|
||||
We built a Police Management System on a <strong>Spring Boot</strong> backend and an <strong>Angular</strong>
|
||||
interface, backed by <strong>MySQL</strong>, and deployed it across <strong>11 districts</strong> for the Bihar State
|
||||
Government. The platform digitises First Information Reports, tracks cases through their full lifecycle, manages
|
||||
personnel records and postings for <strong>15,000+ officers</strong>, and automates duty-roster scheduling. To date it
|
||||
has handled <strong>100,000+ cases</strong> while sustaining 99.9% uptime under thousands of concurrent users.
|
||||
</p>
|
||||
<p>
|
||||
Security and accountability were non-negotiable. Access is governed by role-based permissions tied to rank, role, and
|
||||
district; every sensitive action is written to an immutable audit log; and data is encrypted both at rest and in
|
||||
transit. The architecture keeps each district’s data isolated while still rolling up a real-time view for district and
|
||||
HQ leadership through reporting dashboards — so oversight is continuous rather than periodic.
|
||||
</p>
|
||||
<p>
|
||||
The project spanned four years of delivery and iteration (2018–2022), and the lessons from running at that scale —
|
||||
offline resilience for field-critical modules, audit logging baked into the data layer, and district-by-district
|
||||
rollout to manage training and change — now inform every law-enforcement and government engagement we take on. If your
|
||||
department needs to retire paper and unify records across jurisdictions, we have done exactly that in production.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Modules grid -->
|
||||
<section class="py-16 lg:py-24 bg-secondary-50 dark:bg-secondary-800/50">
|
||||
<div class="container-wrapper">
|
||||
<div class="text-center max-w-2xl mx-auto mb-12">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Core modules</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Each module is running in the live Bihar deployment.</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{modules.map((m) => (
|
||||
<div class="bg-white dark:bg-secondary-800 rounded-2xl p-7 border border-secondary-100 dark:border-secondary-700 shadow-sm hover:shadow-lg transition-shadow">
|
||||
<div class="w-12 h-12 rounded-xl bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-300 flex items-center justify-center mb-4" aria-hidden="true">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /></svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-secondary-900 dark:text-secondary-100 mb-2">{m.title}</h3>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-sm leading-relaxed">{m.body}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Before/after comparison -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Before and after digitisation</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">The operational change a unified system delivers.</p>
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-2xl border border-secondary-200 dark:border-secondary-700 shadow-sm">
|
||||
<table class="w-full text-left border-collapse min-w-[640px]">
|
||||
<caption class="sr-only">Police operations before and after deploying the WorkRoot Police Management System</caption>
|
||||
<thead>
|
||||
<tr class="bg-secondary-50 dark:bg-secondary-800">
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-700 dark:text-secondary-200">Area</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-500 dark:text-secondary-400">Before (manual)</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-primary-700 dark:text-primary-300">After (WorkRoot)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{comparison.map((row, i) => (
|
||||
<tr class={i % 2 === 0 ? 'bg-white dark:bg-secondary-900' : 'bg-secondary-50/50 dark:bg-secondary-800/40'}>
|
||||
<th scope="row" class="px-5 py-4 text-sm font-semibold text-secondary-900 dark:text-secondary-100 align-top">{row.dimension}</th>
|
||||
<td class="px-5 py-4 text-sm text-secondary-600 dark:text-secondary-400 align-top">{row.before}</td>
|
||||
<td class="px-5 py-4 text-sm text-secondary-700 dark:text-secondary-200 align-top font-medium">
|
||||
<span class="inline-flex items-start gap-2">
|
||||
<svg class="w-4 h-4 mt-0.5 flex-shrink-0 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
{row.after}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Case study highlight -->
|
||||
<section class="py-16 lg:py-24 bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-5 text-sm font-semibold text-red-300 bg-red-500/10 rounded-full border border-red-500/20">Case study · Government</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-white mb-4">Bihar State Government — Police Management System</h2>
|
||||
<p class="text-lg text-secondary-300 leading-relaxed mb-8">
|
||||
A four-year engagement (2018–2022) delivering a centralised platform across 11 districts, built to handle thousands of
|
||||
concurrent users with role-based access control and strict security compliance. It remains a reference point for how we
|
||||
approach multi-district public-sector software.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-4 mb-8">
|
||||
{[{ v: '11', l: 'Districts' }, { v: '15,000+', l: 'Officers' }, { v: '100,000+', l: 'Cases' }].map((s) => (
|
||||
<div class="bg-white/5 border border-white/10 rounded-xl p-5 text-center">
|
||||
<p class="text-2xl sm:text-3xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs sm:text-sm mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-4">
|
||||
<a href="/portfolio#police-management" class="inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200">
|
||||
Read the full case study
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="/services/government-it-solutions-gem-vendor" class="inline-flex items-center gap-2 text-secondary-300 font-semibold hover:text-white">
|
||||
See all government IT solutions
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" /></svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ServiceFaq
|
||||
faqs={faqs}
|
||||
eyebrow="For law-enforcement buyers"
|
||||
heading="Police Management System — your questions answered"
|
||||
subheading="Track record, modules, security, multi-district scale, and the stack we use."
|
||||
/>
|
||||
|
||||
<GuaranteeBand />
|
||||
<InlineLeadForm />
|
||||
</BaseLayout>
|
||||
@@ -0,0 +1,280 @@
|
||||
---
|
||||
// React Native App Development — keyword-focused service landing page.
|
||||
// Reuses GuaranteeBand, InlineLeadForm and ServiceFaq, and feeds Service + FAQ
|
||||
// schema into SEO.astro.
|
||||
//
|
||||
// Case-study numbers are taken verbatim from the Pophealth entry on
|
||||
// /portfolio: 10,000+ sessions · 100+ providers · 4.8★ rating.
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import SEO from '../../components/SEO.astro';
|
||||
import GuaranteeBand from '../../components/GuaranteeBand.astro';
|
||||
import InlineLeadForm from '../../components/InlineLeadForm.astro';
|
||||
import ServiceFaq from '../../components/ServiceFaq.astro';
|
||||
|
||||
const pageTitle = 'React Native App Development';
|
||||
const pageDescription =
|
||||
'Cross-platform React Native & Expo app development — one codebase for iOS and Android, offline-first sync, push notifications, store-ready builds. WorkRoot ships apps rated 4.8★.';
|
||||
|
||||
const serviceName = 'React Native App Development';
|
||||
const serviceDescription =
|
||||
'Cross-platform mobile app development with React Native and Expo — a single codebase shipped to both the App Store and Play Store, with offline-first architecture, push notifications, and Spring Boot backend integration. Proven with a health-sessions app handling 10,000+ sessions at a 4.8★ rating.';
|
||||
|
||||
const capabilities = [
|
||||
{ title: 'One codebase, both stores', body: 'A single React Native/Expo codebase published to iOS and Android — no separate native teams to fund.' },
|
||||
{ title: 'Offline-first sync', body: 'Apps that keep working through patchy connectivity and sync cleanly when back online — proven in the field.' },
|
||||
{ title: 'Push notifications', body: 'Native push on both platforms for re-engagement, reminders, and transactional alerts.' },
|
||||
{ title: 'Backend integration', body: 'Secure REST integration with Spring Boot and PostgreSQL/MySQL — the same backends behind our web platforms.' },
|
||||
{ title: 'Store submission', body: 'We handle App Store and Play Store builds, review, and release — not just the code.' },
|
||||
{ title: 'Native-like performance', body: 'Smooth, responsive UIs that feel native, with platform-aware navigation and gestures.' },
|
||||
];
|
||||
|
||||
const stats = [
|
||||
{ value: '3+', label: 'Mobile apps shipped' },
|
||||
{ value: '10,000+', label: 'Sessions handled' },
|
||||
{ value: '4.8★', label: 'User rating' },
|
||||
{ value: '2', label: 'Stores, 1 codebase' },
|
||||
];
|
||||
|
||||
// Comparison: cross-platform React Native vs two separate native builds.
|
||||
const comparison = [
|
||||
{ dimension: 'Codebases to maintain', native: 'Two (Swift + Kotlin)', rn: 'One (React Native/Expo)' },
|
||||
{ dimension: 'Time to both stores', native: 'Two parallel builds', rn: 'Single build, ship together' },
|
||||
{ dimension: 'Team needed', native: 'Separate iOS + Android engineers', rn: 'One cross-platform team' },
|
||||
{ dimension: 'Feature parity', native: 'Drifts between platforms', rn: 'Identical features by default' },
|
||||
{ dimension: 'Ongoing cost', native: 'Two maintenance tracks', rn: 'One maintenance track' },
|
||||
{ dimension: 'Offline support', native: 'Built twice', rn: 'Built once, shared' },
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
question: 'Why choose React Native over fully native apps?',
|
||||
answer:
|
||||
'React Native lets you ship one codebase to both the App Store and Play Store, so you fund a single cross-platform team instead of separate iOS and Android engineers, get identical features on both platforms, and maintain one codebase. For most products it is faster and cheaper to launch and to keep running, with native-like performance.',
|
||||
},
|
||||
{
|
||||
question: 'Do you publish to both the App Store and Play Store?',
|
||||
answer:
|
||||
'Yes. We handle the full release path — production builds with Expo/EAS, store metadata, review submission, and the first release — for both Apple’s App Store and Google Play. We can publish under your developer accounts or guide you through setting them up.',
|
||||
},
|
||||
{
|
||||
question: 'Can the app work offline?',
|
||||
answer:
|
||||
'Yes. We build offline-first architecture with local storage and background sync, so the app stays usable through poor connectivity and reconciles cleanly when the connection returns. Our Pophealth health-sessions app uses exactly this approach for field use.',
|
||||
},
|
||||
{
|
||||
question: 'How does the app connect to a backend?',
|
||||
answer:
|
||||
'Through secure REST APIs. We typically pair React Native apps with a Spring Boot backend and a PostgreSQL or MySQL database — the same backend stack behind our web and enterprise platforms — so your mobile and web products share one source of truth.',
|
||||
},
|
||||
{
|
||||
question: 'How long does it take to build a React Native app?',
|
||||
answer:
|
||||
'A focused MVP typically ships in around 6–12 weeks depending on the feature set and integrations. We work in 2-week sprints with a live build available early, so you can test on real devices and steer the roadmap as it develops.',
|
||||
},
|
||||
{
|
||||
question: 'What does a React Native app cost?',
|
||||
answer:
|
||||
'Mobile builds generally fall in the ₹2,00,000–₹15,00,000 range depending on scope, integrations, and whether a backend is included. Every quote is free, itemised, and fixed-price for well-defined scopes.',
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={pageTitle} description={pageDescription}>
|
||||
<SEO
|
||||
slot="head"
|
||||
type="Service"
|
||||
breadcrumbs={[
|
||||
{ name: 'Home', url: '/' },
|
||||
{ name: 'Services', url: '/services' },
|
||||
{ name: 'React Native App Development', url: '/services/react-native-app-development' },
|
||||
]}
|
||||
service={{ name: serviceName, description: serviceDescription }}
|
||||
faq={faqs}
|
||||
/>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-20 lg:py-28 overflow-hidden">
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
|
||||
<div class="absolute top-1/4 left-0 w-80 h-80 bg-green-500/10 rounded-full blur-3xl animate-pulse-slower"></div>
|
||||
<div class="absolute bottom-0 right-1/4 w-96 h-96 bg-emerald-500/10 rounded-full blur-3xl animate-pulse-slow"></div>
|
||||
<div class="absolute inset-0 opacity-5" style="background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
</div>
|
||||
<div class="container-wrapper relative">
|
||||
<div class="max-w-3xl">
|
||||
<nav aria-label="Breadcrumb" class="mb-6">
|
||||
<ol class="flex flex-wrap items-center gap-2 text-sm text-secondary-400">
|
||||
<li><a href="/" class="hover:text-primary-300">Home</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li><a href="/services" class="hover:text-primary-300">Services</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li class="text-secondary-200" aria-current="page">React Native App Development</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-6 text-sm font-semibold text-green-300 bg-green-500/10 rounded-full border border-green-500/20">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse" aria-hidden="true"></span>
|
||||
Cross-platform mobile
|
||||
</span>
|
||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 leading-tight">
|
||||
React Native apps for
|
||||
<span class="text-transparent bg-clip-text bg-gradient-to-r from-green-400 via-emerald-300 to-teal-300"> iOS and Android — from one codebase.</span>
|
||||
</h1>
|
||||
<p class="text-lg sm:text-xl text-secondary-300 max-w-2xl mb-8 leading-relaxed">
|
||||
Launch on both stores without the native-team overhead. We build offline-first React Native and Expo apps with push
|
||||
notifications and Spring Boot backends — and ship them store-ready. Our last health app holds a 4.8★ rating across
|
||||
10,000+ sessions.
|
||||
</p>
|
||||
<div class="flex flex-col sm:flex-row gap-4">
|
||||
<a href="#inline-lead-form" data-cta="rn-hero-primary" class="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-primary-500 to-primary-600 px-8 py-4 text-base font-bold text-white shadow-lg hover:shadow-xl hover:scale-105 transition-all focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-offset-2 focus:ring-offset-secondary-900">
|
||||
Get my free app scope
|
||||
<svg class="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="tel:+919561417403" data-cta="rn-hero-call" class="inline-flex items-center justify-center rounded-xl border-2 border-white/30 bg-white/5 px-8 py-4 text-base font-bold text-white hover:bg-white/10 transition-all focus:outline-none focus:ring-2 focus:ring-white/50">
|
||||
Talk to a developer
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-14 grid grid-cols-2 sm:grid-cols-4 gap-4 lg:gap-6">
|
||||
{stats.map((stat) => (
|
||||
<div class="bg-white/5 backdrop-blur-sm rounded-xl p-4 lg:p-5 text-center border border-white/10">
|
||||
<p class="text-2xl lg:text-3xl font-bold text-white">{stat.value}</p>
|
||||
<p class="text-secondary-400 text-sm mt-1">{stat.label}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Overview -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<span class="text-green-600 dark:text-green-400 font-semibold text-sm uppercase tracking-wider">Why cross-platform</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mt-2 mb-6">One codebase in every customer’s pocket</h2>
|
||||
<div class="space-y-5 text-lg text-secondary-700 dark:text-secondary-300 leading-relaxed">
|
||||
<p>
|
||||
Building separate native apps for iOS and Android means funding two engineering teams, two release pipelines, and two
|
||||
sets of bugs — and watching feature parity quietly drift apart over time. React Native collapses that into a single
|
||||
codebase that ships to both the App Store and Google Play. For the vast majority of products, that means launching
|
||||
sooner, spending less, and maintaining one track instead of two — without giving up the native-like feel users expect.
|
||||
</p>
|
||||
<p>
|
||||
WorkRoot builds cross-platform apps with <strong>React Native and Expo</strong>, backed by <strong>Spring Boot</strong>
|
||||
APIs and <strong>PostgreSQL</strong>. We design offline-first from the start, because real users lose signal — in
|
||||
transit, in basements, in rural areas — and an app that freezes the moment connectivity drops is an app people delete.
|
||||
Local storage plus background sync keeps the experience smooth and reconciles data the moment the connection returns.
|
||||
</p>
|
||||
<p>
|
||||
Push notifications, secure authentication, deep links, and clean backend integration come standard, and we don’t stop
|
||||
at the code: we handle the production builds, store metadata, and review submission to get you live on both stores.
|
||||
Because the backend stack matches our web and enterprise platforms, your mobile app and any web product can share one
|
||||
source of truth rather than drifting into separate data silos.
|
||||
</p>
|
||||
<p>
|
||||
The proof is in production. Our Pophealth health-sessions app — built with Expo and Spring Boot — went live for a
|
||||
healthcare client, onboarded <strong>100+ providers</strong>, handled <strong>10,000+ sessions</strong> with
|
||||
offline-first sync for areas of poor connectivity, and earned a <strong>4.8★</strong> user rating. If you have a mobile
|
||||
product to launch, we can take it from idea to both stores.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Capabilities grid -->
|
||||
<section class="py-16 lg:py-24 bg-secondary-50 dark:bg-secondary-800/50">
|
||||
<div class="container-wrapper">
|
||||
<div class="text-center max-w-2xl mx-auto mb-12">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">What we ship</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Everything a production mobile app needs, on both platforms.</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{capabilities.map((c) => (
|
||||
<div class="bg-white dark:bg-secondary-800 rounded-2xl p-7 border border-secondary-100 dark:border-secondary-700 shadow-sm hover:shadow-lg transition-shadow">
|
||||
<div class="w-12 h-12 rounded-xl bg-green-50 dark:bg-green-900/30 text-green-600 dark:text-green-300 flex items-center justify-center mb-4" aria-hidden="true">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z" /></svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-secondary-900 dark:text-secondary-100 mb-2">{c.title}</h3>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-sm leading-relaxed">{c.body}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Comparison table -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">React Native vs two native builds</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">Why one codebase usually wins.</p>
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-2xl border border-secondary-200 dark:border-secondary-700 shadow-sm">
|
||||
<table class="w-full text-left border-collapse min-w-[640px]">
|
||||
<caption class="sr-only">Comparison of separate native iOS and Android development versus cross-platform React Native</caption>
|
||||
<thead>
|
||||
<tr class="bg-secondary-50 dark:bg-secondary-800">
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-700 dark:text-secondary-200">Dimension</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-500 dark:text-secondary-400">Two native apps</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-primary-700 dark:text-primary-300">React Native (WorkRoot)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{comparison.map((row, i) => (
|
||||
<tr class={i % 2 === 0 ? 'bg-white dark:bg-secondary-900' : 'bg-secondary-50/50 dark:bg-secondary-800/40'}>
|
||||
<th scope="row" class="px-5 py-4 text-sm font-semibold text-secondary-900 dark:text-secondary-100 align-top">{row.dimension}</th>
|
||||
<td class="px-5 py-4 text-sm text-secondary-600 dark:text-secondary-400 align-top">{row.native}</td>
|
||||
<td class="px-5 py-4 text-sm text-secondary-700 dark:text-secondary-200 align-top font-medium">
|
||||
<span class="inline-flex items-start gap-2">
|
||||
<svg class="w-4 h-4 mt-0.5 flex-shrink-0 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
{row.rn}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Case study -->
|
||||
<section class="py-16 lg:py-24 bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-5 text-sm font-semibold text-green-300 bg-green-500/10 rounded-full border border-green-500/20">Case study · Mobile</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-white mb-4">Pophealth — Health Sessions App</h2>
|
||||
<p class="text-lg text-secondary-300 leading-relaxed mb-8">
|
||||
A healthcare client needed a mobile-first tool to manage patient sessions and health data, with offline capability for
|
||||
areas of poor connectivity. We built it with <strong class="text-white">Expo (React Native)</strong> and a
|
||||
<strong class="text-white"> Spring Boot</strong> backend over <strong class="text-white">PostgreSQL</strong>, using an
|
||||
offline-first architecture with seamless sync for session management, appointment booking, and patient tracking.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-4 mb-8">
|
||||
{[{ v: '10,000+', l: 'Sessions managed' }, { v: '100+', l: 'Providers onboarded' }, { v: '4.8★', l: 'User rating' }].map((s) => (
|
||||
<div class="bg-white/5 border border-white/10 rounded-xl p-5 text-center">
|
||||
<p class="text-2xl sm:text-3xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs sm:text-sm mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<a href="/portfolio#pophealth" class="inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200">
|
||||
Read the full case study
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ServiceFaq
|
||||
faqs={faqs}
|
||||
eyebrow="Before you build"
|
||||
heading="React Native app development — your questions answered"
|
||||
subheading="Cross-platform trade-offs, store publishing, offline support, timelines, and cost."
|
||||
/>
|
||||
|
||||
<GuaranteeBand />
|
||||
<InlineLeadForm />
|
||||
</BaseLayout>
|
||||
@@ -0,0 +1,294 @@
|
||||
---
|
||||
// University ERP — keyword-focused service landing page.
|
||||
// Reuses GuaranteeBand, InlineLeadForm and ServiceFaq, and feeds Service + FAQ
|
||||
// schema into SEO.astro.
|
||||
//
|
||||
// Case-study numbers are taken verbatim from the IIT Patna University
|
||||
// Management System entry on /portfolio: 3,000+ students · 500+ courses ·
|
||||
// 200+ faculty.
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import SEO from '../../components/SEO.astro';
|
||||
import GuaranteeBand from '../../components/GuaranteeBand.astro';
|
||||
import InlineLeadForm from '../../components/InlineLeadForm.astro';
|
||||
import ServiceFaq from '../../components/ServiceFaq.astro';
|
||||
|
||||
const pageTitle = 'University ERP & Management System';
|
||||
const pageDescription =
|
||||
'University ERP development — admissions, registration, examinations, grading, and faculty management in one platform. WorkRoot built the IIT Patna University Management System.';
|
||||
|
||||
const serviceName = 'University ERP & Management System';
|
||||
const serviceDescription =
|
||||
'Custom university ERP and management systems covering the full student lifecycle — admissions, course registration, examination scheduling, grade management, and faculty administration. Built on Next.js and Spring Boot, delivered for the Indian Institute of Technology, Patna.';
|
||||
|
||||
const modules = [
|
||||
{ title: 'Admissions', body: 'Online applications, document handling, and seat allocation that replace fragmented manual intake.' },
|
||||
{ title: 'Course registration', body: 'Self-service registration with prerequisite checks, capacity limits, and timetable clash detection.' },
|
||||
{ title: 'Examination scheduling', body: 'Exam planning, hall and invigilator allocation, and conflict-free timetabling.' },
|
||||
{ title: 'Grade management', body: 'Mark entry, moderation, GPA/CGPA computation, and transcript generation.' },
|
||||
{ title: 'Faculty administration', body: 'Faculty profiles, course assignments, and workload tracking for 200+ faculty in production.' },
|
||||
{ title: 'Student lifecycle', body: 'A unified record from admission to graduation, with role-based access for staff and students.' },
|
||||
];
|
||||
|
||||
const stats = [
|
||||
{ value: '3,000+', label: 'Students served' },
|
||||
{ value: '500+', label: 'Courses managed' },
|
||||
{ value: '200+', label: 'Faculty onboarded' },
|
||||
{ value: '1', label: 'Unified platform' },
|
||||
];
|
||||
|
||||
// Fragmented legacy vs unified university ERP comparison.
|
||||
const comparison = [
|
||||
{ dimension: 'Admissions', legacy: 'Separate intake tools and spreadsheets', erp: 'One online admissions pipeline' },
|
||||
{ dimension: 'Registration', legacy: 'Manual forms, clash errors', erp: 'Self-service with prerequisite & clash checks' },
|
||||
{ dimension: 'Examinations', legacy: 'Standalone scheduling, hall conflicts', erp: 'Conflict-free exam timetabling' },
|
||||
{ dimension: 'Grading', legacy: 'Disconnected mark sheets', erp: 'Automated GPA/CGPA and transcripts' },
|
||||
{ dimension: 'Faculty data', legacy: 'Siloed department records', erp: 'Central faculty administration' },
|
||||
{ dimension: 'Student record', legacy: 'Scattered across systems', erp: 'Single lifecycle record of truth' },
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
question: 'Have you built a university management system before?',
|
||||
answer:
|
||||
'Yes. WorkRoot built the University Management System for the Indian Institute of Technology, Patna. It manages admissions, course registration, examination scheduling, grade management, faculty profiles, and administrative workflows for 3,000+ students, 500+ courses, and 200+ faculty.',
|
||||
},
|
||||
{
|
||||
question: 'What modules does a university ERP include?',
|
||||
answer:
|
||||
'A typical build covers admissions, course registration, examination scheduling, grade and transcript management, faculty administration, and the overall student lifecycle — all under role-based access for staff and students. We tailor the exact module set to your institution during scoping.',
|
||||
},
|
||||
{
|
||||
question: 'Can it replace our existing fragmented systems?',
|
||||
answer:
|
||||
'Yes — that is the usual reason institutions engage us. IIT Patna needed to replace fragmented legacy systems with one unified platform, which is exactly what we delivered. We migrate existing data and consolidate intake, registration, examinations, and records into a single source of truth.',
|
||||
},
|
||||
{
|
||||
question: 'Will it scale for our whole campus?',
|
||||
answer:
|
||||
'Yes. The IIT Patna platform was designed for scalability and high availability to serve the entire academic community. Our architecture handles concurrent registration and exam periods — the peak-load moments that break smaller systems.',
|
||||
},
|
||||
{
|
||||
question: 'How long does a university ERP take to deliver?',
|
||||
answer:
|
||||
'We deliver module by module so value lands early — a first module in weeks, with full rollout over a few months depending on scope. Working in 2-week sprints with a live staging environment, your team sees and steers the system as it is built.',
|
||||
},
|
||||
{
|
||||
question: 'What technology do you use for university ERPs?',
|
||||
answer:
|
||||
'The IIT Patna system is built on Next.js for the interface and Spring Boot for the backend, with MySQL for the data layer — chosen for scalability, maintainability, and high availability across the academic community.',
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={pageTitle} description={pageDescription}>
|
||||
<SEO
|
||||
slot="head"
|
||||
type="Service"
|
||||
breadcrumbs={[
|
||||
{ name: 'Home', url: '/' },
|
||||
{ name: 'Services', url: '/services' },
|
||||
{ name: 'University ERP', url: '/services/university-erp' },
|
||||
]}
|
||||
service={{ name: serviceName, description: serviceDescription }}
|
||||
faq={faqs}
|
||||
/>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-20 lg:py-28 overflow-hidden">
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true">
|
||||
<div class="absolute top-1/4 left-0 w-80 h-80 bg-purple-500/10 rounded-full blur-3xl animate-pulse-slower"></div>
|
||||
<div class="absolute bottom-0 right-1/4 w-96 h-96 bg-indigo-500/10 rounded-full blur-3xl animate-pulse-slow"></div>
|
||||
<div class="absolute inset-0 opacity-5" style="background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 60px 60px;"></div>
|
||||
</div>
|
||||
<div class="container-wrapper relative">
|
||||
<div class="max-w-3xl">
|
||||
<nav aria-label="Breadcrumb" class="mb-6">
|
||||
<ol class="flex flex-wrap items-center gap-2 text-sm text-secondary-400">
|
||||
<li><a href="/" class="hover:text-primary-300">Home</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li><a href="/services" class="hover:text-primary-300">Services</a></li>
|
||||
<li aria-hidden="true">/</li>
|
||||
<li class="text-secondary-200" aria-current="page">University ERP</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-6 text-sm font-semibold text-purple-300 bg-purple-500/10 rounded-full border border-purple-500/20">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-purple-400 animate-pulse" aria-hidden="true"></span>
|
||||
Higher-education software
|
||||
</span>
|
||||
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 leading-tight">
|
||||
University ERP that runs
|
||||
<span class="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-300 to-primary-300"> the whole student lifecycle.</span>
|
||||
</h1>
|
||||
<p class="text-lg sm:text-xl text-secondary-300 max-w-2xl mb-8 leading-relaxed">
|
||||
Admissions, registration, examinations, grading, and faculty — one platform instead of a dozen disconnected tools.
|
||||
We built exactly this for the Indian Institute of Technology, Patna, on Next.js and Spring Boot.
|
||||
</p>
|
||||
<div class="flex flex-col sm:flex-row gap-4">
|
||||
<a href="#inline-lead-form" data-cta="uni-hero-primary" class="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-primary-500 to-primary-600 px-8 py-4 text-base font-bold text-white shadow-lg hover:shadow-xl hover:scale-105 transition-all focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-offset-2 focus:ring-offset-secondary-900">
|
||||
Scope my university ERP
|
||||
<svg class="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="tel:+919561417403" data-cta="uni-hero-call" class="inline-flex items-center justify-center rounded-xl border-2 border-white/30 bg-white/5 px-8 py-4 text-base font-bold text-white hover:bg-white/10 transition-all focus:outline-none focus:ring-2 focus:ring-white/50">
|
||||
Talk to our team
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-14 grid grid-cols-2 sm:grid-cols-4 gap-4 lg:gap-6">
|
||||
{stats.map((stat) => (
|
||||
<div class="bg-white/5 backdrop-blur-sm rounded-xl p-4 lg:p-5 text-center border border-white/10">
|
||||
<p class="text-2xl lg:text-3xl font-bold text-white">{stat.value}</p>
|
||||
<p class="text-secondary-400 text-sm mt-1">{stat.label}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Overview -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<span class="text-purple-600 dark:text-purple-400 font-semibold text-sm uppercase tracking-wider">Built for institutions</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mt-2 mb-6">One platform for admissions through graduation</h2>
|
||||
<div class="space-y-5 text-lg text-secondary-700 dark:text-secondary-300 leading-relaxed">
|
||||
<p>
|
||||
Universities accumulate software the way they accumulate buildings — one tool for admissions, another for
|
||||
registration, a spreadsheet for grades, a separate system for faculty. Each works in isolation, but the seams show at
|
||||
exactly the wrong moments: registration week, exam season, results day. A university ERP replaces that patchwork with a
|
||||
single platform that follows each student from application to graduation, and gives staff one place to work.
|
||||
</p>
|
||||
<p>
|
||||
WorkRoot delivered precisely this for the <strong>Indian Institute of Technology, Patna</strong>. The institution
|
||||
needed to replace fragmented legacy systems with a unified platform spanning admissions, course registration,
|
||||
examination scheduling, grade management, faculty profiles, and administrative workflows. We built it on a
|
||||
<strong> Next.js</strong> front end with a <strong>Spring Boot</strong> backend and a <strong>MySQL</strong> data
|
||||
layer, engineered for scalability and high availability so it holds up when the whole campus logs in at once. In
|
||||
production it serves <strong>3,000+ students</strong>, <strong>500+ courses</strong>, and <strong>200+ faculty</strong>.
|
||||
</p>
|
||||
<p>
|
||||
The hard part of academic software is the peak. Registration and examinations concentrate enormous load into a few
|
||||
days, and the modules have to coordinate — prerequisites gate registration, registration drives exam scheduling,
|
||||
exams feed grading, grades roll into transcripts. We model those dependencies explicitly so the system stays
|
||||
conflict-free under pressure: capacity limits and clash detection at registration, hall and invigilator allocation at
|
||||
exam time, and automated GPA/CGPA computation and transcript generation at results.
|
||||
</p>
|
||||
<p>
|
||||
Role-based access keeps students, faculty, and administrators each seeing only what they should, and the unified
|
||||
student record becomes a single source of truth that ends the reconciliation scramble between departments. The
|
||||
platform is yours on delivery — full source code, documentation, and deployment access — so your institution stays in
|
||||
control of its most important data. If you are ready to retire a fragmented stack, we have built the replacement
|
||||
before, at an IIT.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Modules grid -->
|
||||
<section class="py-16 lg:py-24 bg-secondary-50 dark:bg-secondary-800/50">
|
||||
<div class="container-wrapper">
|
||||
<div class="text-center max-w-2xl mx-auto mb-12">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">University ERP modules</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">The full academic lifecycle, in one connected system.</p>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{modules.map((m) => (
|
||||
<div class="bg-white dark:bg-secondary-800 rounded-2xl p-7 border border-secondary-100 dark:border-secondary-700 shadow-sm hover:shadow-lg transition-shadow">
|
||||
<div class="w-12 h-12 rounded-xl bg-purple-50 dark:bg-purple-900/30 text-purple-600 dark:text-purple-300 flex items-center justify-center mb-4" aria-hidden="true">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 14l9-5-9-5-9 5 9 5z" /><path stroke-linecap="round" stroke-linejoin="round" d="M12 14l6.16-3.422A12.083 12.083 0 0112 21.5a12.083 12.083 0 01-6.16-10.922L12 14z" /></svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-secondary-900 dark:text-secondary-100 mb-2">{m.title}</h3>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-sm leading-relaxed">{m.body}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Comparison table -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-10">
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-secondary-900 dark:text-secondary-100 mb-4">Fragmented tools vs a unified ERP</h2>
|
||||
<p class="text-secondary-600 dark:text-secondary-400 text-lg">What changes when everything connects.</p>
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-2xl border border-secondary-200 dark:border-secondary-700 shadow-sm">
|
||||
<table class="w-full text-left border-collapse min-w-[640px]">
|
||||
<caption class="sr-only">Comparison of fragmented academic tools versus a unified WorkRoot university ERP</caption>
|
||||
<thead>
|
||||
<tr class="bg-secondary-50 dark:bg-secondary-800">
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-700 dark:text-secondary-200">Area</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-secondary-500 dark:text-secondary-400">Fragmented tools</th>
|
||||
<th scope="col" class="px-5 py-4 text-sm font-bold text-primary-700 dark:text-primary-300">Unified ERP (WorkRoot)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{comparison.map((row, i) => (
|
||||
<tr class={i % 2 === 0 ? 'bg-white dark:bg-secondary-900' : 'bg-secondary-50/50 dark:bg-secondary-800/40'}>
|
||||
<th scope="row" class="px-5 py-4 text-sm font-semibold text-secondary-900 dark:text-secondary-100 align-top">{row.dimension}</th>
|
||||
<td class="px-5 py-4 text-sm text-secondary-600 dark:text-secondary-400 align-top">{row.legacy}</td>
|
||||
<td class="px-5 py-4 text-sm text-secondary-700 dark:text-secondary-200 align-top font-medium">
|
||||
<span class="inline-flex items-start gap-2">
|
||||
<svg class="w-4 h-4 mt-0.5 flex-shrink-0 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" /></svg>
|
||||
{row.erp}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Case study -->
|
||||
<section class="py-16 lg:py-24 bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900">
|
||||
<div class="container-wrapper">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<span class="inline-flex items-center gap-2 px-4 py-1.5 mb-5 text-sm font-semibold text-purple-300 bg-purple-500/10 rounded-full border border-purple-500/20">Case study · Higher education</span>
|
||||
<h2 class="text-3xl sm:text-4xl font-bold text-white mb-4">University Management System — IIT Patna</h2>
|
||||
<p class="text-lg text-secondary-300 leading-relaxed mb-8">
|
||||
An end-to-end University Management System for the Indian Institute of Technology, Patna — managing student admissions,
|
||||
course registration, examination scheduling, grade management, faculty profiles, and administrative workflows in one
|
||||
scalable, high-availability platform.
|
||||
</p>
|
||||
<div class="grid grid-cols-3 gap-4 mb-8">
|
||||
{[{ v: '3,000+', l: 'Students served' }, { v: '500+', l: 'Courses managed' }, { v: '200+', l: 'Faculty onboarded' }].map((s) => (
|
||||
<div class="bg-white/5 border border-white/10 rounded-xl p-5 text-center">
|
||||
<p class="text-2xl sm:text-3xl font-bold text-white">{s.v}</p>
|
||||
<p class="text-secondary-400 text-xs sm:text-sm mt-1">{s.l}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<blockquote class="border-l-4 border-primary-500 pl-5 text-secondary-200 italic leading-relaxed">
|
||||
“WorkRoot delivered our University Management System for IIT Patna on time and within budget. The Next.js + Spring Boot
|
||||
architecture is robust and scalable. They are a reliable technology partner for complex enterprise projects.”
|
||||
<footer class="mt-3 not-italic text-sm text-secondary-400">— Dilip Raj, Director, MOC Soft Technologies Pvt Ltd</footer>
|
||||
</blockquote>
|
||||
<div class="mt-8 flex flex-wrap gap-4">
|
||||
<a href="/portfolio#university-management-iitp" class="inline-flex items-center gap-2 text-primary-300 font-semibold hover:text-primary-200">
|
||||
Read the full case study
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M17 8l4 4m0 0l-4 4m4-4H3" /></svg>
|
||||
</a>
|
||||
<a href="/services/custom-erp-development" class="inline-flex items-center gap-2 text-secondary-300 font-semibold hover:text-white">
|
||||
Explore custom ERP development
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7" /></svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ServiceFaq
|
||||
faqs={faqs}
|
||||
eyebrow="For institutions"
|
||||
heading="University ERP — your questions answered"
|
||||
subheading="Track record, modules, migration, scale, timelines, and the stack we use."
|
||||
/>
|
||||
|
||||
<GuaranteeBand />
|
||||
<InlineLeadForm />
|
||||
</BaseLayout>
|
||||
+14
-2
@@ -22,10 +22,22 @@ const sitemapSections = [
|
||||
title: 'Services',
|
||||
icon: 'briefcase',
|
||||
links: [
|
||||
{ name: 'All Services', url: '/services', description: 'Our full range of IT service offerings' },
|
||||
{ name: 'Web Development', url: '/services#web-development', description: 'Custom web applications and e-commerce' },
|
||||
{ name: 'Mobile Development', url: '/services#mobile-development', description: 'iOS, Android, and cross-platform apps' },
|
||||
{ name: 'AI & Machine Learning', url: '/services#ai-ml', description: 'Intelligent solutions and automation' },
|
||||
{ name: 'Cloud Services', url: '/services#cloud', description: 'Cloud migration and infrastructure' },
|
||||
{ name: 'UI/UX Design', url: '/services#ui-ux-design', description: 'Accessible, conversion-focused interfaces' },
|
||||
{ name: 'IT Consulting & DevOps', url: '/services#it-consulting', description: 'Architecture, cloud, and CI/CD' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Solutions',
|
||||
icon: 'briefcase',
|
||||
links: [
|
||||
{ name: 'Custom ERP Development', url: '/services/custom-erp-development', description: 'Bespoke enterprise systems on Spring Boot & Angular' },
|
||||
{ name: 'University ERP', url: '/services/university-erp', description: 'Admissions, exams, grading — built for IIT Patna' },
|
||||
{ name: 'Government IT & GeM Vendor', url: '/services/government-it-solutions-gem-vendor', description: 'GeM-empanelled, live across 11 districts' },
|
||||
{ name: 'Police Management System', url: '/services/police-management-system', description: 'FIR, case tracking & personnel for 15,000+ officers' },
|
||||
{ name: 'React Native App Development', url: '/services/react-native-app-development', description: 'One codebase for iOS and Android' },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -25,6 +25,12 @@ export const GET: APIRoute = async () => {
|
||||
const staticPages: SitemapEntry[] = [
|
||||
{ url: '/', changefreq: 'weekly', priority: 1.0 },
|
||||
{ url: '/services/', changefreq: 'monthly', priority: 0.9 },
|
||||
// Keyword-focused service landing pages
|
||||
{ url: '/services/custom-erp-development/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/services/government-it-solutions-gem-vendor/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/services/police-management-system/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/services/react-native-app-development/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/services/university-erp/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/portfolio/', changefreq: 'weekly', priority: 0.8 },
|
||||
{ url: '/about/', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/blog/', changefreq: 'weekly', priority: 0.8 },
|
||||
|
||||
Reference in New Issue
Block a user