Skip to content

Commit 7fa5a73

Browse files
committed
Replace v1.0|1.0.0 with v0.1.0
- reorganize kiro specs into folders - move old documents into docs history folder
1 parent 65929ea commit 7fa5a73

20 files changed

Lines changed: 2054 additions & 134 deletions

File tree

.claude/agents/technical-writing-agent.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ You are an expert Technical Writing specialist with deep knowledge of:
1919

2020
## Project Context
2121

22-
**Ashfolio** is a production-ready (v1.0) Phoenix LiveView portfolio management application built with the Ash Framework. Key characteristics:
22+
**Ashfolio** is a production-ready (v0.1.0) Phoenix LiveView portfolio management application built with the Ash Framework. Key characteristics:
2323

2424
- **Single-user local application** with SQLite database
2525
- **Comprehensive test suite** (383/383 tests passing)

.kiro/specs/README.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Ashfolio Feature Specifications
2+
3+
This directory contains focused, manageable specifications for Ashfolio features. Each spec can be worked on independently without conflicts.
4+
5+
## Current Specifications
6+
7+
### 🗺️ Development Roadmap
8+
9+
- **[User Experience Enhancements](user-experience-enhancements/)** - Comprehensive UX roadmap (reference for focused specs - to be removed later)
10+
11+
### 📋 Focused Feature Specs (Ready for Development)
12+
13+
#### Core UX Improvements
14+
15+
- **[Symbol Autocomplete](symbol-autocomplete/)** - Intelligent symbol search in transaction forms
16+
- **[Real-Time Price Lookup](real-time-price-lookup/)** - Automatic price fetching during transaction entry
17+
- **[Interactive Dashboard Charts](interactive-dashboard-charts/)** - Portfolio performance and allocation visualization
18+
- **[Advanced Holdings Table](advanced-holdings-table/)** - Enhanced table with sorting, filtering, and bulk operations
19+
- **[Mobile Optimization](mobile-optimization/)** - Touch-optimized interface for mobile devices
20+
21+
#### Documentation & Quality
22+
23+
- **[Documentation Quality Improvements](documentation-quality-improvements/)** - Technical writing and organization enhancements
24+
25+
### 📚 Reference Specifications
26+
27+
- **[V1.0 Foundation](requirements.md)** - Original v1.0 requirements (completed)
28+
- **[V1.0 Design](design.md)** - Original v1.0 technical design (completed)
29+
- **[V1.0 Tasks](tasks.md)** - Original v1.0 implementation plan (97% complete)
30+
31+
## Specification Structure
32+
33+
Each feature spec follows this structure:
34+
35+
```
36+
feature-name/
37+
├── requirements.md # User stories and acceptance criteria
38+
├── design.md # Technical architecture and implementation
39+
└── tasks.md # Implementation plan with specific tasks
40+
```
41+
42+
## Development Workflow
43+
44+
1. **Choose a Feature**: Select a focused spec that aligns with project priorities
45+
2. **Review Requirements**: Ensure requirements are clear and complete
46+
3. **Create Design**: Develop technical design if not already present
47+
4. **Plan Tasks**: Break down implementation into manageable tasks
48+
5. **Implement**: Execute tasks while maintaining test coverage
49+
6. **Integrate**: Ensure feature works with existing v1.0 foundation
50+
51+
## Foundation Status
52+
53+
**Ashfolio v1.0**: Production-ready foundation with 383 passing tests
54+
55+
- ✅ Complete Ash Framework architecture
56+
- ✅ Phoenix LiveView interface
57+
- ✅ Portfolio calculations and market data
58+
- ✅ Account and transaction management
59+
- ✅ Comprehensive test coverage
60+
61+
All new features build upon this solid foundation without breaking existing functionality.
62+
63+
## Prioritization Guidelines
64+
65+
**High Priority** (Immediate User Value):
66+
67+
1. Symbol Autocomplete - Reduces transaction entry friction
68+
2. Real-Time Price Lookup - Improves data accuracy
69+
3. Mobile Optimization - Expands accessibility
70+
71+
**Medium Priority** (Enhanced Experience):
72+
73+
1. Interactive Dashboard Charts - Better data visualization
74+
2. Advanced Holdings Table - Power user features
75+
76+
**Ongoing** (Quality & Maintenance):
77+
78+
1. Documentation Quality Improvements - Developer experience
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Advanced Holdings Table Requirements
2+
3+
## Introduction
4+
5+
This feature enhances the existing holdings table with sorting, filtering, and bulk operations to help users manage larger portfolios more efficiently.
6+
7+
**Foundation**: Built on v1.0's existing holdings table and HoldingsCalculator with proven performance.
8+
9+
## Requirements
10+
11+
### Requirement 1: Table Sorting and Persistence
12+
13+
**User Story:** As a portfolio manager with many holdings, I want to sort my holdings by different criteria so that I can analyze my positions effectively.
14+
15+
#### Acceptance Criteria
16+
17+
1. WHEN viewing the holdings table THEN users SHALL be able to click column headers to sort by that column
18+
2. WHEN sorting is applied THEN the system SHALL show visual indicators (arrows) for sort direction
19+
3. WHEN clicking the same column header THEN sorting SHALL toggle between ascending and descending
20+
4. WHEN sorting is applied THEN the sort state SHALL persist across page refreshes
21+
5. WHEN the table is sorted THEN all data SHALL remain accurate and properly formatted
22+
23+
### Requirement 2: Holdings Filtering
24+
25+
**User Story:** As an investor with a diverse portfolio, I want to filter my holdings so that I can focus on specific types of investments.
26+
27+
#### Acceptance Criteria
28+
29+
1. WHEN viewing the holdings table THEN users SHALL have access to filter controls above the table
30+
2. WHEN filtering by asset class THEN only holdings matching the selected class SHALL be displayed
31+
3. WHEN filtering by performance THEN users SHALL be able to show only gains, losses, or both
32+
4. WHEN filters are applied THEN the system SHALL show active filter indicators with clear options
33+
5. WHEN filters are cleared THEN the table SHALL return to showing all holdings
34+
35+
### Requirement 3: Bulk Operations
36+
37+
**User Story:** As a power user, I want to perform actions on multiple holdings at once so that I can manage my portfolio efficiently.
38+
39+
#### Acceptance Criteria
40+
41+
1. WHEN viewing holdings THEN users SHALL be able to select multiple rows using checkboxes
42+
2. WHEN rows are selected THEN bulk action buttons SHALL appear (Refresh Prices, Export Data)
43+
3. WHEN bulk refresh is triggered THEN selected holdings SHALL have their prices updated simultaneously
44+
4. WHEN bulk export is triggered THEN selected holdings data SHALL be exported to CSV format
45+
5. WHEN bulk operations complete THEN users SHALL receive confirmation and the selection SHALL clear
46+
47+
### Requirement 4: Pagination for Large Portfolios
48+
49+
**User Story:** As an investor with many holdings, I want the table to load quickly so that I can access my data without performance issues.
50+
51+
#### Acceptance Criteria
52+
53+
1. WHEN the portfolio has more than 25 holdings THEN the table SHALL implement pagination
54+
2. WHEN navigating pages THEN sort and filter settings SHALL be maintained
55+
3. WHEN on any page THEN users SHALL see current page info (showing X-Y of Z holdings)
56+
4. WHEN changing pages THEN the transition SHALL be smooth without full page reloads
57+
5. WHEN bulk operations are used THEN they SHALL work across all pages, not just the current page
58+
59+
## Technical Requirements
60+
61+
### Integration Points
62+
63+
- **Existing Holdings Table**: Enhance current table component
64+
- **HoldingsCalculator**: Use existing calculation engine
65+
- **Phoenix LiveView**: Leverage existing real-time capabilities
66+
- **User Preferences**: Store sort/filter preferences (new feature)
67+
68+
### Performance Targets
69+
70+
- Table rendering: < 500ms for 100+ holdings
71+
- Sort operations: < 200ms response time
72+
- Filter operations: < 300ms response time
73+
- Bulk operations: < 5s for 50 selected holdings

.kiro/specs/documentation-quality-improvements/requirements.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
This document outlines the requirements for addressing critical documentation gaps, quality issues, and alignment discrepancies identified in the Ashfolio project during the Phase 10 review. These improvements are essential for achieving production readiness and maintaining long-term project sustainability.
66

7-
The scope includes fixing compilation issues, aligning documentation with implementation reality, creating missing documentation, and establishing comprehensive testing procedures to ensure the project meets professional standards for a v1.0 release.
7+
The scope includes fixing compilation issues, aligning documentation with implementation reality, creating missing documentation, and establishing comprehensive testing procedures to ensure the project meets professional standards for a v0.1.0 release.
88

99
## Requirements
1010

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Interactive Dashboard Charts Requirements
2+
3+
## Introduction
4+
5+
This feature adds interactive charts to the dashboard for portfolio performance visualization and asset allocation analysis, enhancing the existing dashboard with professional data visualization.
6+
7+
**Foundation**: Built on v1.0's dashboard with existing portfolio calculations and Phoenix LiveView architecture.
8+
9+
## Requirements
10+
11+
### Requirement 1: Portfolio Performance Chart
12+
13+
**User Story:** As a portfolio manager, I want to see my portfolio performance over time so that I can track my investment progress visually.
14+
15+
#### Acceptance Criteria
16+
17+
1. WHEN viewing the dashboard THEN the system SHALL display a line chart showing portfolio value over the last 30 days
18+
2. WHEN hovering over chart points THEN tooltips SHALL show exact date, portfolio value, and daily change
19+
3. WHEN insufficient historical data exists THEN the system SHALL show a helpful message explaining data requirements
20+
4. WHEN the chart loads THEN it SHALL use skeleton loading states during data fetching
21+
5. WHEN portfolio data updates THEN the chart SHALL refresh automatically via LiveView
22+
23+
### Requirement 2: Asset Allocation Pie Chart
24+
25+
**User Story:** As an investor, I want to see how my portfolio is allocated across different assets so that I can understand my diversification.
26+
27+
#### Acceptance Criteria
28+
29+
1. WHEN viewing the dashboard THEN the system SHALL display a pie chart showing allocation by asset class
30+
2. WHEN clicking on pie segments THEN they SHALL highlight and show detailed allocation information
31+
3. WHEN hovering over segments THEN tooltips SHALL show asset class, value, and percentage
32+
4. WHEN portfolio has no holdings THEN the system SHALL show an empty state with guidance
33+
5. WHEN allocation changes THEN the chart SHALL update in real-time
34+
35+
### Requirement 3: Responsive Chart Design
36+
37+
**User Story:** As a mobile user, I want charts to work well on my device so that I can view my portfolio data anywhere.
38+
39+
#### Acceptance Criteria
40+
41+
1. WHEN viewing charts on mobile THEN they SHALL be touch-interactive with appropriate sizing
42+
2. WHEN screen size changes THEN charts SHALL resize responsively without losing functionality
43+
3. WHEN on small screens THEN chart legends SHALL adapt to available space
44+
4. WHEN charts are displayed THEN they SHALL maintain readability across all device sizes
45+
5. WHEN touch interactions occur THEN they SHALL provide appropriate feedback
46+
47+
## Technical Requirements
48+
49+
### New Dependencies
50+
51+
- **Chart.js**: Lightweight charting library compatible with Phoenix LiveView
52+
- **Historical Data Storage**: New PortfolioSnapshot resource for time-series data
53+
54+
### Integration Points
55+
56+
- **Existing Dashboard**: Enhance current DashboardLive module
57+
- **Portfolio Calculators**: Use existing calculation engines
58+
- **Phoenix LiveView**: Leverage existing real-time capabilities
59+
60+
### Performance Targets
61+
62+
- Chart rendering: < 1s for 30 days of data
63+
- Interactive response: < 100ms for hover/click events
64+
- Data loading: Progressive loading with skeleton states
65+
- Memory usage: < 10MB for chart data and rendering
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Mobile Optimization Requirements
2+
3+
## Introduction
4+
5+
This feature optimizes Ashfolio's interface for mobile devices, ensuring all functionality works seamlessly on phones and tablets while maintaining the desktop experience quality.
6+
7+
**Foundation**: Built on v1.0's existing responsive design with Tailwind CSS and Phoenix LiveView.
8+
9+
## Requirements
10+
11+
### Requirement 1: Touch-Optimized Forms
12+
13+
**User Story:** As a mobile user, I want forms that work well with touch input so that I can easily enter transactions on my phone.
14+
15+
#### Acceptance Criteria
16+
17+
1. WHEN accessing forms on mobile THEN all input fields SHALL be appropriately sized for touch (minimum 44px height)
18+
2. WHEN entering numeric data THEN the system SHALL show numeric keyboards for amount and price fields
19+
3. WHEN selecting dates THEN the system SHALL use native date pickers optimized for mobile
20+
4. WHEN using dropdowns THEN they SHALL be touch-friendly with adequate spacing between options
21+
5. WHEN forms have validation errors THEN error messages SHALL be clearly visible on small screens
22+
23+
### Requirement 2: Mobile Navigation
24+
25+
**User Story:** As a mobile user, I want easy navigation between sections so that I can access all portfolio features on my device.
26+
27+
#### Acceptance Criteria
28+
29+
1. WHEN accessing on mobile THEN the navigation SHALL use a collapsible hamburger menu
30+
2. WHEN the menu is open THEN it SHALL provide easy access to all main sections (Dashboard, Accounts, Transactions)
31+
3. WHEN navigating between pages THEN transitions SHALL be smooth and responsive
32+
4. WHEN using the back button THEN it SHALL work correctly with the single-page application
33+
5. WHEN the menu is closed THEN it SHALL not interfere with page content
34+
35+
### Requirement 3: Responsive Data Tables
36+
37+
**User Story:** As a mobile user, I want to view my portfolio data clearly so that I can monitor my investments on any device.
38+
39+
#### Acceptance Criteria
40+
41+
1. WHEN viewing tables on mobile THEN they SHALL use horizontal scrolling or card-based layouts as appropriate
42+
2. WHEN scrolling tables horizontally THEN important columns (symbol, value) SHALL remain visible
43+
3. WHEN viewing holdings on mobile THEN the most critical information SHALL be prioritized in the layout
44+
4. WHEN tables are too wide THEN they SHALL provide smooth horizontal scrolling with momentum
45+
5. WHEN switching between portrait and landscape THEN tables SHALL adapt their layout appropriately
46+
47+
### Requirement 4: Mobile Performance
48+
49+
**User Story:** As a mobile user, I want the app to load quickly and respond smoothly so that I can efficiently manage my portfolio.
50+
51+
#### Acceptance Criteria
52+
53+
1. WHEN loading pages on mobile THEN initial render SHALL complete within 3 seconds on 3G connections
54+
2. WHEN interacting with the interface THEN touch responses SHALL feel immediate (< 100ms)
55+
3. WHEN charts are displayed THEN they SHALL be optimized for mobile rendering performance
56+
4. WHEN using the app offline THEN core functionality SHALL remain available with appropriate indicators
57+
5. WHEN data updates occur THEN they SHALL not cause jarring layout shifts on mobile
58+
59+
## Technical Requirements
60+
61+
### Integration Points
62+
63+
- **Existing Tailwind CSS**: Enhance mobile-first responsive design
64+
- **Phoenix LiveView**: Optimize for mobile touch events
65+
- **Current Components**: Adapt existing components for mobile use
66+
67+
### Performance Targets
68+
69+
- First contentful paint: < 2s on 3G
70+
- Touch response time: < 100ms
71+
- Smooth scrolling: 60fps on modern mobile devices
72+
- Offline functionality: Core features available without network
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Real-Time Price Lookup Requirements
2+
3+
## Introduction
4+
5+
This feature adds automatic price lookup when users select symbols in transaction forms, providing current market data to assist with accurate transaction entry.
6+
7+
**Foundation**: Built on v1.0's existing PriceManager GenServer and Yahoo Finance integration.
8+
9+
## Requirements
10+
11+
### Requirement 1: Automatic Price Fetching
12+
13+
**User Story:** As an investor entering transactions, I want to see current market prices when I select a symbol so that I can enter accurate transaction data.
14+
15+
#### Acceptance Criteria
16+
17+
1. WHEN a user selects a symbol in the transaction form THEN the system SHALL automatically fetch the current market price
18+
2. WHEN price lookup is in progress THEN the system SHALL show a loading indicator next to the price field
19+
3. WHEN current price is retrieved THEN it SHALL display prominently with timestamp
20+
4. WHEN a price is auto-populated THEN the user SHALL be able to override it with manual entry
21+
5. WHEN the form is submitted THEN it SHALL use the user-entered price, not the auto-fetched price
22+
23+
### Requirement 2: Fallback and Error Handling
24+
25+
**User Story:** As a user, I want the form to work even when price lookup fails so that I can still enter transactions manually.
26+
27+
#### Acceptance Criteria
28+
29+
1. WHEN price lookup fails THEN the system SHALL show the last known cached price with staleness indicator
30+
2. WHEN no price data is available THEN the system SHALL allow manual price entry with appropriate validation
31+
3. WHEN API rate limits are hit THEN the system SHALL show cached price and explain the limitation
32+
4. WHEN network is unavailable THEN the system SHALL gracefully degrade to manual entry mode
33+
5. WHEN errors occur THEN they SHALL not prevent form submission with manual prices
34+
35+
### Requirement 3: Market Context Information
36+
37+
**User Story:** As an investor, I want to understand the context of price data so that I can make informed decisions about my transaction entries.
38+
39+
#### Acceptance Criteria
40+
41+
1. WHEN price data is displayed THEN it SHALL include market status (open/closed/pre-market/after-hours)
42+
2. WHEN showing cached prices THEN the system SHALL display last update timestamp
43+
3. WHEN markets are closed THEN the system SHALL show the last closing price with appropriate label
44+
4. WHEN price data is stale (>1 hour) THEN it SHALL be clearly marked as outdated
45+
5. WHEN displaying prices THEN they SHALL use consistent currency formatting ($X,XXX.XX)
46+
47+
## Technical Requirements
48+
49+
### Integration Points
50+
51+
- **Existing PriceManager**: Extend for individual symbol lookup
52+
- **Yahoo Finance API**: Reuse existing integration
53+
- **Transaction Forms**: Integrate with FormComponent
54+
- **ETS Cache**: Utilize existing price caching
55+
56+
### Performance Targets
57+
58+
- Price lookup: < 2s response time
59+
- Cache utilization: > 90% for recently viewed symbols
60+
- Form responsiveness: No blocking of user input during lookup
61+
- Error recovery: < 1s fallback to cached/manual entry

0 commit comments

Comments
 (0)