Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
A 501(c)(3) public charity that builds nonprofits' technology capacity: fractional CTO leadership, development, and free devices and software, priced to size.
BusinessRuby · HamlGitHub @Lighthouse-NonprofitOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Actively maintained open-source case management for human services organizations.
Taken from the repository README
Loading the full README.
Read the full README ↗CaseLight is a containerized, modernized fork of OSCaR (Open Source Case-management and Record-keeping), maintained by Lighthouse Nonprofit Technologies for nonprofit case management — tracking individuals, households, programs, assessments, and case notes.
CaseLight runs a modernized, supported stack — backend and frontend. The application was
migrated off the end-of-life Ruby 2.3.3 / Rails 4.2 it inherited from upstream OSCaR up to
current, maintained versions, and the frontend/asset-pipeline EOL set was retired rung-by-rung
in 2026-07 — the whole POAM-017 family is closed (a–g), finishing with the Bootstrap 5.3
migration and the in-house caselight_theme
(docs/compliance/poam-017g-verification.md):
docs/compliance/.Intentionally not carried over from upstream for the current pilot scope: the Khmer locale, the Thredded community forum, and the v1 mobile API.
CaseLight models the real shape of frontline casework — and lets staff reshape it without code.
See the User Guide for a screen-by-screen walkthrough.
docs/pdf/) — a User Guide, an Administrator Guide, and a Brochure; rebuild them from the markdown sources with docs/build-pdfs.js.rake compliance:evidence).CaseLight is a fork of OSCaR — Open Source Case-management and Record-keeping, originally built by Rotati Consulting and Children in Families.
OSCaR is licensed under AGPL-3.0 — stated in the upstream
README's License section
("OSCaR Web Application is released under AGPL"; verified 2026-07-26) — and CaseLight preserves it
(see LICENSE).
The AGPL's network-use clause is important: if you run a modified version of CaseLight
as a network service, you must make your modified source available to its users. Publish
your fork's source accordingly.
| Component | Version | Notes |
|---|---|---|
| Ruby | 4.0.5 | runs inside the Docker image (ruby:4.0, Debian Trixie) |
| Rails | 8.1.3.1 | Rack 3 |
| PostgreSQL | 17 | primary relational store (pg 1.6) |
| MongoDB | 8.0 | change / audit history (Mongoid 9.1) |
| Redis + Sidekiq | redis 7 / sidekiq 8.1 | background jobs |
| Auth | Devise 5 + MFA | TOTP (devise-two-factor) + WebAuthn passkeys (webauthn), password policy (devise-security) |
| App server | puma 8 | behind a TLS reverse proxy (force_ssl + HSTS); replaced thin 2026-07 |
| Asset pipeline | Sprockets 4.4 + dart-sass + ES2015+ (build-time), haml 7.5 | modernized rung-by-rung 2026-07 (POAM-017e closed) |
| Frontend | jQuery 4.0.0, Bootstrap 5.3.8 + in-house caselight_theme (POAM-017g closed; INSPINIA removed), Trix 2.1, Tom Select 2.6, FullCalendar 6.1, formBuilder 3.23, Chart.js 4.4, vanillajs-datepicker 1.3.4, fileinput 5.5.4, Font Awesome 6.7 (v4 shims) | whole POAM-017 family closed (a–g); eval-free rule builder; enforced nonce-based CSP |
Requires Docker and the Docker Compose plugin on a Linux host.
git clone <your-fork-url> caselight
cd caselight
# 1. Create your environment file from the template, then fill in real values.
cp .env.example .env
# Generate strong secrets, e.g.:
# SECRET_KEY_BASE=$(openssl rand -hex 64)
# DATABASE_PASSWORD=$(openssl rand -hex 24)
# Edit .env accordingly. .env is gitignored — never commit it.
# 2. Build the image (compiles native gems; the first build is slow).
docker compose build
# 3. Start the datastores, then create + migrate the database.
docker compose up -d db mongo redis
docker compose run --rm app bundle exec rake db:create db:migrate
# 4. Create your first tenant (OSCaR is multi-tenant by subdomain; the
# short_name is the subdomain label and Postgres schema — lowercase, no underscores).
docker compose run --rm app bundle exec rails runner \
"Organization.create_and_build_tanent(short_name: 'yourorg', full_name: 'Your Organization')"
# 5. Seed reference data, then bring up the app and worker.
docker compose run --rm app bundle exec rake db:seed
docker compose up -d app sidekiq
The app listens on 127.0.0.1:3000. Put a TLS-terminating reverse proxy in front of it
for any non-local use. See Dockerfile and
docker-compose.yml for the full build and service definitions, and
bootstrap.sh for an end-to-end deploy script (clone → build → migrate →
tenant → seed → up); tune the TENANT_SHORT / TENANT_FULL values at the top first. The
operator runbook — deploying, verifying, TLS, backups, containment — is
OPERATIONS.md.
CaseLight has been hardened toward FedRAMP Moderate and SOC 2 (Security · Confidentiality · Privacy) auditability at the application layer — the phased program (0–7) is complete. What's in place:
Authentication & sessions
Transport & application hardening
'self'; violation reports collected at
/csp_reports; ENFORCE_CSP=false falls back to report-only), a
strict security-header set (X-Frame-Options, X-Content-Type-Options, Referrer-Policy, …), and
secure / HttpOnly / SameSite session cookies.support_unencrypted_data=false: a non-ciphertext value in an encrypted
column raises rather than being silently tolerated) — and parameter-log redaction of
credentials and PII.Audit & access logging
lograge emits one JSON line per request, tagged with request_id,
user_id, tenant, and remote_ip. Disabled in test.AccessLog (MongoDB via Mongoid)
records successful reads (show / index) of sensitive resources (Clients, Progress Notes,
Assessments, Case Notes, Household Notes, Household Alerts) via the AccessAudit concern. Only identifiers (resource type/id) and a
denormalized user_email are stored — never record contents. Toggled by
config.x.access_logging_enabled (defaults on; fails safe to on).before_failure hook) and
authorization denials (CanCanCan / Pundit) are written to the same AccessLog, always. Logging never
raises into the request it audits.AccessLog is per-tenant by default_scope (Mongo is a shared
DB) and append-only at the app layer (before_update / before_destroy raise); true WORM is an infra
hand-off.docs/compliance/audit-retention.md;
removed only by the sanctioned rake audit:purge. Control narrative in
docs/compliance/audit-logging.md (FedRAMP AU-2/3/6/9/11/12,
SOC 2 CC7.2/7.3).Authorization & data protection
docs/compliance/drills/).rake compliance:evidence bundle live in docs/compliance/.Secure SDLC
docs/compliance/.Deployment
.env (gitignored); the image ships none, and per-deploy secrets are generated.caselight_theme
(POAM-017g closed; see docs/compliance/poam-017g-verification.md); rebuild the image to
pick up gem/security updates, and keep the edges patched (host OS, proxy, TLS). See
docs/compliance/vulnerability-poam.md
for the itemized ledger, severities, and dated remediation targets.SECURITY.md for the controls required first.