How boxcat0/novelcompany works
NovelCompany is a local-first Electron desktop app for organizing a novel project: users navigate company, works, canon, employee, and settings screens, manage works and episodes, and author structured canon records. The renderer is hosted by Electron and communicates through a preload/IPC boundary; the main process initializes local storage and SQLite, then registers domain handlers. Episode operations coordinate metadata and TXT files, including rollback on failure. The tree shows distinct work, canon, and episode subsystems, but their handler and screen internals were not sampled; those links are therefore limited to visible entry points.
Main entry points: App.tsx App Navigation · main.cjs Electron Main · database.cjs Database Access · preload-api.cjs IPC API
Components 23
Renderer UI
- App Navigation
src/App.tsx - Works Screen
src/screens/WorksScreen.tsx - Work Management
src/screens/WorkManagementScreen.tsx - Canon Authoring
src/screens/ConceptScreen.tsx - Company Screen
src/screens/CompanyScreen.tsx - Employees Screen
src/screens/EmployeesScreen.tsx - Settings Screen
src/screens/SettingsScreen.tsx
Electron Bridge
- Electron Main
electron/main.cjs - Preload Bridge
electron/preload.cjs - IPC API
electron/ipc/preload-api.cjs - Work Handlers
electron/ipc/work-handlers.cjs - Canon Handlers
electron/ipc/canon-handlers.cjs - Episode Handlers
electron/ipc/episode-handlers.cjs
Domain Services
- Episode Service
electron/episode-service.cjs - Work Repository
electron/database/repositories/work-repository.cjs - Episode Repository
electron/database/repositories/episode-repository.cjs - Canon Records
electron/database/repositories/canon-record-repository.cjs - Canon Definitions
electron/database/repositories/canon-definition-repository.cjs
Local Persistence
- Database Access
electron/database/database.cjs - SQLite Database
- Episode Storage
electron/storage/local-episode-storage.cjs - Episode TXT Files
Other components
- User
Connections 30
- User → App Navigation: navigates
- App Navigation → Works Screen: renders
- App Navigation → Work Management: renders
- App Navigation → Canon Authoring: renders
- App Navigation → Company Screen: renders
- App Navigation → Employees Screen: renders
- App Navigation → Settings Screen: renders
- Electron Main → Database Access: initializes
- Electron Main → Work Handlers: registers
- Electron Main → Canon Handlers: registers
- Electron Main → Episode Handlers: registers
- Electron Main → Episode Storage: creates
- Electron Main → Preload Bridge: loads
- Preload Bridge → IPC API: exposes
- IPC API → Work Handlers: invokes
- IPC API → Canon Handlers: invokes
- IPC API → Episode Handlers: invokes
- Episode Handlers → Episode Service: dispatches
- Episode Handlers → Episode Repository: reads
- Work Handlers → Work Repository: dispatches
- Canon Handlers → Canon Records: dispatches
- Canon Records → Canon Definitions: reads
- Episode Service → Episode Repository: updates metadata
- Episode Service → Episode Storage: stages file changes
- Work Repository → Database Access: queries
- Episode Repository → Database Access: queries
- Canon Records → Database Access: queries
- Canon Definitions → Database Access: queries
- Database Access → SQLite Database: reads and writes
- Episode Storage → Episode TXT Files: reads and writes