Some checks failed
Deploy to GitHub Pages / build-and-deploy (push) Has been cancelled
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# Qwen Code Instructions: Geek Calculator
|
|
|
|
## Project Overview
|
|
Calculator application with standard and RPN modes, keyboard-first operation, and terminal-like UI aesthetic. Built with vanilla HTML/CSS/JS with zero dependencies and <50KB total payload.
|
|
|
|
## Key Technologies
|
|
- HTML5, CSS3, JavaScript ES6+
|
|
- Service Workers for offline capability
|
|
- LocalStorage for history persistence
|
|
- ES6 Modules for code organization
|
|
- Custom test harness (no dependencies)
|
|
|
|
## File Structure
|
|
```
|
|
index.html # Main application file
|
|
styles.css # Dark terminal theme, responsive layout
|
|
app.js # Main application logic with modules:
|
|
├── calculator.js # Core calculation logic
|
|
├── rpn-calculator.js # RPN calculator implementation
|
|
├── ui.js # User interface interactions
|
|
├── state.js # Application state management
|
|
└── utils.js # Utility functions
|
|
service-worker.js # Offline functionality
|
|
manifest.webmanifest # PWA capabilities
|
|
tests/ # Test directory
|
|
```
|
|
|
|
## Implementation Notes
|
|
- Keep bundle size under 50KB
|
|
- Full keyboard navigation required
|
|
- ARIA roles and accessibility features
|
|
- ASCII banner in <pre> tag
|
|
- Blinking cursor effect
|
|
- Easter eggs for fun
|
|
- RPN stack data structure
|
|
- Calculation history with re-run capability
|
|
- Command palette accessible with "@"
|
|
|
|
## Testing
|
|
- Unit tests for core arithmetic operations
|
|
- Unit tests for RPN stack operations
|
|
- Integration tests for UI interactions
|
|
- Accessibility compliance tests
|
|
- Performance tests to ensure <100ms operations
|
|
|
|
## Recent Changes
|
|
- 001-build-a-single: Added HTML5, CSS3, JavaScript ES6+ (vanilla, no build step) + None (pure HTML/CSS/JS, zero dependencies as per constitution)
|
|
- 001-build-a-single: Initial calculator implementation with standard and RPN modes
|
|
- 001-build-a-single: Keyboard-first operation with command palette
|