Interactive web application providing searchable access to 546+ curated OSINT (Open Source Intelligence) tools for OSINT practitioners.
- Hierarchical navigation mirroring the "OSINT Stack" bookmstructure with expandable tree view and breadcrumbs.
- Keyword search across tool names, category paths, and tags with inline highlighting of results.
- Multi-select filters for top-level categories, subcategories, and tags.
- Inline tool detail panel with quick actions to open the tool or copy the URL and a recommendations section for similar tools.
- Persistent "Research Shortlist" that stores saved tools in
localStorageand surfaces them in a dedicated sidebar. - Category overview summary with live counts that respond to active filters.
Node.js ≥ 18 is required for running tests and the data conversion script. No third-party packages are needed.
If you update bookmarks.html, run the converter to rebuild the structured dataset:
python3 scripts/convert_bookmarks.pyThis writes data/osint-tools.json, containing the normalized tools array and category tree.
Serve the public/ directory using your preferred static server. For example:
python3 -m http.server 8000Then open http://localhost:8000/public/ in your browser.
- Push your repository to GitHub/GitLab
- Log in to Cloudflare Dashboard
- Go to Pages → Create a project → Connect to Git
- Select your repository
- Configure build settings:
- Build command:
npm run build(or leave empty if using static files) - Build output directory:
app/dist(orpublicfor static deployment) - Root directory:
/(or/appif deploying the React app)
- Build command:
- Build your project locally:
# For the React app cd app npm run build # Or for static files, just use the public directory
- Go to Cloudflare Pages → Upload assets
- Drag and drop your
distfolder (orpublicfolder for static) - Set a project name and deploy
For production deployments, you may want to:
- Set up custom domains in the Pages settings
- Configure redirects in
_redirectsfile if needed - Enable analytics and security features
Your OSINT Directory will be available at https://your-project.pages.dev
Unit tests cover search scoring, filtering helpers, and shortlist state management:
npm test├── data/osint-tools.json # Generated dataset consumed by the UI
├── public/ # Static application shell
│ ├── index.html
│ ├── app.js
│ └── styles.css
├── scripts/convert_bookmarks.py # Netscape bookmark parser → structured JSON
├── src/lib/directory.js # Shared filtering & shortlist logic
├── src/types.d.ts # Dataset type declarations
└── tests/directory.test.js # Node test suite
- Enrich tool metadata with manual descriptions or scraped previews.
- Add quick export of filtered results to CSV/JSON for offline research packages.
- Integrate lightweight analytics (e.g., which categories are most explored) while respecting the privacy constraints outlined in
openspec/project.md.