An offline-first criminal justice information system for low-connectivity environments
OpenJustice is an open-source Digital Public Good built to digitize criminal justice record management for agencies operating in low-connectivity environments, starting with Sierra Leone. The system works offline, runs on basic hardware, and handles the full case lifecycle across law enforcement, prosecution, judiciary, and corrections. It is designed to be adapted and deployed by any country.
- Offline-first Progressive Web App -- full functionality without internet, with background sync when connectivity returns
- Dual-channel field tools -- USSD interface for 2G networks and WhatsApp integration for field officers
- Role-based access control -- six default roles with granular, configurable permissions
- AES-256 PII encryption -- all personally identifiable information encrypted at rest
- Country-configurable -- adaptable legal frameworks, national ID systems, rank structures, and languages
- Tamper-evident audit trail -- full logging of every data mutation
- Inter-agency data sharing API -- secure, controlled information exchange between justice-sector agencies
- Geospatial analytics -- crime mapping, hotspot detection, and location-based dashboards
- Broad coverage -- 24 backend modules, 32 database models, 69 reusable UI components
| Layer | Technology |
|---|---|
| Backend | NestJS 11, TypeScript, Prisma ORM |
| Database | PostgreSQL 15+ |
| Frontend | Next.js 16, React 19 |
| Styling | Tailwind CSS 4, shadcn/ui |
| Queue / Cache | Redis (BullMQ) |
| Storage | S3-compatible object storage |
| Infrastructure | Docker |
- Node.js 20+
- Docker and Docker Compose
- PostgreSQL 15+ (or use the provided Docker setup)
cd server
cp .env.example .env
npm install
npx prisma generate
npx prisma db push
npx prisma db seed
npm run start:devcd client
cp .env.example .env.local
npm install
npm run devThe backend runs at http://localhost:3000 (Swagger docs at /api/docs). The frontend runs at http://localhost:3001.
Full documentation is available in the docs/ directory, covering architecture, module references, API specifications, deployment guides, and country-adaptation instructions.
Contributions are welcome. Please read CONTRIBUTING.md for guidelines on the development workflow, coding standards, and pull request process.
This project is licensed under the MIT License. See LICENSE for details.
For questions, partnership inquiries, or implementation support:
Saidu Bunduka Kamara -- [email protected]
OpenJustice is aligned with United Nations Sustainable Development Goal 16: Peace, Justice and Strong Institutions.