WikiNode transforms Wikipedia into an interactive graph, making it easier to explore and visualise connections between topics.

- Interactive Exploration: Input a Wikipedia article to visualise related topics as interconnected nodes
- Dynamic Expansion: Click on nodes to delve deeper into associated articles
- Intelligent Filtering: Uses Local Clustering Coefficient to surface relevant connections
- History Management: Full undo/redo system for seamless navigation
- Theme Support: Clean interface supporting both dark and light modes
- Export Options: Save graphs in JSON, CSV, and PNG formats
- Performance Optimised: Multi-level caching for fast response times
To run WikiNode locally:
-
Clone the Repository:
git clone https://github.com/sukhsare/WikiNode.git
-
Navigate to the Project Directory:
cd WikiNode
-
Open the Application: Launch
index.html
in your preferred web browser.
- JavaScript: Core functionality and interactivity
- HTML & CSS: Structure and styling
- Wikipedia REST API: Fetches article data and related topics
- vis.js: Renders the interactive graph
WikiNode uses a modular architecture with clear separation of concerns:
src/
├── app.js # Application entry point
├── config.js # Configuration management
└── modules/
├── api.js # Wikipedia API integration with caching
├── graph.js # Graph processing and visualisation
├── search.js # Search functionality
├── theme.js # Theme management
├── undoManager.js # History tracking
└── utils.js # Utility functions
The project includes unit and integration tests to verify functionality:
- Unit Tests: Verify individual components like API functions, graph calculations, and utility functions
- Integration Tests: Ensure components work together correctly
- Performance Tests: Cache efficiency and response time benchmarks
- Mock Objects: Simulate external dependencies for reliable testing
Test files are located in the tests
directory and follow the structure:
tests/unit/
- Individual component teststests/integration/
- Tests for component interactionstests/mocks/
- Mock implementations of external libraries