Crosstalk-Solutions/project-nomad
Project NOMAD is an offline-first knowledge and education server. Wikipedia, thousands of books, courses, maps, and optional local AI, all running on hardware you own with no internet required.
The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
Most complex files
- admin/inertia/pages/easy-setup/index.tsx297 cx
- admin/app/services/docker_service.ts293 cx
- admin/inertia/pages/supply-depot.tsx277 cx
- admin/app/services/rag_service.ts235 cx
- admin/app/services/system_service.ts226 cx
- admin/app/services/benchmark_service.ts225 cx
- admin/inertia/pages/drug-reference/index.tsx222 cx
- admin/inertia/components/chat/KnowledgeBaseModal.tsx211 cx
- admin/app/services/ollama_service.ts184 cx
- admin/app/services/zim_service.ts155 cx
Dead code 37.85% unused · 197 findings
- admin/app/services/docker_service.tsunused-file
- admin/app/services/rag_service.tsunused-file
- admin/app/services/benchmark_service.tsunused-file
- admin/app/services/system_service.tsunused-file
- admin/app/services/zim_service.tsunused-file
- admin/app/services/ollama_service.tsunused-file
- admin/app/services/map_service.tsunused-file
- admin/app/jobs/ingest_drug_data_job.tsunused-file
- admin/app/services/drug_reference_service.tsunused-file
- admin/app/services/content_auto_update_service.tsunused-file
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 3 generated files: admin/app/data/conditions.ts, admin/app/data/home_remedies.ts, admin/app/data/natural_remedies.ts.
Largest clones in the code
- 20 lines in 2 placestsx240 tokens
480{installedServices.map((service) => ( 481 <AppCard 482 key={service.service_name} 483 service={service} 484 openDropdown={openDropdown} 485 dropdownRef={dropdownRef} 486 onOpenDropdown={setOpenDropdown} 487 onInstall={() => setModal({ type: 'install', service })} 488 onStart={() => setModal({ type: 'start', service })} 489 onStop={() => setModal({ type: 'stop', service })}First 10 of 20 lines.
- 23 lines in 2 placestypescript219 tokens
74friendly_name: vine.string().trim().minLength(1).maxLength(100), 75image: vine.string().trim().minLength(1), 76ports: vine 77 .array( 78 vine.object({ 79 container: vine.number().min(1).max(65535), 80 host: vine.number().min(1024).max(65535), 81 }) 82 ) 83 .optional(),First 10 of 23 lines.
- 23 lines in 2 placestypescript151 tokens
205 const got = isWithinWindow(c.start, c.end, DateTime.fromISO(c.at)) 206 const ok = got === c.expect 207 this.report(ok, `${c.name} (expected ${c.expect}, got ${got})`) 208 ok ? passed++ : failed++ 209} 210 211this.logger.log('') 212if (failed === 0) { 213 this.logger.success(`All ${passed} scenarios passed`) 214} else {First 10 of 23 lines.
7 more
- 22 lines in 2 placestypescript149 tokens
- 27 lines in 2 placestypescript140 tokens
- 32 lines in 2 placestsx138 tokens
- 18 lines in 3 placestypescript69 tokens
- 22 lines in 2 placestypescript133 tokens
- 26 lines in 2 placestypescript131 tokens
- 35 lines in 2 placesbash118 tokens
Largest clones over all files, tests and data included
- 20 lines in 2 placestsx240 tokens
480{installedServices.map((service) => ( 481 <AppCard 482 key={service.service_name} 483 service={service} 484 openDropdown={openDropdown} 485 dropdownRef={dropdownRef} 486 onOpenDropdown={setOpenDropdown} 487 onInstall={() => setModal({ type: 'install', service })} 488 onStart={() => setModal({ type: 'start', service })} 489 onStop={() => setModal({ type: 'stop', service })}First 10 of 20 lines.
- 23 lines in 2 placestypescript219 tokens
74friendly_name: vine.string().trim().minLength(1).maxLength(100), 75image: vine.string().trim().minLength(1), 76ports: vine 77 .array( 78 vine.object({ 79 container: vine.number().min(1).max(65535), 80 host: vine.number().min(1024).max(65535), 81 }) 82 ) 83 .optional(),First 10 of 23 lines.
- 27 lines in 3 placesyamldata files96 tokens.github/workflows/build-disk-collector.yml:1–27.github/workflows/build-sidecar-updater.yml:1–27.github/workflows/build-translate-proxy.yml:1–27
1name: Build Disk Collector Image 2 3on: 4 workflow_dispatch: 5 inputs: 6 version: 7 description: 'Semantic version to label the Docker image under (no "v" prefix, e.g. "1.2.3")' 8 required: true 9 type: string 10 tag_latest:First 10 of 27 lines.
- 23 lines in 2 placestypescript151 tokens
- 22 lines in 2 placestypescript149 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 207 | 37,988 | 71 | 921 | 2.42% |
| tsx | 120 | 21,925 | 17 | 234 | 1.07% |
| bash | 21 | 2,730 | 4 | 88 | 3.22% |
| python | 1 | 195 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 283 | 44,314 | 77 | 988 | 2.23% |
| tsx | 121 | 21,955 | 17 | 234 | 1.07% |
| yaml | 12 | 916 | 6 | 121 | 13.21% |
| bash | 23 | 2,755 | 5 | 92 | 3.34% |
| markdown | 19 | 3,284 | 2 | 17 | 0.52% |
| json | 9 | 2,306 | 0 | 0 | 0% |
| markup | 1 | 497 | 0 | 0 | 0% |
| python | 1 | 195 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
| css | 1 | 158 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Sep 22, 2026 | #9 | 37,960 (+394) | 472 | 76,559 | 107 | 1.9% | 1.97% | E 25.1 | 85da928 |
| Sep 15, 2026 | #12 | 37,007 (+40) | 472 | 76,559 | 107 | 1.9% | 1.97% | — | 85da928 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.