Files
CompanySite/src/pages/services/police-management-system.astro
T
platform-mcpandClaude Opus 4.8 22251ea82e
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
feat(services): add keyword-focused service landing pages
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>
2026-06-19 09:11:40 +05:30

286 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
// 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. WorkRoots 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 jurisdictions 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 districts 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 Bihars 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 districts 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 (20182022), 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 (20182022) 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>