Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

53 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Compost 🌱 - Orchard Core Edition

Key Advantages

  • Modular Architecture: Build custom modules for mind maps, kanban boards, meeting transcriptions
  • Content Type System: Perfect for WorkContext, MindMapNode, TreeNode, KanbanCard as content types
  • Workflow Engine: Automate the Mind Map β†’ Tree β†’ Kanban promotion flow
  • GraphQL API: Built-in API for mobile apps or future integrations
  • Admin Dashboard: Professional UI out of the box with customizable widgets
  • Multi-tenancy: Future-proof if you want to support teams
  • Responsive Themes: Works on desktop, tablet (iPad), and mobile (Fold Z6 browser)
  • Real-time with SignalR: Built-in support for live transcript updates
  • Deployment Flexibility: Self-host or Azure App Service

Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Orchard Core CMS                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚   Custom    β”‚  β”‚   Custom    β”‚  β”‚   Custom    β”‚         β”‚
β”‚  β”‚   Modules   β”‚  β”‚   Themes    β”‚  β”‚   Workflows β”‚         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚         Compost Modules (Your Custom Code)           β”‚  β”‚
β”‚  β”‚  β€’ Compost.Contexts                                  β”‚  β”‚
β”‚  β”‚  β€’ Compost.MindMap                                   β”‚  β”‚
β”‚  β”‚  β€’ Compost.Transcription                             β”‚  β”‚
β”‚  β”‚  β€’ Compost.Kanban                                    β”‚  β”‚
β”‚  β”‚  β€’ Compost.Snippets                                  β”‚  β”‚
β”‚  β”‚  β€’ Compost.Patterns                                  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Core Services Layer                       β”‚
β”‚  β€’ IContextManager      β€’ IPatternRecognition               β”‚
β”‚  β€’ ITranscription       β€’ ICodeSnippetService               β”‚
β”‚  β€’ IDecomposition       β€’ ISyncService                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Data Layer                                β”‚
β”‚  β€’ Cosmos DB (via Orchard's YesSql abstraction)             β”‚
β”‚  β€’ Azure Blob Storage (meetings)                            β”‚
β”‚  β€’ Local SQLite (offline cache)                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   External Services                         β”‚
β”‚  β€’ Azure Speech Services  β€’ Azure OpenAI                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Project Structure

Compost/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ Compost.Web/                      # Main Orchard Core application
β”‚   β”‚   β”œβ”€β”€ appsettings.json
β”‚   β”‚   β”œβ”€β”€ Startup.cs
β”‚   β”‚   └── Program.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Modules/                          # Custom Orchard Modules
β”‚   β”‚   β”œβ”€β”€ Compost.Contexts/            # Context management module
β”‚   β”‚   β”‚   β”œβ”€β”€ Manifest.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Startup.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Models/
β”‚   β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ ViewModels/
β”‚   β”‚   β”‚   β”œβ”€β”€ Drivers/                 # Content part drivers
β”‚   β”‚   β”‚   β”œβ”€β”€ Handlers/
β”‚   β”‚   β”‚   β”œβ”€β”€ Services/
β”‚   β”‚   β”‚   └── Views/
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Compost.MindMap/             # Mind map visualization
β”‚   β”‚   β”‚   β”œβ”€β”€ Assets/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ js/mindmap.js       # D3.js or Cytoscape.js
β”‚   β”‚   β”‚   β”‚   └── css/mindmap.css
β”‚   β”‚   β”‚   β”œβ”€β”€ Models/
β”‚   β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”‚   └── MindMapController.cs
β”‚   β”‚   β”‚   └── Views/
β”‚   β”‚   β”‚       └── MindMap/
β”‚   β”‚   β”‚           └── Index.cshtml
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Compost.Transcription/       # Meeting recording & transcription
β”‚   β”‚   β”‚   β”œβ”€β”€ Services/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AudioRecordingService.cs
β”‚   β”‚   β”‚   β”‚   └── TranscriptionService.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”‚   └── MeetingController.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Hubs/                    # SignalR for real-time
β”‚   β”‚   β”‚   β”‚   └── TranscriptionHub.cs
β”‚   β”‚   β”‚   └── Views/
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Compost.Kanban/              # Kanban board
β”‚   β”‚   β”‚   β”œβ”€β”€ Assets/
β”‚   β”‚   β”‚   β”‚   └── js/kanban.js        # Drag-drop board
β”‚   β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   └── Views/
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Compost.Snippets/            # Code snippet management
β”‚   β”‚   β”‚   β”œβ”€β”€ Services/
β”‚   β”‚   β”‚   β”‚   └── SnippetSearchService.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   └── Views/
β”‚   β”‚   β”‚
β”‚   β”‚   └── Compost.Patterns/            # Architectural patterns
β”‚   β”‚       β”œβ”€β”€ Services/
β”‚   β”‚       β”œβ”€β”€ Controllers/
β”‚   β”‚       └── Views/
β”‚   β”‚
β”‚   β”œβ”€β”€ Themes/                           # Custom themes
β”‚   β”‚   └── Compost.Theme/
β”‚   β”‚       β”œβ”€β”€ Manifest.cs
β”‚   β”‚       β”œβ”€β”€ wwwroot/
β”‚   β”‚       β”‚   β”œβ”€β”€ css/compost.css
β”‚   β”‚       β”‚   └── js/compost.js
β”‚   β”‚       └── Views/
β”‚   β”‚           └── Layout.cshtml
β”‚   β”‚
β”‚   └── Compost.Core/                     # Shared business logic (from original)
β”‚       β”œβ”€β”€ Models/
β”‚       β”œβ”€β”€ Interfaces/
β”‚       └── Services/
β”‚
β”œβ”€β”€ tests/
β”‚   └── Compost.Tests/

Content Types in Orchard Core

WorkContext (Content Type)

{
  "Name": "WorkContext",
  "DisplayName": "Work Context",
  "Parts": [
    { "Name": "TitlePart" },
    { "Name": "AutoroutePart" },
    { "Name": "CommonPart" },
    { "Name": "WorkContextPart" }  // Custom part
  ]
}

WorkContextPart (Custom Content Part):

  • Repository information
  • Testing steps
  • Open questions
  • Time tracking data
  • Tags/categories

MindMapNode (Content Type)

{
  "Name": "MindMapNode",
  "Parts": [
    { "Name": "TitlePart" },
    { "Name": "MarkdownBodyPart" },
    { "Name": "ContainedPart" },      // Part of a WorkContext
    { "Name": "MindMapNodePart" }     // Custom: position, color, connections
  ]
}

TreeNode (Content Type)

{
  "Name": "TreeNode",
  "Parts": [
    { "Name": "TitlePart" },
    { "Name": "MarkdownBodyPart" },
    { "Name": "TreeNodePart" }         // Custom: criteria, dependencies
  ]
}

KanbanCard (Content Type)

{
  "Name": "KanbanCard",
  "Parts": [
    { "Name": "TitlePart" },
    { "Name": "MarkdownBodyPart" },
    { "Name": "KanbanCardPart" }       // Custom: story points, status, checklist
  ]
}

2. GraphQL API

Built-in API for:

  • Mobile app access (future)
  • External integrations
  • Headless CMS mode

3. Indexing & Search

Lucene/Elasticsearch integration for:

  • Code snippet search
  • Pattern search
  • Full-text search across contexts

4. Media Library

Store and manage:

  • Meeting recordings
  • Voice samples
  • Screenshots/diagrams

5. Widgets & Layers

Dashboard composition:

  • Active context widget
  • Time tracking widget
  • Recent meetings widget
  • Quick capture widget

6. Admin Dashboard

Professional interface with:

  • Content management
  • User settings
  • Module configuration
  • Analytics

Desktop Browser

  • Full featured experience
  • Side-by-side panels
  • Keyboard shortcuts
  • Mouse/trackpad optimized

Tablet (iPad)

  • Responsive layout
  • Touch-optimized controls
  • Gesture support
  • Can pin as web app

Mobile (Fold Z6)

  • Stacked layout when folded
  • Side-by-side when unfolded
  • Touch gestures
  • Optimized for screen size

PWA Mode

  • Install as "app"
  • Offline support
  • Push notifications
  • App-like experience

Technology Stack

Frontend

  • Orchard Core CMS 1.8+
  • Razor Pages / MVC
  • Vue.js or Alpine.js (for reactive components)
  • D3.js / Cytoscape.js (mind map visualization)
  • Sortable.js (drag-drop kanban)
  • Prism.js (code syntax highlighting)
  • SignalR (real-time transcription)

Backend

  • ASP.NET Core 8.0
  • YesSql (Orchard's document database abstraction over SQL/Cosmos)
  • Azure Speech Services
  • Azure OpenAI
  • Azure Blob Storage

Data Storage

  • Cosmos DB (via YesSql)
  • SQL Server (alternative for dev)
  • Blob Storage (audio recordings)
  • IndexedDB (browser offline cache)

Deployment

  • Azure App Service
  • Docker
  • CDN for static assets
  • Application Insights for monitoring

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages