a reactive (signals based) hypermedia web framework (wip) stormlightlabs.github.io/volt
hypermedia frontend signals
voltx TODO.md
11 kB · 268 lines
Markdown
at main

Better Demo Implementation TODO #

Existing Issues #

Phase 1: Foundation (First 4 Deliverables) #

1. Convert to Declarative Mode #

Approach: Use DOM utilities (lib/src/demo/utils.ts) to programmatically build HTML markup that uses declarative VoltX attributes (data-volt-state, data-volt-computed, data-volt-*), then mount with charge() instead of programmatic mount() + signals.

2. Implement Multi-Page Routing #

3. Add Tooltip CSS Feature #

4. Create Home Page #

    • Bundle size < 15KB
    • No virtual DOM
    • Signal-based reactivity
    • Zero dependencies
    • Declarative-first approach

PHASE 1 COMPLETE ✓ #

Phase 2: Core Feature Pages #

5. Page: Getting Started #

6. Page: Reactivity #

7. Page: HTTP #

8. Page: State #

    • $store - access global state
    • $scope - current scope reference
    • $pulse - microtask scheduling
    • $uid - deterministic IDs
    • $probe - element refs
    • $pins - custom helpers
    • $arc - custom event dispatch

Phase 3: Plugin & Advanced Pages #

9. Page: Persistence #

10. Page: Animations #

11. Page: Forms #

Phase 4: Reference & Patterns #

12. Page: CSS #

13. Page: Patterns #

Phase 5: Polish & Documentation #

14. Framework Capabilities Showcase #

Note: Showcase framework capabilities as features are completed from ROADMAP.md

15. View-Source Friendly Code #

16. Copy-Paste Ready Patterns #

File Structure #

lib/
  index.html              # Main entry with routing and global state
  src/
    main.ts              # Minimal bootstrap (charge + navigate init)
    demo/
      index.ts           # Removed or minimal utilities only
      sections/          # Keep or convert to HTML partials
      utils.ts           # DOM utilities (may still be useful)
    pages/               # New directory for page templates
      home.html
      getting-started.html
      reactivity.html
      http.html
      state.html
      persistence.html
      animations.html
      forms.html
      css.html
      patterns.html
    styles/
      components.css     # Add tooltip styles here
      ...

Example Ideas #

Many of these are ideas, not planned to be implemented

Components #

  • Modal Dialog - Conditional rendering, focus trapping, backdrop, keyboard escape
  • Tabs & Accordion - Conditional rendering, active state management, keyboard navigation
  • Form Validation - Model binding, computed validation, conditional messages, error states

Client-Side (SPA/Static) #

  • ✓ Counter - Basic signals, computed, event handling

  • ✓ TodoMVC - List rendering, persistence, filtering, CRUD operations

  • Search with Autocomplete - Async effects, debouncing, API integration, keyboard navigation

  • Calculator - Event handling, computed expressions, button grid, operation state

  • Image Gallery - For loops, filtering, lightbox, category selection

  • Multi-Step Wizard - Form state across steps, validation per step, progress tracking, navigation

  • Note-Taking App - Rich CRUD, categories/tags, search/filter, localStorage persistence, markdown preview

  • Expense Tracker - Date handling, categories, computed totals/charts, filtering by date range, CSV export

  • Kanban Board - Drag-and-drop (via events), column management, task editing, state persistence

  • Timer/Stopwatch - Async effects, intervals, lap times, pause/resume, localStorage for history

  • Real-time Chat - SSE for messages, typing indicators, user presence, message history

  • Live Dashboard - SSE for metrics, charts updating in real-time, WebSocket fallback

  • Collaborative Editor - Operational transforms, SSE for changes, conflict resolution, cursor positions

  • Infinite Scroll Feed - Polling for new items, intersection observer, virtualized rendering

  • Admin Panel/CMS - CRUD operations, data tables, filters, pagination, bulk actions

Server-Side Rendered (SSR) #

These will live in an example repo.

  • Authentication Flows - Login, signup, password reset, email verification (Go, Python, Rust, Node)
  • File Upload with Progress - Chunked uploads, progress bars, validation (Go, Python, Rust, Node)
  • Search with Server-Side Filtering - Debounced search, paginated results (Go, Python, Rust, Node)

Desktop Apps #

  • Note Editor - Local file system, syntax highlighting, multi-tab, settings persistence
  • System Monitor - CPU/memory graphs, process list, real-time updates
  • Database Client - Table browser, query editor, result grid, export
  • Media Player - File browser, playlists, controls, metadata display