AutoUX is an intelligent UX analysis platform that combines AI-powered log analysis with blockchain verification. Upload logs in multiple formats, get instant AI-driven insights about UX issues, and anchor cryptographic proof of your reports on Ethereum's Sepolia testnet.
πΉ Watch the 3-minute demo: AutoUX Demo on Loom
π View the pitch deck: AutoUX Pitch Deck
- π§ AI-Powered Analysis - Google Gemini 2.0 Flash analyzes logs and generates actionable recommendations
- π Multi-Format Support - JSON, NDJSON, CSV, XML, HTML, HAR, TXT, LOG
- π Web3 Verification - Anchor report hashes on Ethereum Sepolia for immutable proof
- π Interactive Dashboard - Animated UX score gauge with visual metrics
- βΏ WCAG 2.2 Compliant - Built with accessibility in mind
- π― Smart Recommendations - Prioritized fixes with WCAG and Web Vitals references
Category: Frankenstein π§ - Stitching together AI, Blockchain, and Web Technologies
Built with: Kiro AI (Spec-Driven Development + Vibe Coding)
Demo Video: Watch on Loom
Kiro Usage: See KIRO_USAGE.md for detailed documentation
This project was developed entirely using Kiro AI as the primary development partner. Kiro AI helped with:
- ποΈ Architecture Design - Structured the full-stack application with Web3 integration
- π» Code Generation - Generated React components, Express routes, and Solidity contracts
- π§ͺ Test Creation - Built comprehensive test suites (67 tests across backend and frontend)
- π Security Review - Identified and fixed security vulnerabilities
- π Documentation - Created detailed technical documentation and user guides
- π Debugging - Resolved complex issues with LLM integration and Web3 transactions
Development Impact:
- β‘ 40% faster development with AI-assisted coding
- π― 60% reduction in debugging time
- β 100% test coverage with AI-generated test suites
- π Zero security vulnerabilities after AI review
- Installation
- Quick Start
- Project Structure
- Configuration
- API Documentation
- Web3 Setup
- Supported Log Formats
- Usage Guide
- Testing
- Troubleshooting
- Technologies
- Contributing
Before you begin, ensure you have the following installed:
- Node.js >= 18.0.0 (Download)
- npm >= 8.0.0 (comes with Node.js)
- Git (Download)
- MetaMask browser extension (for Web3 features) (Install)
git clone https://github.com/yourusername/autoux.git
cd autouxThe project uses npm workspaces to manage frontend, backend, and web3 dependencies:
npm installThis single command installs all dependencies for:
- Frontend (React + Vite)
- Backend (Express + Gemini AI)
- Web3 (Hardhat + Ethers.js)
Create environment files for each workspace:
cd backend
cp .env.example .envEdit backend/.env:
# Google Gemini API Configuration
GEMINI_API_KEY=your_gemini_api_key_here
# Server Configuration
PORT=3001
CORS_ORIGIN=http://localhost:5173cd ../frontend
cp .env.example .envEdit frontend/.env:
# API Configuration
VITE_API_BASE_URL=http://localhost:3001/api
# Web3 Configuration (after deploying contracts)
VITE_REGISTRY_ADDRESS=0xYOUR_CONTRACT_ADDRESS
VITE_NFT_ADDRESS=0xYOUR_NFT_CONTRACT_ADDRESS
VITE_CHAIN_NAME=Sepolia
VITE_CHAIN_ID=11155111
VITE_ETHERSCAN_URL=https://sepolia.etherscan.iocd ../web3
cp .env.example .envEdit web3/.env:
# Sepolia RPC URL (get from Alchemy or Infura)
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY
# Your wallet private key (NEVER commit this!)
PRIVATE_KEY=0xYOUR_PRIVATE_KEY_HERE
# Etherscan API key (for contract verification)
ETHERSCAN_API_KEY=YOUR_ETHERSCAN_API_KEY.env files or share private keys!
From the project root, run:
npm run devThis starts both servers concurrently:
- Backend API: http://localhost:3001
- Frontend UI: http://localhost:5173
The terminal will show color-coded logs for each service.
# Backend only
npm run dev --prefix backend
# Frontend only
npm run dev --prefix frontend- Open http://localhost:5173 in your browser
- Drag and drop a log file (or click to browse)
- Wait for AI analysis (~5-10 seconds)
- View your UX score and recommendations!
Try with sample data:
# Use one of the test files
# Upload: test-data/1-logs-complet.jsonautoux/
βββ backend/ # Express API Server
β βββ src/
β β βββ config/ # Configuration files
β β β βββ gemini.js # Google Gemini API config
β β β βββ paths.js # File paths
β β β βββ server.js # Server config
β β βββ routes/
β β β βββ analyze.js # POST /api/analyze endpoint
β β βββ services/
β β β βββ fileParser.js # Multi-format log parser
β β β βββ geminiAnalyzer.js # Google Gemini AI integration
β β β βββ reportGenerator.js # Report formatting
β β βββ schemas/
β β β βββ index.js # Zod validation schemas
β β βββ server.js # Entry point
β βββ .env # Backend environment variables
β βββ package.json
β
βββ frontend/ # React Application (Vite)
β βββ src/
β β βββ components/ # React Components
β β β βββ Dashboard.jsx # UX score gauge & metrics
β β β βββ FileUploader.jsx # Drag-drop file upload
β β β βββ OnChainProof.jsx # Web3 wallet & anchoring
β β β βββ OnChainHistory.jsx # Past anchored reports
β β β βββ Recommendations.jsx # AI recommendations
β β β βββ ReportViewer.jsx # Issue list & details
β β β βββ QRCodeShare.jsx # QR code sharing
β β β βββ ErrorBoundary.jsx # Error handling
β β βββ services/
β β β βββ api.js # Backend API client
β β βββ web3/
β β β βββ hashUtils.js # SHA-256 utilities
β β β βββ abiAutoUXRegistry.json # Contract ABI
β β β βββ abiNFTBadge.json # NFT contract ABI
β β βββ App.jsx # Root component
β β βββ main.jsx # Entry point
β βββ .env # Frontend environment variables
β βββ package.json
β
βββ web3/ # Smart Contracts (Hardhat)
β βββ contracts/
β β βββ AutoUXRegistry.sol # Hash storage contract
β β βββ UXBadgeNFT.sol # ERC-721 NFT contract
β βββ scripts/
β β βββ deploy.js # Deployment script
β β βββ verify.js # Etherscan verification
β βββ hardhat.config.js # Hardhat configuration
β βββ .env # Web3 environment variables
β βββ package.json
β
βββ test-data/ # Sample log files
β βββ 1-logs-complet.json # Complete test (all types)
β βββ 2-logs-latence.json # Latency tests
β βββ 3-logs-a11y.json # Accessibility tests
β βββ 4-logs-contrast-js.json # Contrast & JS errors
β βββ 5-logs-invalids.json # Validation tests
β βββ 6-logs-clean.json # No issues (clean)
β
βββ .kiro/specs/autoux/ # Technical Specifications
β βββ requirements.md # Functional requirements
β βββ design.md # Architecture & design
β βββ tasks.md # Implementation plan
β
βββ package.json # Root workspace config
βββ README.md # This file
backend/- Express server that handles file uploads, parses logs, and communicates with Google Gemini AIfrontend/- React SPA with modern UI, Web3 integration, and interactive dashboardweb3/- Solidity smart contracts and deployment scripts for Ethereum Sepoliatest-data/- Sample log files for testing different scenarios.kiro/specs/- Complete technical documentation and specifications
| Variable | Description | Default | Required |
|---|---|---|---|
GEMINI_API_KEY |
Google Gemini API key for AI analysis | - | Yes |
PORT |
Backend server port | 3001 |
No |
CORS_ORIGIN |
Allowed CORS origin | http://localhost:5173 |
No |
| Variable | Description | Default | Required |
|---|---|---|---|
VITE_API_BASE_URL |
Backend API URL | http://localhost:3001/api |
No |
VITE_REGISTRY_ADDRESS |
AutoUXRegistry contract address | - | For Web3 |
VITE_NFT_ADDRESS |
UXBadgeNFT contract address | - | For NFT |
VITE_CHAIN_NAME |
Blockchain network name | Sepolia |
For Web3 |
VITE_CHAIN_ID |
Blockchain network ID | 11155111 |
For Web3 |
VITE_ETHERSCAN_URL |
Etherscan base URL | https://sepolia.etherscan.io |
For Web3 |
| Variable | Description | Required |
|---|---|---|
SEPOLIA_RPC_URL |
Ethereum Sepolia RPC endpoint | Yes |
PRIVATE_KEY |
Wallet private key for deployment | Yes |
ETHERSCAN_API_KEY |
Etherscan API key for verification | No |
Analyzes uploaded log files and returns AI-generated UX report.
Endpoint: POST http://localhost:3001/api/analyze
Content-Type: multipart/form-data
Body:
file: <File> (required)
Supported Formats:
- JSON (
.json) - NDJSON (
.ndjson,.jsonl) - CSV (
.csv) - XML (
.xml) - HTML (
.html) - HAR (
.har) - Plain text (
.txt,.log)
File Size Limit: 10 MB
Success (200 OK):
{
"report": {
"id": "report-abc123",
"timestamp": "2025-11-14T10:30:00Z",
"uxScore": 72,
"issues": [
{
"id": "issue-001",
"type": "latency",
"severity": "high",
"description": "API response time exceeds 5000ms",
"category": "Performance",
"metadata": {
"responseTime": 5200,
"endpoint": "/api/users",
"webVitalsMetric": "LCP"
}
}
],
"categories": {
"Performance": 3,
"Accessibility": 5,
"JavaScript Errors": 1
},
"recommendations": [
{
"priority": 1,
"title": "Optimize API Response Times",
"description": "Reduce server response time to under 2.5s",
"why": "Slow responses impact LCP and user experience",
"references": [
"https://web.dev/lcp/"
],
"estimatedImpact": "high"
}
],
"metadata": {
"totalIssues": 9,
"criticalCount": 2,
"highCount": 3,
"mediumCount": 3,
"lowCount": 1,
"analysisModel": "gemini-2.0-flash-exp"
}
},
"markdown": "# AutoUX Analysis Report\n\n..."
}Error Responses:
| Status | Code | Description |
|---|---|---|
| 400 | FILE_TOO_LARGE |
File exceeds 10MB limit |
| 400 | UNSUPPORTED_FORMAT |
File format not supported |
| 400 | PARSE_ERROR |
Failed to parse log file |
| 500 | LLM_API_ERROR |
Gemini API request failed |
| 500 | LLM_TIMEOUT |
Analysis exceeded 60s timeout |
| 429 | RATE_LIMIT_EXCEEDED |
Too many requests |
Error Response Format:
{
"error": {
"message": "User-friendly error description",
"code": "ERROR_CODE",
"timestamp": "2025-11-14T10:30:00Z"
}
}cURL:
curl -X POST http://localhost:3001/api/analyze \
-F "file=@test-data/1-logs-complet.json"JavaScript (Fetch API):
const formData = new FormData();
formData.append('file', fileInput.files[0]);
const response = await fetch('http://localhost:3001/api/analyze', {
method: 'POST',
body: formData
});
const { report, markdown } = await response.json();
console.log('UX Score:', report.uxScore);From the project root:
npm testThis runs:
- Backend tests (Jest) - 43 tests
- Frontend tests (Vitest) - 24 tests
Total: 67 tests, 100% passing
# Backend tests only (Jest)
npm run test:backend
# Frontend tests only (Vitest)
npm run test:frontendBackend Tests (backend/src/**/__tests__/):
- β File parser (all 8 formats)
- β LLM analyzer (Google Gemini integration)
- β Report generator (JSON + Markdown)
- β Schema validation (Zod)
- β API routes (POST /api/analyze)
- β Error handling
Frontend Tests (frontend/src/**/__tests__/):
- β Dashboard component
- β FileUploader component
- β OnChainProof component
- β Recommendations component
- β Web3 utilities (hash computation)
- β API service (retry logic, caching)
Accessibility Tests:
- β ARIA labels on all interactive elements
- β Keyboard navigation (Tab, Enter, Space)
- β Color contrast (WCAG AA minimum)
- β Screen reader compatibility
Use the sample files in test-data/:
# Start the app
npm run dev
# Upload test files and verify:
# 1. test-data/1-logs-complet.json β 7 issues
# 2. test-data/2-logs-latence.json β 4 issues
# 3. test-data/3-logs-a11y.json β 6 issues
# 4. test-data/6-logs-clean.json β 0 issues| Script | Description |
|---|---|
npm install |
Install all dependencies (frontend + backend + web3) |
npm run dev |
Start frontend and backend in development mode |
npm start |
Alias for npm run dev |
npm test |
Run all tests (backend + frontend) |
npm run test:backend |
Run backend tests only (Jest) |
npm run test:frontend |
Run frontend tests only (Vitest) |
Problem: Frontend can't reach backend API
Solutions:
- Ensure backend is running:
npm run dev --prefix backend - Check backend is on port 3001: http://localhost:3001
- Verify
VITE_API_BASE_URLinfrontend/.env - Check CORS settings in
backend/.env
Problem: Uploaded file exceeds 10MB limit
Solutions:
- Compress or split the log file
- Filter logs to include only relevant entries
- Use NDJSON format (more compact than JSON)
Problem: File format not recognized
Solutions:
- Ensure file has correct extension (
.json,.csv, etc.) - Verify file content is valid (not corrupted)
- Try converting to JSON format
- Check file encoding (should be UTF-8)
Problem: Gemini API request failed
Solutions:
- Check
GEMINI_API_KEYinbackend/.env - Verify API key is valid: https://aistudio.google.com/apikey
- Check rate limits (free tier has limits)
- Try again in a few minutes
- Check backend logs for detailed error
Problem: Analysis took longer than 60 seconds
Solutions:
- Reduce log file size
- Split into smaller batches
- Try again (may be temporary API slowness)
Problem: MetaMask extension not detected
Solutions:
- Install MetaMask: https://metamask.io/
- Refresh the page after installation
- Ensure MetaMask is enabled for the site
Problem: MetaMask is on wrong network
Solutions:
- Open MetaMask
- Click network dropdown
- Select "Sepolia Test Network"
- If not listed, add manually:
- Network Name: Sepolia
- RPC URL: https://sepolia.infura.io/v3/YOUR_KEY
- Chain ID: 11155111
- Currency: ETH
Problem: Not enough Sepolia ETH for transaction
Solutions:
- Get free testnet ETH from faucet:
- Wait ~15 seconds for confirmation
- Check balance: https://sepolia.etherscan.io/
Problem: You declined the MetaMask transaction
Solutions:
- Click "π Anchor Hash" again
- Click "Confirm" in MetaMask popup
- Wait for transaction confirmation
Problem: VITE_REGISTRY_ADDRESS not set
Solutions:
- Deploy contract:
cd web3 && npm run deploy:sepolia - Copy contract address from output
- Update
frontend/.env:VITE_REGISTRY_ADDRESS=0xYOUR_CONTRACT_ADDRESS
- Restart frontend:
npm run dev --prefix frontend
Problem: Computed hash doesn't match on-chain record
Solutions:
- Ensure you're verifying the same report that was anchored
- Check if report was modified after anchoring
- Try anchoring again with current report
Problem: Port 3001 or 5173 already in use
Solutions:
Windows:
# Find process using port
netstat -ano | findstr :3001
# Kill process (replace PID)
taskkill /PID <PID> /FLinux/Mac:
# Find and kill process
lsof -ti:3001 | xargs kill -9Or change ports in configuration files.
Problem: Changes not reflected automatically
Solutions:
- Restart dev server:
Ctrl+Cthennpm run dev - Clear browser cache:
Ctrl+Shift+R - Check file watcher limits (Linux):
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Problem: Tests not passing
Solutions:
- Install dependencies:
npm install - Clear cache:
npm run test:backend -- --clearCache - Check Node version:
node --version(should be >=18) - Run tests individually to isolate issue
If you're still stuck:
-
Check Logs:
- Backend: Terminal running
npm run dev - Frontend: Browser DevTools Console (F12)
- MetaMask: Click extension β Activity
- Backend: Terminal running
-
Documentation:
-
Common Solutions:
- Restart everything:
Ctrl+Cthennpm run dev - Clear caches: Browser cache + sessionStorage
- Reinstall:
rm -rf node_modules && npm install
- Restart everything:
AutoUX supports blockchain-based verification of AI-generated reports using Ethereum smart contracts. This provides immutable proof that a report hasn't been tampered with, while keeping your logs completely private.
- β Immutable Proof - Reports can't be altered without detection
- β Privacy-Preserved - Only SHA-256 hashes stored on-chain, logs stay local
- β Public Verification - Anyone can verify report authenticity
- β Audit Trail - Includes uploader address and timestamp
- β Decentralized - No central authority required
-
MetaMask Browser Extension
- Install from https://metamask.io/
- Create a wallet or import existing one
-
Sepolia Testnet ETH
- Get free testnet ETH from faucets:
- You'll need ~0.01 ETH for gas fees
-
RPC Provider (for contract deployment)
cd web3
npm install
cp .env.example .envEdit web3/.env:
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY
PRIVATE_KEY=0xYOUR_PRIVATE_KEY_HEREDeploy the contract:
npm run deploy:sepoliaExpected output:
π Deploying AutoUXRegistry to Sepolia...
β
AutoUXRegistry deployed to: 0x1234567890abcdef...
Copy the deployed contract address and update frontend/.env:
VITE_REGISTRY_ADDRESS=0x1234567890abcdef...
VITE_CHAIN_NAME=Sepolia
VITE_CHAIN_ID=11155111
VITE_ETHERSCAN_URL=https://sepolia.etherscan.io- Open MetaMask
- Click network dropdown β "Add Network"
- Select "Sepolia Test Network"
- Get testnet ETH from faucet (link above)
- Start the application:
npm run dev - Upload logs and generate a report
- Scroll to "On-Chain Proof" section
- Click "Connect Wallet" β Approve in MetaMask
- Click "π Anchor Hash" β Confirm transaction
- Wait ~15 seconds for confirmation
- Click "π Verify Hash" to verify authenticity
βββββββββββββββ
β Upload Logs β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββββββ
β AI Analysis β
β (Gemini Flash) β
ββββββββ¬βββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β Compute SHA-256 Hash β
β hash = SHA256(report) β
ββββββββ¬βββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β Store Hash On-Chain β
β (Sepolia Testnet) β
β - reportId β hash β
β - uploader address β
β - timestamp β
ββββββββ¬βββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β Verify Anytime β
β Compare computed hash β
β with on-chain record β
βββββββββββββββββββββββββββ
AutoUXRegistry.sol - Main contract for hash storage
// Store a report hash
function storeHash(string reportId, bytes32 contentHash) external
// Verify a report hash
function verifyHash(string reportId, bytes32 contentHash) external view returns (bool)
// Get stored record
function getRecord(string reportId) external view returns (bytes32, address, uint64)Network: Ethereum Sepolia Testnet
Chain ID: 11155111
Gas Cost: 50,000 gas ($0.10 on testnet)
Hash Algorithm: SHA-256 (32 bytes)
Deploy the NFT contract to mint badges for verified reports:
cd web3
npm run deploy:nftUpdate frontend/.env:
VITE_NFT_ADDRESS=0xYOUR_NFT_CONTRACT_ADDRESSUsers can then mint ERC-721 NFT badges with their UX score and report hash.
See the Troubleshooting section below for common Web3 issues.
Full Documentation: web3/README.md
AutoUX can parse and analyze logs in multiple formats. The system automatically detects the format based on file content and extension.
Standard JSON array of log entries.
Example:
[
{
"id": "log-001",
"timestamp": "2025-11-14T10:30:00Z",
"type": "performance",
"category": "api",
"message": "High response time",
"metadata": {
"responseTime": 4500,
"endpoint": "/api/data"
}
},
{
"id": "log-002",
"timestamp": "2025-11-14T10:31:00Z",
"type": "accessibility",
"category": "images",
"message": "Image missing alt text",
"metadata": {
"element": "img#hero-banner",
"page": "/home"
}
}
]Newline-delimited JSON (one JSON object per line).
Example:
{"id":"log-001","timestamp":"2025-11-14T10:30:00Z","type":"performance","message":"Slow API"}
{"id":"log-002","timestamp":"2025-11-14T10:31:00Z","type":"accessibility","message":"Missing alt"}
Comma-separated values with header row.
Example:
id,timestamp,type,category,message,responseTime,element
log-001,2025-11-14T10:30:00Z,performance,api,High response time,4500,
log-002,2025-11-14T10:31:00Z,accessibility,images,Missing alt text,,img#heroXML log structure.
Example:
<?xml version="1.0" encoding="UTF-8"?>
<logs>
<log>
<id>log-001</id>
<timestamp>2025-11-14T10:30:00Z</timestamp>
<type>performance</type>
<message>High response time</message>
<metadata>
<responseTime>4500</responseTime>
</metadata>
</log>
</logs>HTML tables containing log data.
Example:
<table>
<tr>
<th>ID</th><th>Timestamp</th><th>Type</th><th>Message</th>
</tr>
<tr>
<td>log-001</td>
<td>2025-11-14T10:30:00Z</td>
<td>performance</td>
<td>High response time</td>
</tr>
</table>HTTP Archive format (browser network logs).
Example:
{
"log": {
"version": "1.2",
"entries": [
{
"startedDateTime": "2025-11-14T10:30:00Z",
"time": 4500,
"request": {
"method": "GET",
"url": "https://api.example.com/data"
},
"response": {
"status": 200
}
}
]
}
}Unstructured text logs (parsed line by line).
Example:
[2025-11-14 10:30:00] ERROR: Image missing alt text on /home
[2025-11-14 10:31:00] WARN: API response time 4500ms exceeds threshold
[2025-11-14 10:32:00] ERROR: JavaScript TypeError in main.js:42
The parser automatically detects format using:
- File extension (
.json,.csv,.xml, etc.) - Content inspection (JSON structure, CSV headers, XML tags)
- Fallback to plain text parsing
Test files are available in test-data/:
| File | Description | Expected Issues |
|---|---|---|
1-logs-complet.json |
Complete test (all types) | 7 issues |
2-logs-latence.json |
Latency tests | 4 issues |
3-logs-a11y.json |
Accessibility tests | 6 issues |
4-logs-contrast-js.json |
Contrast & JS errors | 4 issues |
5-logs-invalids.json |
Validation tests | 4 issues |
6-logs-clean.json |
No issues (clean) | 0 issues |
Drag & Drop:
- Drag a log file onto the upload zone
- File is automatically validated and uploaded
Click to Browse:
- Click the upload zone
- Select a file from your computer
Supported: JSON, NDJSON, CSV, XML, HTML, HAR, TXT, LOG (max 10MB)
After analysis, the dashboard displays:
-
UX Score Gauge - Animated circular gauge (0-100)
- 90-100: π’ Excellent (green)
- 70-89: π Fair (amber)
- <70: π΄ Critical (red)
-
Summary Cards
- Total issues detected
- Breakdown by severity (Critical, High, Medium, Low)
- Category distribution
-
Quick Filters
- Filter by category (Performance, Accessibility, Contrast, JS Errors)
- Filter by severity
- Search issues
The AI generates prioritized recommendations with:
- Title & Description - What to fix
- Why It Matters - Impact explanation
- WCAG References - Links to WCAG 2.2 criteria
- Web Vitals References - Links to Core Web Vitals docs
- Code Examples - Before/after code snippets
View Modes:
- Markdown view (formatted)
- JSON view (raw data)
Connect Wallet:
- Click "Connect Wallet"
- Approve MetaMask connection
- Ensure you're on Sepolia network
Anchor Hash:
- Click "π Anchor Hash"
- Confirm transaction in MetaMask
- Wait ~15 seconds for confirmation
- View transaction on Etherscan
Verify Hash:
- Click "π Verify Hash"
- See verification status (β
Verified or
β οΈ Not Found)
The "Your On-Chain Anchors" section shows:
- All reports you've anchored
- UX scores
- Timestamps
- Transaction links
QR Code:
- Generate QR code with report hash
- Download or share via social media
Export:
- Download full report as JSON
- Download Markdown summary
AutoUX automatically detects 4 categories of UX issues:
-
β±οΈ Latency - Response time > 3000ms
- High severity: >5000ms
- Medium severity: 3000-5000ms
- References: Web Vitals (LCP, FID, CLS)
-
βΏ Accessibility - WCAG 2.2 compliance
- Missing alt text on images
- Invalid ARIA attributes
- Keyboard navigation issues
- References: WCAG 2.2 (1.1.1, 2.1.1, 4.1.2)
-
π¨ Contrast - Color contrast ratio < 4.5:1
- WCAG AA minimum standard
- References: WCAG 2.2 β 1.4.3
-
π¨ JavaScript Errors - Runtime errors
- Stack traces included
- Error context and location
- Prioritized action items
- "Why it matters" explanations
- WCAG 2.2 and Web Vitals references
- Before/after code examples
- Estimated impact assessment
- Animated UX score gauge (0-100)
- Color-coded severity (π’ Excellent, π Fair, π΄ Critical)
- Summary cards with metrics
- Category distribution charts
- Quick filters and search
- Responsive design
- Privacy-preserving hash anchoring
- Immutable proof on Ethereum Sepolia
- Public verification
- Transaction history
- Optional NFT badges
| Technology | Purpose | Version |
|---|---|---|
| Kiro AI | Primary development assistant | Latest |
| Google Gemini API | AI-powered log analysis | 2.0 Flash |
| Gemini 2.0 Flash | Free AI model for analysis | Latest |
| Technology | Purpose | Version |
|---|---|---|
| React | UI framework | 18.3.1 |
| Vite | Build tool & dev server | 5.4.2 |
| Ethers.js | Web3 integration | 6.15.0 |
| Framer Motion | Animations | 12.23.24 |
| Tailwind CSS | Styling | 3.4.18 |
| Vitest | Testing framework | 4.0.8 |
| React Testing Library | Component testing | 16.3.0 |
| Technology | Purpose | Version |
|---|---|---|
| Node.js | Runtime environment | 18+ |
| Express | Web framework | 4.18.2 |
| @google/generative-ai | Google Gemini SDK | Latest |
| Multer | File upload handling | 2.0.2 |
| Zod | Schema validation | 3.22.4 |
| Jest | Testing framework | 29.7.0 |
| csv-parse | CSV parsing | 6.1.0 |
| xml2js | XML parsing | 0.6.2 |
| Technology | Purpose | Version |
|---|---|---|
| Hardhat | Smart contract development | Latest |
| Solidity | Contract language | 0.8.20 |
| Ethereum Sepolia | Testnet blockchain | - |
| Etherscan | Block explorer | - |
| Tool | Purpose |
|---|---|
| npm workspaces | Monorepo management |
| concurrently | Run multiple processes |
| nodemon | Backend hot reload |
| ESLint | Code linting |
| Prettier | Code formatting |
- β 67 tests (43 backend + 24 frontend)
- β 100% passing test suite
- β WCAG 2.2 AA accessibility compliance
- β Zod validation on all inputs/outputs
- β Error boundaries for graceful failures
- β Security headers (CSP, X-Frame-Options)
-
AI-First Approach
- Real-time AI analysis with Google Gemini 2.0 Flash
- Context-aware recommendations
- WCAG 2.2 and Web Vitals integration
-
Multi-Format Flexibility
- 8 supported log formats
- Automatic format detection
- Handles up to 10MB files
-
Blockchain Verification
- Privacy-preserving hash anchoring
- Immutable proof of integrity
- Public verification without exposing data
-
Modern UX
- Animated UX score gauge
- Interactive dashboard
- Real-time filtering and search
- Responsive design
-
Production-Ready
- 67 comprehensive tests
- Error handling and retry logic
- Security best practices
- Accessibility compliant
- QA Teams - Automated UX issue detection in test logs
- Developers - Quick accessibility and performance audits
- Product Managers - Track UX quality metrics over time
- Compliance - Verify WCAG compliance with blockchain proof
- Auditors - Verify report authenticity without accessing raw data
- Web3 Setup Guide - Detailed Web3 integration docs
- NFT Deployment - Optional NFT badge setup
- Test Data Guide - Sample files and testing
- Requirements - Functional requirements
- Design Document - Architecture and design
- Implementation Plan - Development tasks
This project was developed as part of the AWS Hackathon with Kiro AI as the primary development assistant.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
npm test - Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style
- Add tests for new features
- Update documentation
- Ensure accessibility compliance
- Run linter before committing
MIT License - See LICENSE file for details
- Kiro AI - Primary development assistant
- Google Gemini - Free AI API access
- Ethereum Foundation - Sepolia testnet
- AWS - Hackathon organization
- Open Source Community - Amazing tools and libraries
- Issues: GitHub Issues
- Documentation: Project Wiki
- Email: support@autoux.example.com
- Support for more log formats (Syslog, Apache, Nginx)
- Real-time log streaming
- Custom detection rules
- Report comparison (diff between versions)
- Multi-chain support (Polygon, Arbitrum)
- IPFS integration for decentralized storage
- Team collaboration features
- API rate limiting dashboard
- Machine learning for custom issue detection
- Integration with CI/CD pipelines
- Slack/Discord notifications
- Enterprise features (SSO, RBAC)
Made with β€οΈ and lots of β during AWS Hackathon
Powered by Kiro AI