forked from gnowgi/ndf-studio
-
Notifications
You must be signed in to change notification settings - Fork 0
README_ROADMAP
GN edited this page Jun 29, 2025
·
1 revision
NDF-Studio is an open, mobile-friendly knowledge construction platform that uses Controlled Natural Language (CNL) to represent knowledge as node-neighborhoods. This roadmap documents the development milestones and architectural directions toward our first stable release.
- Backend is stable using FastAPI + NetworkX.
- Frontend is functional on both mobile and desktop.
- Replaced Tailwind with UnoCSS for CSS utility support.
- Monaco-based CNL editor fully functional.
- YAML-based
.ndfformat is human-friendly and rendered from JSON internally.
- Support qualifiers for nodes (e.g., "female mathematician") → Stored in
node.qualifier - Support quantifiers for:
- Attributes (e.g., "has size: at least 5 (cm)")
- Relations (e.g., "most birds can fly")
- Update the parser and CNL grammar accordingly.
- Implement unique or globally consistent
node.id - Support document merging and deduplication using IDs.
- Enables computation of scorecards across documents.
- Migrate
parsed.yamlto backend-nativeparsed.json. parsed.json also removed. we use composed.json - Frontend renders JSON using 'composed.json` and composed.yaml used for NDFPreview.
- Aligns with schema validation, testing, and frontend frameworks.
- Distinguish insertion triggers:
-
<...>→ Relation -
has ...:→ Attribute
-
- Improve template menu UX with semantic categorization.
- Accordion-style block insertion panel above editor.
- Basic users: Blockly blocks
- Advanced users: Monaco text editor
- Pre-existing Blockly block designs to be reused.
- Tentative scoring rubric:
- Node: 1 point
- Relation: 2 points
- Attribute: 3 points
- Node with qualifier: 2 points
- Relation and Attribute with qualifier 3 points
- Quantified relation/attribute: 5 points
- Modality included for attributes and relations 5 points
- Logical connective: 10 points
- Argument composition: TBD
- Rubric will be peer-reviewed and editable.
- Backend support for storing multiple node-states
- Add
process_blockin Blockly: transition from prior-state to post-state. - Prior-state and post-state are a set of node-states
- Post-state of one process may serve as prior-state of another, like a petri-net
- Backend schema updated to support role:
process, 'state'
- Add support for user IDs without requiring email/mobile auth.
- Store user workspace under
/graph_data/users/{user_id}.
- Follow accessibility best practices (WCAG).
- UI and interaction audit to support learners with disabilities.
- Internationalization-ready (i18n)
- English-only in first release.
- Language switching via user preference.
- Implement Help and Preferences Tabs
- Users can explore and edit their settings like knowledge units.
- The Help document can be a readonly example graph document
- Wrap frontend + backend in Electron for offline use.
- Add Auto-update mechanism when online.
- Unit tests for backend logic
- Functionality tests for parser, graph storage, and UI
- Test suite for CI-ready development.
- Add docstrings in all Python and JS/TS modules
- Internal dev documentation for:
- Backend APIs
- Graph schema
- CNL syntax
- Graph as document model (.ndf)
- Freeform markdown + CNL per node section
- Parsed graph rendering with Cytoscape
- Monaco editor with save/parse hooks
- Block templates for relation/attribute insertion
- Soft Inverse relation generation, to distinguish between what is asserted and what is inferred (only in the frontend)
- Graph templates and graph metadata
- DisplayHTML card grid for NDF preview
- UnoCSS styling for mobile/desktop layout
- Delete graph, before the graph directory is removed, all mentions of the Nodes, and the graph in the nodes_registry.json to be removed, prior to deleting the nodes from user/nodes/ and then the graph directory from the user directory.
- PEG grammar support for CNL parsing
- Real-time CNL syntax highlighting
- Plugin system for new CNL features
- Interoperability with RDF / OWL via export adapters
- Learning analytics and feedback suggestions
-
v0.1: Minimal working CNL + Graph + Blockly -
v0.2: Scorecard + Process modeling + Electron App -
v0.3: Accessibility + Localization + Help system -
v1.0: Full offline-ready multiuser app with update support
- Reintroduce automatic summary paragraph for each node.
- Use spaCy-based NLP to extract:
- Common/proper nouns → Node suggestions
- Verbs/prepositions → Relation triggers
- Adjective/noun phrases → Attribute suggestions
- Parsed blocks rendered in
DisplayHTMLas:- Suggested Relations
- Suggested Attributes
- Suggested Node Types
- Update
DisplayHTMLcards to show:- Node description
- Extracted blocks (editable later)
- Design or fine-tune a Small Language Model (SLM) for:
- Generating single-paragraph summaries per node.
- Operating fully offline or locally for cost-free inference.
- Use open models (e.g., TinyLlama, DistilBERT) and fine-tune on:
- Student-written node descriptions
- Public knowledge bases (e.g., Wikipedia)
- Output should be concise, factual, and paraphrased from CNL blocks.
- Integrate SLM into generate summary workflow as fallback for missing descriptions.
“Structure should emerge from shared practice, not rigid formalism.”
To be confirmed. AGPLv3 recommended for educational openness.