How nextcloud/deck works
Deck is a Nextcloud kanban app for personal planning and team projects. A user works in the Vue app to organize boards into stacks and cards, then enriches cards with assignments, labels, dates, attachments, and comments; board sharing and collaboration support team use. The frontend communicates with server controllers, which delegate domain operations to services and persistence mappers. README capabilities also include activity, search, imports, dashboard views, and integrations. Some subsystem links are based on documented routes and module roles because their implementations were not sampled.
Main entry points: BoardService.php Board service · BoardMapper.php Domain mappers · CardOcsController.php Card controller · App.vue Vue app
Components 25
Web app
- Vue app
src/App.vue - Board interface
src/components/board/Board.vue - Card interface
src/components/card/CardSidebar.vue - Frontend APIs
src/services/BoardApi.js
Board operations
- Board endpoints
appinfo/routes.php - Board controller
lib/Controller/BoardController.php - Card controller
lib/Controller/CardOcsController.php - Board service
lib/Service/BoardService.php - Card service
lib/Service/CardService.php - Stack service
lib/Service/StackService.php - Comment service
lib/Service/CommentService.php - Attachment service
lib/Service/AttachmentService.php
Storage
- Domain mappers
lib/Db/BoardMapper.php - Nextcloud database
Collaboration
- Board sharing
lib/Sharing/DeckShareProvider.php - Activity stream
lib/Activity/ActivityManager.php - Live sessions
lib/Service/SessionService.php - Notify push
Integrations
- Search
lib/Service/SearchService.php - Full-text indexing
lib/Service/FullTextSearchService.php - Board import
lib/Service/Importer/BoardImportService.php - Remote boards
lib/Service/ExternalBoardService.php - Circles
- Dashboard widgets
lib/Dashboard/DeckWidgetUpcoming.php
Other components
- Deck user
Connections 24
- Deck user → Vue app: uses
- Vue app → Board interface: renders
- Board interface → Card interface: opens cards
- Vue app → Frontend APIs: loads boards
- Frontend APIs → Board endpoints: requests
- Board endpoints → Board controller: dispatches
- Board endpoints → Card controller: dispatches
- Board controller → Board service: calls
- Card controller → Card service: calls
- Card controller → Board service: looks up board
- Card controller → Remote boards: routes remote operations
- Board service → Domain mappers: persists and reads
- Card service → Domain mappers: persists and reads
- Stack service → Domain mappers: persists and reads
- Comment service → Domain mappers: uses domain data
- Attachment service → Domain mappers: uses domain data
- Domain mappers → Nextcloud database: reads and writes
- Board service → Board sharing: supports board access
- Board service → Circles: optional team integration
- Card service → Activity stream: records changes
- Live sessions → Notify push: queues updates
- Search → Full-text indexing: supports indexing
- Board import → Board service: creates imported boards
- Dashboard widgets → Board service: uses board data