How spacious-team/investbook works
Investbook is a local investment-portfolio accounting application. Users import broker reports or enter transactions and events manually; the system stores normalized portfolio records and presents account, instrument, cash-flow, and return analyses, with Excel/HTML reports and Open Portfolio Format export. The README describes these capabilities, while sampled source confirms key persistence, foreign-exchange, sector, and form-service behavior. Broker-specific parsing and several report implementations were not sampled, so those branches are shown at subsystem level and their unverified links are dashed.
Main entry points: repository Repositories · service Form services · InvestbookReportController.java Portfolio reports · TransactionEntity.java Transactions
Components 24
Data intake
- Report parsers
src/main/java/ru/investbook/parser - Mailbox import
src/main/java/ru/investbook/parser/MailboxReportParserService.java - Open format import
src/main/java/ru/investbook/openformat/v1_1_0/PortfolioOpenFormatV1_1_0.java
Portfolio core
- Accounts and cash
src/main/java/ru/investbook/entity/AccountEntity.java - Securities
src/main/java/ru/investbook/entity/SecurityEntity.java - Transactions
src/main/java/ru/investbook/entity/TransactionEntity.java - Security events
src/main/java/ru/investbook/entity/SecurityEventCashFlowEntity.java - Repositories
src/main/java/ru/investbook/repository - Entity converters
src/main/java/ru/investbook/converter
Analysis and reports
- FIFO positions
src/main/java/ru/investbook/report/FifoPositionsFilter.java - Exchange rates
src/main/java/ru/investbook/report/ForeignExchangeRateService.java - Sector allocation
src/main/java/ru/investbook/service/InvestmentProportionService.java - Sector metadata
src/main/java/ru/investbook/service/SecuritySectorService.java - Portfolio reports
src/main/java/ru/investbook/web/InvestbookReportController.java - Account composition
src/main/java/ru/investbook/web/AccountCompositionController.java - Excel output
src/main/java/ru/investbook/report/excel - HTML output
src/main/java/ru/investbook/report/html/HtmlView.java
User interfaces
- Manual entry
src/main/java/ru/investbook/web/forms/controller - Form services
src/main/java/ru/investbook/web/forms/service - REST API
src/main/java/ru/investbook/api - Portfolio export
src/main/java/ru/investbook/openformat/PortfolioOpenFormatController.java
Other components
- Investor
- Broker reports
- Market data
Connections 30
- Investor → Broker reports: provides reports
README.md - Broker reports → Report parsers: parsed by
- Investor → Manual entry: enters records
README.md - Investor → Mailbox import: imports mail
- Investor → Open format import: imports portfolio
- Report parsers → Transactions: records trades
- Report parsers → Accounts and cash: records balances
- Manual entry → Form services: submits forms
src/main/java/ru/investbook/web/forms/controller/SecurityDescriptionController.java - Form services → Transactions: saves transactions
src/main/java/ru/investbook/web/forms/service/TransactionFormsService.java - Form services → Security events: saves events
src/main/java/ru/investbook/web/forms/service/SecurityEventCashFlowFormsService.java - Form services → Repositories: uses repositories
src/main/java/ru/investbook/web/forms/service/TransactionFormsService.java - REST API → Repositories: delegates persistence
src/main/java/ru/investbook/api/AbstractEntityRepositoryService.java - Entity converters → Accounts and cash: maps entities
src/main/java/ru/investbook/converter/SecurityEventCashFlowConverter.java - Entity converters → Securities: maps entities
src/main/java/ru/investbook/converter/SecurityEventCashFlowConverter.java - Repositories → Accounts and cash: reads and writes
src/main/java/ru/investbook/repository/AccountRepository.java - Repositories → Securities: reads and writes
src/main/java/ru/investbook/repository/SecurityRepository.java - Repositories → Transactions: queries trades
src/main/java/ru/investbook/repository/TransactionRepository.java - Repositories → Security events: stores events
src/main/java/ru/investbook/web/forms/service/SecurityEventCashFlowFormsService.java - Transactions → FIFO positions: position basis
- FIFO positions → Sector allocation: positions valued
src/main/java/ru/investbook/service/InvestmentProportionService.java - Exchange rates → Repositories: loads rates
src/main/java/ru/investbook/report/ForeignExchangeRateService.java - Sector allocation → Sector metadata: reads sector data
src/main/java/ru/investbook/service/InvestmentProportionService.java - Sector metadata → Market data: queries metadata
src/main/java/ru/investbook/service/SecuritySectorService.java - Portfolio reports → Excel output: renders reports
src/main/java/ru/investbook/web/InvestbookReportController.java - Portfolio reports → HTML output: renders reports
src/main/java/ru/investbook/web/InvestbookReportController.java - Account composition → Sector allocation: gets allocation
src/main/java/ru/investbook/web/AccountCompositionController.java - Investor → Portfolio reports: views analysis
README.md - Portfolio reports → Investor: presents results
README.md - Investor → Portfolio export: requests export
- Portfolio export → Open format import: builds portfolio
src/main/java/ru/investbook/openformat/PortfolioOpenFormatController.java