Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - blaster151/zettelview: A note-taking app that aims to be as usable as Obsidian but with additional features and less friction · GitHub
Skip to content

Repository files navigation

ZettelView - Advanced Note Management System

A comprehensive, feature-rich note-taking application with advanced search algorithms, export/import capabilities, real-time collaboration, and much more.

🚀 Features

Core Features

  • Note Management: Create, edit, organize, and link notes
  • Tag System: Flexible tagging and categorization
  • Search: Advanced search with multiple algorithms
  • Graph View: Visual note relationships and connections
  • Calendar View: Time-based note organization
  • Themes: Dark/light mode support

Advanced Search Algorithms

  • Fuzzy Search: Find notes with typos and similar terms
  • Semantic Search: Understand context and meaning
  • NLP Search: Natural language processing capabilities
  • Combined Search: Weighted combination of all algorithms
  • Search Clustering: Group related results automatically
  • Search Analytics: Track search patterns and effectiveness
  • Search Suggestions: AI-powered query suggestions
  • Query Templates: Save and reuse common searches

Export/Import System

  • Multiple Formats: JSON, Markdown, HTML, TXT, CSV, XML, YAML
  • Third-party Support: Import from Roam Research, Evernote, Obsidian
  • Templates: Customizable export templates
  • Batch Processing: Handle large datasets efficiently
  • Validation Rules: Custom validation for imported content
  • Compression & Encryption: Secure data handling
  • Progress Tracking: Real-time operation monitoring

Real-Time Collaboration

  • WebSocket Support: Real-time updates across users
  • User Presence: See who's currently viewing notes
  • Cursor Tracking: Live cursor positions
  • Conflict Resolution: Automatic merge strategies
  • Session Management: Collaborative editing sessions
  • Permissions: Granular access control

Advanced Graph Features

  • Force-Directed Layout: Interactive D3.js visualization
  • Multiple Algorithms: Different clustering and layout options
  • Interactive Controls: Zoom, pan, filter, and search
  • Analytics: Graph statistics and insights
  • Custom Visualizations: Heatmaps, timelines, network graphs

Note Templates & Workflows

  • Template System: Pre-defined note structures
  • Variable Support: Dynamic content insertion
  • Workflow Automation: Multi-step note processes
  • Category Management: Organize templates by purpose
  • Usage Analytics: Track template effectiveness

Mobile Optimization

  • Responsive Design: Works on all screen sizes
  • Touch Gestures: Swipe, pinch, and tap interactions
  • Voice Input: Speech-to-text capabilities
  • Offline Support: Work without internet connection
  • Haptic Feedback: Tactile response for actions
  • Keyboard Handling: Mobile keyboard optimization

Offline Support

  • IndexedDB Storage: Local data persistence
  • Sync Queue: Offline operation queuing
  • Conflict Detection: Automatic conflict resolution
  • Caching: Smart content caching
  • Compression: Efficient storage usage
  • Network Monitoring: Connection status tracking

Advanced Security

  • Authentication: User login and session management
  • Authorization: Role-based access control
  • Encryption: End-to-end data encryption
  • Audit Logging: Complete activity tracking
  • User Management: Admin controls and permissions
  • Security Events: Real-time security monitoring

Performance Optimization

  • Caching Strategies: Multi-level caching system
  • Lazy Loading: On-demand content loading
  • Virtualization: Efficient large list rendering
  • Debouncing/Throttling: Optimized user interactions
  • Real-time Monitoring: Performance metrics tracking
  • Resource Management: Memory and CPU optimization

Accessibility

  • Screen Reader Support: Full ARIA compliance
  • Keyboard Navigation: Complete keyboard accessibility
  • Visual Accessibility: High contrast and zoom support
  • WCAG Compliance: Web Content Accessibility Guidelines
  • Focus Management: Proper focus handling
  • Error Announcements: Screen reader error reporting

Advanced Data Visualization

  • Multiple Chart Types: Bar, line, pie, scatter plots
  • Analytics Dashboard: Comprehensive data insights
  • Advanced Visualizations: Heatmaps, network graphs, timelines
  • Custom Visualizations: User-defined chart types
  • Interactive Features: Zoom, filter, drill-down capabilities

Advanced Notifications

  • Multiple Types: Success, warning, error, info notifications
  • Templates: Pre-defined notification formats
  • Scheduling: Time-based notifications
  • Grouping: Related notification bundling
  • Delivery Options: In-app, email, push notifications
  • Preferences: User notification settings

Advanced Backup

  • Multiple Strategies: Incremental, full, differential backups
  • Compression: Efficient backup storage
  • Encryption: Secure backup protection
  • Cloud Integration: Google Drive, Dropbox, OneDrive
  • Scheduling: Automated backup timing
  • Retention: Configurable backup retention
  • Health Monitoring: Backup integrity checking

🛠️ Installation

Prerequisites

  • Node.js 16+
  • npm or yarn
  • Modern web browser

Setup

# Clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=http://localhost:3000VITE_WS_URL=ws://localhost:3000VITE_ENCRYPTION_KEY=your-secret-key

📖 Usage

Getting Started

  1. Create Your First Note: Click the "+" button to create a new note
  2. Add Tags: Use the tag system to organize your notes
  3. Link Notes: Create connections between related notes
  4. Search: Use the advanced search to find notes quickly
  5. Explore: Use the graph view to visualize note relationships

Advanced Search

// Example: Using advanced search algorithmsconstsearchService=AdvancedSearchAlgorithms.getInstance();// Combined search with custom optionsconstresults=searchService.combinedSearch('machine learning',notes,{fuzzyThreshold: 0.7,semanticWeight: 0.3,fuzzyWeight: 0.4,exactWeight: 0.3,maxResults: 20,enableClustering: true});

Export/Import

// Example: Exporting notes with templatesconstexportService=AdvancedExportImport.getInstance();constexportOptions: ExportOptions={format: 'markdown',template: 'academic-paper',includeMetadata: true,includeTags: true,compression: true};constresult=awaitexportService.exportNotes(notes,exportOptions);

Real-Time Collaboration

// Example: Setting up collaborationconstcollaborationService=RealTimeCollaboration.getInstance();awaitcollaborationService.startSession('note-123',{enablePresence: true,enableCursors: true,conflictResolution: 'merge'});

🔧 Configuration

Search Configuration

// Configure search algorithmsconstsearchConfig={fuzzyThreshold: 0.7,semanticWeight: 0.3,enableClustering: true,maxResults: 50};

Export Templates

// Create custom export templateconsttemplate: ExportTemplate={id: 'custom-template',name: 'Custom Template',format: 'markdown',template: `# {{title}}\n\n{{content}}\n\nTags: {{#each tags}}#{{this}} {{/each}}`,variables: ['title','content','tags']};

Validation Rules

// Add custom validation rulesconstrule: ValidationRule={field: 'title',type: 'minLength',value: 10,message: 'Title must be at least 10 characters long'};

🧪 Testing

Run Tests

# Run all tests
npm test# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:e2e

Test Structure

tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── e2e/ # End-to-end tests
└── fixtures/ # Test data

📊 Performance

Optimization Features

  • Lazy Loading: Components load on demand
  • Virtualization: Efficient rendering of large lists
  • Caching: Multi-level caching system
  • Compression: Data compression for storage
  • Debouncing: Optimized user interactions

Monitoring

  • Real-time Metrics: Performance tracking
  • Memory Usage: Memory optimization
  • Network Requests: Request optimization
  • User Interactions: Interaction analytics

🔒 Security

Security Features

  • Authentication: Secure user authentication
  • Authorization: Role-based access control
  • Encryption: End-to-end encryption
  • Audit Logging: Complete activity tracking
  • Input Validation: Comprehensive input sanitization

Best Practices

  • Use HTTPS in production
  • Regularly update dependencies
  • Implement rate limiting
  • Monitor security events
  • Regular security audits

🌐 Deployment

Production Build

# Build for production
npm run build
# Preview production build
npm run preview

Deployment Options

  • Vercel: vercel --prod
  • Netlify: netlify deploy --prod
  • Docker: docker build -t zettelview .
  • Static Hosting: Upload dist/ folder

Environment Configuration

# Production environment
NODE_ENV=production
VITE_API_URL=https://api.yourdomain.com
VITE_WS_URL=wss://api.yourdomain.com

🤝 Contributing

Development Setup

# Fork and clone the repository
git clone https://github.com/yourusername/zettelview.git
cd zettelview
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git commit -m 'Add amazing feature'# Push to branch
git push origin feature/amazing-feature
# Create Pull Request

Code Style

  • Use TypeScript for all new code
  • Follow ESLint configuration
  • Write comprehensive tests
  • Update documentation
  • Follow conventional commits

Testing Guidelines

  • Write unit tests for all functions
  • Include integration tests for features
  • Maintain good test coverage
  • Use meaningful test descriptions

📝 API Documentation

Core Services

AdvancedSearchAlgorithms

classAdvancedSearchAlgorithms{// Fuzzy search with configurable thresholdfuzzySearch(query: string,notes: Note[],threshold?: number): SearchResult[]// Semantic search with context understandingsemanticSearch(query: string,notes: Note[]): SearchResult[]// NLP search with entity recognitionnlpSearch(query: string,notes: Note[]): SearchResult[]// Combined search with weighted algorithmscombinedSearch(query: string,notes: Note[],options?: SearchOptions): SearchResult[]// Get search suggestionsgetSearchSuggestions(query: string,notes: Note[]): string[]// Get search analyticsgetSearchAnalytics(queries: string[],notes: Note[]): SearchAnalytics}

AdvancedExportImport

classAdvancedExportImport{// Export notes with various formats and optionsexportNotes(notes: Note[],options: ExportOptions): Promise<string|Blob>// Import notes with validation and processingimportNotes(content: string,options: ImportOptions): Promise<ImportResult>// Template managementgetTemplates(): ExportTemplate[]addTemplate(template: ExportTemplate): voidremoveTemplate(templateId: string): boolean// Validation rulesgetValidationRules(): ValidationRule[]addValidationRule(rule: ValidationRule): voidremoveValidationRule(index: number): boolean// Batch operationsgetBatchOperations(): BatchOperation[]cancelBatchOperation(id: string): booleanclearCompletedOperations(): void}

RealTimeCollaboration

classRealTimeCollaboration{// Start collaboration sessionstartSession(noteId: string,options?: CollaborationOptions): Promise<void>// Join existing sessionjoinSession(sessionId: string,userId: string): Promise<void>// Send cursor updateupdateCursor(position: CursorPosition): void// Send content updateupdateContent(content: string): void// Handle conflictsresolveConflict(conflict: Conflict): Promise<Resolution>// Get session participantsgetParticipants(): Participant[]}

Component APIs

AdvancedSearchAlgorithmsDemo

interfaceProps{// Demo-specific props}

AdvancedExportImportDemo

interfaceProps{// Demo-specific props}

🐛 Troubleshooting

Common Issues

Search Not Working

  1. Check if notes are properly indexed
  2. Verify search algorithm configuration
  3. Ensure proper data format
  4. Check browser console for errors

Export/Import Issues

  1. Verify file format compatibility
  2. Check validation rules
  3. Ensure proper permissions
  4. Review error messages in console

Performance Issues

  1. Enable lazy loading
  2. Reduce batch sizes
  3. Optimize search queries
  4. Check memory usage

Collaboration Problems

  1. Verify WebSocket connection
  2. Check user permissions
  3. Ensure proper session setup
  4. Review conflict resolution settings

Debug Mode

# Enable debug logging
DEBUG=zettelview:* npm run dev
# Enable verbose logging
VERBOSE=true npm run dev

Error Reporting

  • Check browser console for errors
  • Review network tab for failed requests
  • Check application logs
  • Use browser dev tools for debugging

📈 Roadmap

Upcoming Features

  • Advanced AI integration
  • Plugin marketplace
  • Mobile app
  • Advanced analytics
  • Multi-language support
  • Advanced workflows
  • Enterprise features
  • API for third-party integrations

Planned Improvements

  • Performance optimizations
  • Enhanced security features
  • Better accessibility
  • More export formats
  • Advanced collaboration features
  • Improved mobile experience

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • D3.js for graph visualizations
  • Zustand for state management
  • React for the UI framework
  • TypeScript for type safety
  • All contributors and users

📞 Support


ZettelView - Advanced note management for the modern world.

About

A note-taking app that aims to be as usable as Obsidian but with additional features and less friction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages