A comprehensive, interactive weapon database for Final Fantasy VII Ever Crisis featuring 434+ weapons with advanced filtering, sorting, and search capabilities.
- 🎨 Modern UI - Clean, responsive Tailwind CSS design with dark mode
- 🗡️ 434+ Weapons - Complete database with all weapon stats and abilities
- 🔍 Advanced Filtering - Filter by element, effects, buffs/debuffs, materia slots, sigils, and more
- 📊 Interactive Tables - Sortable columns with DataTables integration
- 🎮 Game-Accurate Data - Includes potencies, durations, conditions, and special effects
- ⚡ Fast Search - Instant filtering across 50+ weapon properties
# Start a local HTTP server
python -m http.server 8000
# or
python3 -m http.server 8000
# Open in browser
# Open in browser
# http://localhost:8000/ (Modern UI)
# http://localhost:8000/index-legacy.html (Legacy UI)Note: Must be served via HTTP server (not file://) due to CSV loading requirements.
# Install dependencies
npm install
# Run all tests (130 tests pass in < 1 second)
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverageff7ec-weapon-database/
├── index.html # Main application (Tailwind + Tailwind CLI)
├── index-legacy.html # Legacy application
├── js/
│ ├── scripts.js # Core application logic (1,030 lines)
│ ├── character-filter.js # Character filter state and UI
│ ├── table-renderer.js # Modern table generation with Tailwind
│ ├── ui-dropdown.js # Dropdown toggle logic
│ └── last-update.js # Last update date display
├── css/
│ └── styles.css # Legacy table layouts
├── src/
│ └── input.css # Tailwind CSS source
├── dist/
│ └── output.css # Compiled Tailwind CSS (30KB)
├── weaponData.csv # Complete weapon database (434+ weapons)
├── tailwind.config.js # Tailwind configuration
├── package.json # npm configuration with test and build scripts
├── jest.config.js # Jest test configuration
├── tests/
│ ├── setup.js # Test environment setup
│ ├── test-helpers.js # Test utility functions
│ ├── fixtures/ # Test data and mocks
│ └── unit/ # Unit tests (150 tests total, 130 passing)
│ ├── array-utilities.test.js
│ ├── filter-logic.test.js
│ ├── sorting.test.js
│ ├── calculations.test.js
│ ├── csv-parser.test.js
│ ├── character-filter.test.js (skipped)
│ └── table-renderer.test.js (skipped)
├── CLAUDE.md # Claude Code documentation
├── AGENTS.md # AI agents documentation
└── README.md # This file
- Frontend: Vanilla JavaScript (ES5), HTML5
- Styling: Tailwind CSS (via Tailwind CLI, production build), Google Fonts (Cinzel, Inter)
- Build: Tailwind CLI for CSS compilation
- Dependencies: jQuery 3.7.1, DataTables 2.1.8
- Testing: Jest 29.7.0, jsdom
- Data Format: CSV (50+ columns per weapon)
The application uses a simple three-layer architecture:
- Data Layer - CSV file loaded via XMLHttpRequest
- Logic Layer - Filtering, sorting, and table generation in
scripts.js - Presentation Layer - Dynamic HTML table rendering with DataTables
See CLAUDE.md for detailed architecture documentation.
The project includes a comprehensive Jest test suite:
- 150 tests total (130 passing, 20 skipped)
- 95%+ coverage for pure functions
- < 1 second execution time
- Full documentation in tests/README.md
Test categories:
- Array utilities (24 tests)
- Filter logic (43 tests)
- Sorting algorithms (26 tests)
- Calculations (37 tests)
- Character filter (12 tests, skipped)
- Table renderer (8 tests, skipped)
⚠️ CRITICAL: Testing Requirements for All Code ChangesBefore committing any code changes:
- ALWAYS run
npm testto ensure no existing tests are broken- If tests fail: Review your code logic first before modifying tests
- For new features: Write tests to cover the new functionality
- Test categories: Unit tests for logic, integration tests for workflows
Skipping tests or modifying them without understanding why they fail can introduce bugs.
- Edit
weaponData.csvwith new weapon data - Maintain exact 50+ column structure
- Test with local server
- Commit with message:
Update weaponData.csv
- Review CLAUDE.md for architecture patterns
- Add filter functions following existing patterns
- Write tests for new functionality
- Update documentation
- CLAUDE.md - Complete technical documentation for Claude Code
- AGENTS.md - Documentation for other AI coding agents
- tests/README.md - Testing guide and best practices
- TEST-IMPLEMENTATION-SUMMARY.md - Test implementation status
- TEST-FIXES-SUMMARY.md - Known issues and fixes
- CSV parser tests temporarily disabled in Jest due to V8 memory allocation error
- Function works correctly in production environment
- See TEST-FIXES-SUMMARY.md for details
- Original Author: Database and core functionality
- GUI Contributor: gianglt0227
- Database Maintainer: Nilu/cia
- Bug Fixes: Cantiga
- Test Infrastructure: Generated with Claude Code
This project is a community resource for Final Fantasy VII Ever Crisis players.