Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
440 commits
Select commit Hold shift + click to select a range
758e5d0
Refactor food search response sorting and update logging for USDA res…
myProjectsRavi Oct 18, 2025
8eedf23
Migrated from supabase to Cloudflare D1
myProjectsRavi Oct 18, 2025
75759af
fix build issues
myProjectsRavi Oct 18, 2025
ac398c9
Fixing build failures
myProjectsRavi Oct 18, 2025
5b2996c
test case fixes
myProjectsRavi Oct 18, 2025
8d47736
Refactor tests to use Request object and improve error handling in ra…
myProjectsRavi Oct 19, 2025
7aa1f69
Add compatibility flags for Node.js in wrangler.toml
myProjectsRavi Oct 19, 2025
67667e5
Update compatibility date in wrangler.toml and import os from node:os…
myProjectsRavi Oct 20, 2025
6209370
Refactor api_keys table schema and remove unnecessary fields
myProjectsRavi Oct 20, 2025
32f7ab7
Migrate project from AWS/DynamoDB to Cloudflare D1, updating document…
myProjectsRavi Oct 20, 2025
019fd99
Refactor schema.sql to remove unused tables and clean up formatting f…
myProjectsRavi Oct 20, 2025
811eae6
Refactor api_keys table schema to include new fields and improve stru…
myProjectsRavi Oct 20, 2025
9fb2315
Update SQLite database files in miniflare-D1DatabaseObject to reflect…
myProjectsRavi Oct 20, 2025
4056217
Update SQLite database state files in miniflare-D1DatabaseObject
myProjectsRavi Oct 20, 2025
732d801
Add API_KEY_CACHE_TTL variable to configuration for cache expiration
myProjectsRavi Oct 20, 2025
cd69888
Refactor code structure and remove redundant sections for improved re…
myProjectsRavi Oct 20, 2025
cf0eaa5
Update cache table schema to rename created_at to timestamp for clarity
myProjectsRavi Oct 20, 2025
7b43010
Update development database ID for usda-cache-dev
myProjectsRavi Oct 20, 2025
df8d6fb
Add TTL column to cache table and update development database ID
myProjectsRavi Oct 20, 2025
1514426
Remove test API key from development configuration for security
myProjectsRavi Oct 20, 2025
6d9f7ae
Enhance food search functionality by enriching nutrient data and impr…
myProjectsRavi Oct 20, 2025
8db2470
Add parseFoods endpoint and related schemas for nutrition parsing
myProjectsRavi Oct 21, 2025
c4f997b
Refactor nutrient details in tests to use UsdaApiResponse type and en…
myProjectsRavi Oct 21, 2025
0a63094
feat: Enhance USDA food search and suggestion functionalities
myProjectsRavi Oct 21, 2025
6179291
feat: Enhance food search functionality with improved query parsing a…
myProjectsRavi Oct 21, 2025
007393d
feat: Improve unit conversion logic in getGramWeight function with en…
myProjectsRavi Oct 21, 2025
d78f58c
fix: Rename description field to portionDescription in FoodPortion in…
myProjectsRavi Oct 21, 2025
5e024c7
feat: Enhance getGramWeight function to return detailed GramWeightRes…
myProjectsRavi Oct 21, 2025
3448a5d
feat: Ensure consistent API response structure by always including ca…
myProjectsRavi Oct 21, 2025
4370ca9
chore: Remove temporary and internal documentation files
myProjectsRavi Oct 21, 2025
66c67a1
feat: Update README to enhance API response structure documentation f…
myProjectsRavi Oct 21, 2025
6541a94
chore: Remove obsolete test output files to clean up the repository
myProjectsRavi Oct 21, 2025
8690afe
feat: Add analyzeFoodList endpoint and utility to split multi-item fo…
myProjectsRavi Oct 21, 2025
37fc9fd
feat: Export types and functions in foodHandlers and naturalLanguageS…
myProjectsRavi Oct 21, 2025
804acee
feat: Refactor foodHandlers and naturalLanguageSearchHandler for impr…
myProjectsRavi Oct 21, 2025
a66dae7
feat: Enhance food scoring logic and unit conversion handling for imp…
myProjectsRavi Oct 21, 2025
fbec5bc
feat: Enhance food item processing and unit conversion handling for i…
myProjectsRavi Oct 21, 2025
40bca36
build issue fix
myProjectsRavi Oct 21, 2025
a610d62
feat: Enhance food search functionality with synonym mapping and modi…
myProjectsRavi Oct 21, 2025
0443c3b
feat: Adjust food scoring logic to improve modifier match scoring and…
myProjectsRavi Oct 21, 2025
b6a356c
feat: Update synonym mapping and adjust scoring thresholds for improv…
myProjectsRavi Oct 21, 2025
a2b9a30
Enhance Modifier Logic and Debugging
myProjectsRavi Oct 21, 2025
625039e
feat: Enhance food query parsing to improve modifier detection and ha…
myProjectsRavi Oct 21, 2025
be37d04
feat: Consolidate D1 databases and enhance NLP parser
myProjectsRavi Oct 22, 2025
9395c85
feat: Make KV bindings optional for API key caching and circuit break…
myProjectsRavi Oct 22, 2025
a1fc09e
feat: Add KV Namespace Setup Guide for CIRCUIT_BREAKER_KV configuration
myProjectsRavi Oct 22, 2025
c4fd703
feat: Implement premium AI natural language search endpoint and middl…
myProjectsRavi Oct 22, 2025
2175ce7
feat: Add base64-js and mustache as dependencies
myProjectsRavi Oct 22, 2025
03754e1
feat: Add AI binding configuration for production and development env…
myProjectsRavi Oct 22, 2025
9ce3cf1
feat: Rename AI environment section from 'env.dev.ai' to 'env.develop…
myProjectsRavi Oct 22, 2025
838b32a
feat: Enhance AI natural language search with improved food item hand…
myProjectsRavi Oct 22, 2025
7299930
feat: Enhance type safety in aiNaturalLanguageSearch by specifying En…
myProjectsRavi Oct 22, 2025
16a81c3
feat: Remove internal metadata from AI Natural Language Search API re…
myProjectsRavi Oct 22, 2025
9c31e89
feat: Export utility functions for query validation, grams calculatio…
myProjectsRavi Oct 22, 2025
9b531fe
feat: Add /v1/calculate endpoint and refactor calculateHandler for im…
myProjectsRavi Oct 22, 2025
abdec11
feat: Implement AI request body limiting with validation schema and m…
myProjectsRavi Oct 22, 2025
253e8ef
feat: Implement unified credit system with middleware for credit chec…
myProjectsRavi Oct 22, 2025
047bd81
Refactor code structure for improved readability and maintainability
myProjectsRavi Oct 22, 2025
1922ff1
feat: Add unmatched search terms logging and synonym mapping for impr…
myProjectsRavi Oct 23, 2025
103fa4a
feat: Implement L2 caching logic for individual food items to enhance…
myProjectsRavi Oct 23, 2025
f598e22
feat: Enhance L1 and L2 caching logic with user tier integration for …
myProjectsRavi Oct 23, 2025
7c5adc1
feat: Add migration for unmatched search terms logging table and index
myProjectsRavi Oct 23, 2025
51736bf
feat: Implement enhanced retry logic for USDA API to handle timeout e…
myProjectsRavi Oct 23, 2025
8737a88
fix: Normalize base URL in USDA API requests to prevent issues with t…
myProjectsRavi Oct 23, 2025
c998dd2
feat: Revise L2 cache logic for global scale and improve food details…
myProjectsRavi Oct 23, 2025
90dffeb
feat: Enhance search matching logic with confidence scoring and bonus…
myProjectsRavi Oct 23, 2025
c4396be
feat: Enhance food search logic with standardized search term handlin…
myProjectsRavi Oct 23, 2025
687d55a
feat: Implement synonym mapping for ambiguous search terms in USDA AP…
myProjectsRavi Oct 23, 2025
a7ff095
feat: Implement multi-source statistics and search handling
myProjectsRavi Oct 23, 2025
1382257
feat: Refactor AI natural language search to utilize Zod for input va…
myProjectsRavi Oct 23, 2025
8bde250
feat: Enhance request validation middleware to handle non-breaking sp…
myProjectsRavi Oct 24, 2025
5d99acc
feat: Add body parsing middleware and improve request validation to h…
myProjectsRavi Oct 24, 2025
a1cde88
feat: Update AI natural language search endpoint to allow 'starter' t…
myProjectsRavi Oct 24, 2025
1fc0282
feat: Add debug middleware for enhanced body parsing logging and allo…
myProjectsRavi Oct 24, 2025
ed83149
feat: Refactor error handling and request validation to improve loggi…
myProjectsRavi Oct 24, 2025
50e5969
feat: Implement credit quota management in API key generation; remove…
myProjectsRavi Oct 24, 2025
1822e7b
feat: Update database names in production and development configurati…
myProjectsRavi Oct 24, 2025
1f52fa6
Remove outdated documentation files and implement comprehensive updat…
myProjectsRavi Oct 27, 2025
407e031
feat: Implement expert feedback phases for API improvements, includin…
myProjectsRavi Oct 27, 2025
29ed6ac
feat: Implement Phase 1 & 2 improvements including schema alignment, …
myProjectsRavi Oct 27, 2025
4aff5d1
feat: Implement edge caching middleware for improved performance and …
myProjectsRavi Oct 27, 2025
4d10140
feat: Refactor caching logic across handlers; implement centralized L…
myProjectsRavi Oct 27, 2025
f40c6ba
feat: Implement background refresh and request deduplication services…
myProjectsRavi Oct 28, 2025
0ac63fc
feat: Implement Phase 2 Performance Optimizations
myProjectsRavi Oct 28, 2025
a53f216
feat: Add hot cache seed SQL for common food items to improve caching…
myProjectsRavi Oct 28, 2025
859fbf9
feat: add analytics handler and utility for query tracking and perfor…
myProjectsRavi Oct 28, 2025
d282e71
feat: Implement cache stampede prevention utilities
myProjectsRavi Oct 28, 2025
44fc682
feat: add header sanitization middleware to remove sensitive headers
myProjectsRavi Oct 28, 2025
c0829d8
refactor: streamline header sanitization middleware and improve code …
myProjectsRavi Oct 28, 2025
060da3f
feat: Implement Phase 1 enhancements for caching and deduplication
myProjectsRavi Oct 30, 2025
07a66ae
refactor: replace global setInterval with lazy cleanup approach in re…
myProjectsRavi Oct 30, 2025
4176fab
Limit Elimination Strategy
myProjectsRavi Oct 30, 2025
4d48fd6
feat: Complete USDA bulk data import to all D1 databases
myProjectsRavi Oct 30, 2025
8fd53b2
chore: Remove large USDA data file from git tracking
myProjectsRavi Oct 30, 2025
b5c5913
3-Level Caching System added
myProjectsRavi Oct 30, 2025
ece24c3
feat: Implement predictive pre-fetching and business logic obfuscation
myProjectsRavi Oct 30, 2025
fded7df
feat: Integrate parallel processing, L0 hot cache, and predictive pre…
myProjectsRavi Oct 30, 2025
87e49e5
feat: Add D1 Local service for enhanced food data retrieval and caching
myProjectsRavi Oct 30, 2025
1479678
feat: Implement D1 caching for AI query parsing with hash-based cache…
myProjectsRavi Oct 30, 2025
a527b24
cleanup
myProjectsRavi Oct 30, 2025
e2a21e6
added kv namespaces
myProjectsRavi Oct 30, 2025
9cbe781
feat: Enhance AI query parsing with L1 (KV) and L2 (D1) caching, incl…
myProjectsRavi Oct 30, 2025
0471deb
feat: Refactor cache warming to use warmPopularCaches and enhance log…
myProjectsRavi Oct 30, 2025
b45c379
feat: Enhance caching mechanisms and introduce task queue for backgro…
myProjectsRavi Oct 31, 2025
f3ed3f3
feat: Implement centralized food detail service with optimized cachin…
myProjectsRavi Oct 31, 2025
734e9e6
feat: Implement caching for OpenFoodFacts fallback results to enhance…
myProjectsRavi Oct 31, 2025
339af02
feat: Implement L2 caching for searchFood and calculateTotalNutrition…
myProjectsRavi Nov 1, 2025
6508d48
feat: Update production environment name and worker URL for nutrition…
myProjectsRavi Nov 1, 2025
110a7d8
feat: Update AI parse cost and enhance response sanitization to remov…
myProjectsRavi Nov 1, 2025
ee9763c
feat: Remove cache status headers for security hardening against timi…
myProjectsRavi Nov 1, 2025
90f5859
feat: Enhance AI search and food handlers with pricing metadata and r…
myProjectsRavi Nov 1, 2025
b8e53d8
feat: Implement credit deduction for cached and queued AI responses, …
myProjectsRavi Nov 1, 2025
5db88e8
feat: Simplify response meta to retain only requestId for user suppor…
myProjectsRavi Nov 1, 2025
a106b89
feat: Implement global AI velocity limiter to prevent financial abuse
myProjectsRavi Nov 1, 2025
8776a72
feat: Implement DoS attack protection across multiple phases, includi…
myProjectsRavi Nov 1, 2025
e2a9de6
feat: Sanitize cached responses in food handlers to enhance security …
myProjectsRavi Nov 1, 2025
995dbc1
feat: Implement credit check and error handling for insufficient cred…
myProjectsRavi Nov 2, 2025
5a4fa71
cleanup
myProjectsRavi Nov 2, 2025
4d544e7
feat: Implement dynamic credit cost calculation in creditCheck middle…
myProjectsRavi Nov 2, 2025
e32a673
cleanup
myProjectsRavi Nov 2, 2025
c658e65
feat: Implement dynamic suspicion scoring and cost adjustments in API…
myProjectsRavi Nov 2, 2025
217310a
test cases added
myProjectsRavi Nov 2, 2025
0b5b3d9
feat: Enhance nutrition calculation with user tier checks and caching…
myProjectsRavi Nov 2, 2025
d4f612a
feat: Refactor natural language processing by consolidating AI parsin…
myProjectsRavi Nov 2, 2025
4ab9889
feat: Implement branded food fetching and caching mechanism with cred…
myProjectsRavi Nov 2, 2025
1e9fa55
feat: Update database migration script to ensure compatibility with F…
myProjectsRavi Nov 2, 2025
0c00b0e
feat: Refactor database migration scripts and enhance nutrient calcul…
myProjectsRavi Nov 2, 2025
30ddf93
feat: Simplify migration script to resolve failures and add nutrient …
myProjectsRavi Nov 2, 2025
89e3196
feat: Update D1 database ID for development environment to ensure cor…
myProjectsRavi Nov 2, 2025
501f168
feat: Update D1 database ID for development environment and productio…
myProjectsRavi Nov 2, 2025
c91c522
feat: Insert nutrient data into usda_nutrients table for improved foo…
myProjectsRavi Nov 2, 2025
50f493c
feat: Refactor authentication handling and remove cache status leakag…
myProjectsRavi Nov 2, 2025
5f22776
feat: Implement suspicion scoring and biased nutrient jitter for enha…
myProjectsRavi Nov 2, 2025
af45e0f
feat: Add migration script to create api_keys table with robust schem…
myProjectsRavi Nov 3, 2025
544eccf
feat: Rename primary key to 'key_id' in api_keys table for consistenc…
myProjectsRavi Nov 3, 2025
de6476d
cleanup
myProjectsRavi Nov 4, 2025
4714e96
fix: Remove redundant cron schedule for daily cache warming
myProjectsRavi Nov 4, 2025
3b86eca
feat: Add migration script to create rate_limit_logs table for D1-bas…
myProjectsRavi Nov 4, 2025
628fe90
feat: Update request handling to use AuthenticatedRequest for improve…
myProjectsRavi Nov 4, 2025
5316707
feat: Refactor request handling to use AuthenticatedRequest for impro…
myProjectsRavi Nov 4, 2025
0a65305
feat: Update request validation to use AuthenticatedRequest for impro…
myProjectsRavi Nov 4, 2025
a82f8ad
feat: Refactor credit and tier check middleware to use unified auth c…
myProjectsRavi Nov 4, 2025
b00b8d7
feat: Implement FTS5 full-text search for ultra-fast food name lookups
myProjectsRavi Nov 4, 2025
ad1fc12
feat: Implement RapidAPI webhook integration for automated user onboa…
myProjectsRavi Nov 4, 2025
c035da4
Refactor nutrition calculation and caching logic
myProjectsRavi Nov 5, 2025
d507ed0
Implement bulk import scripts for USDA food data with direct command …
myProjectsRavi Nov 5, 2025
bd1d91b
feat(d1): implement D1-first import script (import-json-blob.js) and …
myProjectsRavi Nov 5, 2025
2084803
Refactor code structure for improved readability and maintainability
myProjectsRavi Nov 5, 2025
9c1caae
cleanup
myProjectsRavi Nov 6, 2025
ef0ce2d
huge prod performance improvements
myProjectsRavi Nov 6, 2025
971af80
refactor(calculateHandler): enhance D1-native logic for improved cach…
myProjectsRavi Nov 9, 2025
08a6181
feat(calculateHandler): implement USDA API fallback for food search w…
myProjectsRavi Nov 9, 2025
08f480f
refactor(stringSimilarity): improve normalization logic to prevent ne…
myProjectsRavi Nov 9, 2025
e74cebd
feat(naturalLanguageSearch): implement USDA API fallback for D1 searc…
myProjectsRavi Nov 9, 2025
8eeef2b
Add detailed nutritional response for grilled chicken, apples, and milk
myProjectsRavi Nov 9, 2025
11d6c27
clean up
myProjectsRavi Nov 10, 2025
7d83381
Extreme enhancements
myProjectsRavi Nov 10, 2025
a12cee5
Refactor analytics utilities for improved readability and consistency
myProjectsRavi Nov 10, 2025
61c2b50
cleanup
myProjectsRavi Nov 14, 2025
1ada198
Refactor caching logic to unify L1 Edge Cache handling and implement …
myProjectsRavi Nov 14, 2025
fdae827
feat: Optimize rate limits and enhance food search functionality
myProjectsRavi Nov 15, 2025
44f4ed9
chore: Remove AI-related configurations and clean up environment sett…
myProjectsRavi Nov 15, 2025
d8ac34e
feat: Enhance food search logging for self-healing intelligence and u…
myProjectsRavi Nov 15, 2025
9b7e1ed
Refactor food handlers and schemas:
myProjectsRavi Nov 15, 2025
a238db4
fix: Update WORKER_URL for production environment
myProjectsRavi Nov 15, 2025
796cfc7
fix: Improve quantity parsing logic and normalize query handling
myProjectsRavi Nov 15, 2025
ce2793c
refactor: Update cron job configurations for daily maintenance and we…
myProjectsRavi Nov 15, 2025
08a641f
feat: Enhance search functionality with tokenization and stopword fil…
myProjectsRavi Nov 15, 2025
55aa933
feat: Improve food query parsing and search logic for better accuracy…
myProjectsRavi Nov 15, 2025
3417909
feat: Enhance food search logic by refining cache queries and impleme…
myProjectsRavi Nov 15, 2025
13e05b7
feat: Enhance food search and parsing logic with direct FDC ID lookup…
myProjectsRavi Nov 15, 2025
a12e679
feat: Increase penalties for processed foods in search logic to impro…
myProjectsRavi Nov 15, 2025
619c7f6
Implement L1 KV Cache for calculateHandler, enhancing performance and…
myProjectsRavi Nov 16, 2025
d7ab016
feat: Enhance calculateHandler with OpenFoodFacts fallback for unmatc…
myProjectsRavi Nov 16, 2025
c7a2152
feat: Simplify API response by removing unmatched items and breakdown…
myProjectsRavi Nov 16, 2025
36ad972
feat: Implement emergency cache invalidation endpoint for bad data re…
myProjectsRavi Nov 16, 2025
4f8557e
feat: Remove test admin token from development environment configurat…
myProjectsRavi Nov 16, 2025
b6e8563
feat: Add wildcard IP allowance in IP restriction middleware for flex…
myProjectsRavi Nov 16, 2025
c6ee1f8
feat: Refactor admin token validation to use case-insensitive header …
myProjectsRavi Nov 16, 2025
6dc7a5d
feat: Optimize cache key and slim response payload for bandwidth effi…
myProjectsRavi Nov 16, 2025
84c901c
feat: Update L1 edge cache version to 4 for immediate invalidation of…
myProjectsRavi Nov 16, 2025
5f1eb44
feat: Enhance nutrition tracking by adding default weights for common…
myProjectsRavi Nov 16, 2025
cd09bd5
feat: Implement development-only cache invalidation endpoint and hand…
myProjectsRavi Nov 16, 2025
655ace8
fix: Remove trailing slash from WORKER_URL in development environment…
myProjectsRavi Nov 16, 2025
3a13d2a
feat: Add cache bypass parameter for production-safe testing in handl…
myProjectsRavi Nov 16, 2025
a1419ce
refactor: Remove emergency cache invalidation endpoint from admin han…
myProjectsRavi Nov 16, 2025
6badf3c
feat: Implement OpenFoodFacts fallback for food search and enhance ca…
myProjectsRavi Nov 16, 2025
fa41b83
fix: Correct FDC ID mappings for toned milk and ginger tea to resolve…
myProjectsRavi Nov 16, 2025
fd9125f
feat: Enhance bypass cache functionality and add missing food synonym…
myProjectsRavi Nov 16, 2025
54e6f43
enhancements
myProjectsRavi Nov 16, 2025
89890bc
Enhance nutrition data validation and caching mechanisms
myProjectsRavi Nov 16, 2025
77e4ace
feat: Enhance food detail and search services with error handling and…
myProjectsRavi Nov 17, 2025
f849d80
feat: Enhance nutrition data accuracy and security
myProjectsRavi Nov 17, 2025
48621c7
Refactor nutrition tracking API:
myProjectsRavi Nov 17, 2025
7ce157c
feat: Implement AGI-level security and performance enhancements acros…
myProjectsRavi Nov 17, 2025
eaa2d9e
feat: Implement FTS5 indexing for improved search performance and red…
myProjectsRavi Nov 17, 2025
d36a3f1
feat: Refactor natural language search and rate limiting for improved…
myProjectsRavi Nov 17, 2025
174bba8
Refactor credit management and rate limiting architecture for improve…
myProjectsRavi Nov 17, 2025
b7ca788
Refactor nutrition calculation to utilize d1BulkDataService.searchBat…
myProjectsRavi Nov 17, 2025
3b21dfb
refactor: Connect batch processing to calculateTotalNutrition, elimin…
myProjectsRavi Nov 17, 2025
b2b998a
Remove critical FDC ID mapping fixes and Ferrari optimization documen…
myProjectsRavi Nov 18, 2025
624c89e
Add audit report for API error responses and logs for natural calcula…
myProjectsRavi Nov 18, 2025
6ae2059
Refactor rate limiter middleware to standard async function signature…
myProjectsRavi Nov 18, 2025
a6e54c3
refactor: Simplify rate limiter tests by removing wrapped handler log…
myProjectsRavi Nov 18, 2025
ef62e5a
Enhance hardcoded food ID mappings and implement auto-healing hydrati…
myProjectsRavi Nov 18, 2025
4bbc293
code fixes
myProjectsRavi Nov 18, 2025
4cb1ba1
Extreme enhancements
myProjectsRavi Nov 18, 2025
7e2712d
feat: Implement natural language search with self-healing 'Zombie Dat…
myProjectsRavi Nov 19, 2025
1343904
Add audit report for nutrition tracker API requests and responses
myProjectsRavi Nov 19, 2025
dccc6ce
Add debug JSON files and implement nutrient inspection and audit tests
myProjectsRavi Nov 19, 2025
148bc91
AGI-Level Optimizations: World-Class Performance + Security
Nov 22, 2025
3dc1e83
cleanup
myProjectsRavi Nov 22, 2025
2cf9272
Refactor food query handling: Extract parsing logic to foodQueryParse…
myProjectsRavi Nov 22, 2025
caa08d1
Enhance error handling and security: Prevent exposure of sensitive he…
myProjectsRavi Nov 22, 2025
9ed33c5
feat(security): Implement advanced security headers middleware to enh…
myProjectsRavi Nov 22, 2025
e3b95d3
feat: Enhance search safety and precision in d1BulkDataService
myProjectsRavi Nov 22, 2025
c89938c
feat: Implement cultural translation for food queries
myProjectsRavi Nov 23, 2025
6ed922b
Add enhanced test suite for USDA Nutrition API with 250+ scenarios
myProjectsRavi Nov 23, 2025
bb13855
cleanup
myProjectsRavi Nov 23, 2025
33cba6d
feat: Implement aggressive tier limits and optimizations to prevent r…
myProjectsRavi Nov 23, 2025
760b9ee
Enhance API security and performance by addressing vulnerabilities an…
myProjectsRavi Nov 23, 2025
4d179c7
feat: Implement atomic credit deduction and negative caching to enhan…
myProjectsRavi Nov 24, 2025
25f3df6
feat: Implement atomic credit deduction and tier-gated logging to enh…
myProjectsRavi Nov 24, 2025
082cb2e
Enhance security and performance across multiple components
myProjectsRavi Nov 24, 2025
e032085
feat: Enhance security and performance by implementing strict payload…
myProjectsRavi Nov 24, 2025
1419fbd
feat(audit): Revise audit report with new vulnerabilities and recomme…
myProjectsRavi Nov 24, 2025
55f4b1c
feat: Optimize Cache API Checkpoint System to reduce D1 writes and re…
myProjectsRavi Nov 24, 2025
6b1b1a2
feat: Implement probabilistic sampling and context propagation to opt…
myProjectsRavi Nov 24, 2025
7c01ee9
fix(audit): Address multiple vulnerabilities identified in Audit Repo…
myProjectsRavi Nov 24, 2025
f7d00a1
feat(audit): Implement stochastic D1 write strategy and adaptive quer…
myProjectsRavi Nov 24, 2025
82b5857
feat(cache): Implement quality gating for cache to ensure only high-q…
myProjectsRavi Nov 25, 2025
5d617a0
Enhance hotCache with expanded food data and nutritional information;…
myProjectsRavi Nov 25, 2025
b24d161
feat(auth): Implement timing attack protection with random delay on a…
myProjectsRavi Nov 25, 2025
0d80969
Implement KV Write Budget Protection and Tiered Promotion Protocol in…
myProjectsRavi Nov 25, 2025
ecc23d6
Refactor KV write budget management to implement adaptive threshold l…
myProjectsRavi Nov 25, 2025
c4313d0
Implement critical security fixes to mitigate D1 pagination bomb and …
myProjectsRavi Nov 25, 2025
bb4caa2
refactor: Implement Chronometric Value-Gate for KV caching to enhance…
myProjectsRavi Nov 25, 2025
74b8fb0
feat(audit-18): Implement global circuit breaker and FTS budget gate …
myProjectsRavi Nov 25, 2025
340d68e
Implement code changes to enhance functionality and improve performance
myProjectsRavi Nov 25, 2025
0cbf575
Implement feature X to enhance user experience and optimize performance
myProjectsRavi Nov 25, 2025
f50674b
feat(audit-18): Implement Trojan 200 error handler and early 304 shor…
myProjectsRavi Nov 28, 2025
f916e9a
feat(audit-18): Enhance security with AGI-level protections including…
myProjectsRavi Nov 28, 2025
a4588ea
feat(apiKeyService): Implement adaptive stochastic ledger synchroniza…
myProjectsRavi Nov 28, 2025
7370f12
feat(apiKeyService): Implement Hybrid Accounting logic to enhance bil…
myProjectsRavi Nov 28, 2025
71e269c
feat(audit): Update audit report and documentation to reflect impleme…
myProjectsRavi Nov 28, 2025
d21e49c
feat(refund): Implement state-aware refund logic to prevent credit fa…
myProjectsRavi Nov 28, 2025
a67479b
feat(refund): Implement state-aware symmetric refund logic to enhance…
myProjectsRavi Nov 28, 2025
60f251b
feat(api): Update OpenAPI specification to enhance clarity and add sa…
myProjectsRavi Nov 28, 2025
13b3ff4
feat(api): Update OpenAPI spec and response handling to enhance secur…
myProjectsRavi Nov 28, 2025
0308ca7
feat(security): Implement Gatekeeper Protocol to prevent resource exh…
myProjectsRavi Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
102 changes: 0 additions & 102 deletions .continue/prompts/new-prompt-1.yaml

This file was deleted.

8 changes: 0 additions & 8 deletions .continue/prompts/new-prompt.yaml

This file was deleted.

53 changes: 53 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
module.exports = {
extends: [
'airbnb-typescript/base', // Use the base config for non-React projects
'prettier'
],
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json',
ecmaVersion: 2020,
sourceType: 'module',
},
plugins: [
'@typescript-eslint',
'prettier',
'import'
],
rules: {
'prettier/prettier': 'error',
'@typescript-eslint/ban-types': 'error',
// These are intentionally relaxed to match the current codebase which
// contains many legacy `any` usages and some unused variables. We prefer
// warnings for now to avoid mass refactors.
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': ['warn', {"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}],
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'variable',
format: ['camelCase', 'PascalCase', 'UPPER_CASE']
}
],
// Allow importing TypeScript modules without requiring a .js extension
// in source files (common in TS projects targeting ESM output).
'import/extensions': [
'error',
'ignorePackages',
{
js: 'never',
ts: 'never'
}
],
// Allow functions and declarations to be used before they're defined in
// some cases to avoid mass reordering refactors across the codebase.
'@typescript-eslint/no-use-before-define': 'off'
},
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
}
}
}
};
194 changes: 194 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
# Copilot Instructions for USDA Nutrition API Worker

## Project Overview
Production-grade Cloudflare Worker for USDA nutritional data with advanced NLP search capabilities. Built for high performance with multi-layer caching (Edge → KV → Hot Cache → D1 → USDA API).

**Key Features:**
- Zero-cost NLP query parsing (local fuzzy matching, no external AI by default)
- Multi-layer caching strategy (Edge, KV L1, Hot Cache for top 100 foods, D1 L0)
- USDA Batch API service (fetch up to 20 foods in single call)
- Credit-based quota system with tier-based rate limiting (free/pro/premium/enterprise)
- Scheduled jobs (hourly keep-alive, daily cache warming, branded food fetcher)
- Background task safety patterns with `safeBackgroundTask` wrappers

## Architecture & Data Flow

**Multi-Layer Cache Hierarchy:**
```
Request → Edge Cache (12h TTL, Cloudflare Edge)
→ KV L1 Cache (30d TTL, hot foods)
→ D1 Hot Cache (top 100 foods, <5ms)
→ D1 L0 Cache (1h TTL, stale-while-revalidate)
→ USDA Batch API (deduplication + batching)
```

**Request Lifecycle:**
1. `src/index.ts` - Entry point, applies middleware chain:
- `withEdgeCache` (GET requests, 12h cache)
- `withLogging` (adds request IDs)
- `sanitizeHeaders` (hides infrastructure details)
- `withCors` (CORS handling)
- `withAuth` (API key validation via D1)
- `withRateLimiting` (tier-based limits)
- `validateRequest` (Zod schema validation)
- `createCreditCheck` (deducts credits per operation)

2. Handler orchestration:
- `src/handlers/naturalLanguageSearchHandler.ts` - NLP query flow
- `src/handlers/foodHandlers.ts` - Food details, search, analyze
- `src/handlers/calculateHandler.ts` - Nutrition calculations
- `src/handlers/parseHandler.ts` - Query parsing endpoint

3. Service layer (business logic):
- `src/services/usdaBatch.ts` - Batch API requests (up to 20 foods)
- `src/services/hotCache.ts` - Top 100 foods from D1 hot_foods_cache table
- `src/services/kvCacheService.ts` - KV L1 cache (30d TTL)
- `src/services/cache.ts` - D1 L0 cache (1h TTL, stale-while-revalidate)
- `src/services/apiKeyService.ts` - API key CRUD, credit/quota validation
- `src/services/requestDeduplicator.ts` - Prevents duplicate in-flight requests

**Background Jobs (Cron):**
- `0 3 * * *` - Daily cache warming (popular foods) via `cacheWarmer.ts`
- `0 * * * *` - Hourly keep-alive + L1 cache warming
- `*/2 * * * *` - Branded food fetcher (queue processor)

**Queue Consumer:**
- Processes `TASK_QUEUE` messages for branded food fetching
- Updates KV L1 and hot cache after successful USDA fetch

## Critical Patterns & Conventions

**1. Background Task Safety:**
Always use `safeBackgroundTask()` instead of raw `ctx.waitUntil()`:
```typescript
safeBackgroundTask(ctx, async () => {
await kvCacheService.put(key, data, env, requestId, 3600);
}, 'cache-write', { key });
```

**2. Cache Key Normalization:**
- POST requests: Hash normalized query (see `createRequestCacheKey` in `src/utils/cacheKey.ts`)
- For `/v1/calculate/natural`: Use `normalizeQuery()` before hashing to avoid brittle keys
- GET requests: Include URL + auth headers in cache key

**3. Credit System:**
Each endpoint has a cost:
- Regex parse: 1 credit
- Natural language search: 1 credit per item
- Calculate: 1 credit
- Search: 1 credit
Deduct via `createCreditCheck(COST)` middleware, enforce via `apiKeyService.useCredits()`

**4. Error Handling:**
All errors extend `APIError` (see `src/types.ts`):
- `InvalidInputError` (400)
- `NotFoundError` (404)
- `USDAFoodNotFound` (404)
- `UpstreamServiceError` (503)
Use `handleAPIError()` in `src/errorHandler.ts` to format responses

**5. Request Body Caching:**
`src/index.ts` pre-reads request bodies and attaches to `(routerRequest as any).__cachedBodyText` to prevent stream exhaustion across middleware

**6. Structured Logging:**
All logs use `logger` from `src/logger.ts` with request IDs:
```typescript
logger.info('Message', { key: 'value', requestId });
```

**7. Zod Validation:**
Define schemas in `src/schemas/requestSchemas.ts`, apply via `validateRequest(Schema, 'body'|'query'|'params')` middleware

## Database Schema (`schema.sql`)
- `api_keys` - API key metadata, credits, tier
- `cache` - Generic KV cache (NLP/USDA responses, 1h TTL)
- `hot_foods_cache` - Top 100 foods (query_count tracking)
- `rate_limit_logs` - Rate limit history per API key
- `dead_letter_queue` - Failed requests for replay
- `unmatched_logs` - Search terms without matches (self-improving)

**Key SQL Pattern:**
Use `ON CONFLICT` for upsert operations (see `hotCache.ts` set method)

## Developer Workflows

**Setup:**
```bash
npm install
wrangler d1 create usda-cache-dev
wrangler kv:namespace create API_KEY_CACHE_KV --env development
wrangler d1 execute usda-cache-dev --file=schema.sql --env development
wrangler secret put USDA_API_KEY --env development
```

**Local Development:**
```bash
npm run dev # Starts local worker on http://localhost:8787
```

**Testing:**
```bash
npm test # All tests (vitest)
npm run test:unit # Unit tests only
npm run test:integration # Integration tests only
```
Tests use `@cloudflare/vitest-pool-workers` with isolated D1/KV storage per test

**Deployment:**
```bash
wrangler deploy --env development # Dev environment
wrangler deploy --env production # Prod environment
```
DO NOT deploy as Cloudflare Pages - this is a Worker project!

**Generate Test API Key:**
```
GET /_admin/generate-key?tier=free|pro
```

**Database Migrations:**
```bash
wrangler d1 migrations apply usda-cache-prod --env production
```

## Common Pitfalls & Solutions

❌ **DON'T:** Use `ctx.waitUntil()` directly - errors will terminate worker
✅ **DO:** Use `safeBackgroundTask(ctx, fn, 'task-name', { context })`

❌ **DON'T:** Read request body multiple times (stream exhaustion)
✅ **DO:** Use `(request as any).__cachedBodyText` from `src/index.ts` pre-read

❌ **DON'T:** Forget to add new endpoints to rate limit config in `src/config.ts`
✅ **DO:** Define endpoint-specific limits in `rateLimits.free.endpoints`

❌ **DON'T:** Log sensitive data (API keys, tokens)
✅ **DO:** Use `sanitizeHeaders()` middleware (auto-redacts Auth headers)

❌ **DON'T:** Make duplicate USDA API calls for same food
✅ **DO:** Use `requestDeduplicator.deduplicate()` or `usdaBatch.queueFoodRequest()`

## Key Files Reference
- `src/index.ts` - Worker entry point, middleware chain, cron handlers
- `src/config.ts` - Environment variable config, rate limit definitions
- `src/types.ts` - All TypeScript types, error classes
- `src/schemas/requestSchemas.ts` - Zod validation schemas
- `src/services/usdaBatch.ts` - Batch API (20 foods per call)
- `src/services/hotCache.ts` - Top 100 foods cache
- `src/utils/backgroundTasks.ts` - Safe wrappers for ctx.waitUntil
- `src/utils/cacheKey.ts` - Cache key normalization
- `wrangler.toml` - Cloudflare bindings, cron triggers, environments
- `schema.sql` - D1 database schema

## When Adding New Endpoints
1. Define Zod schema in `src/schemas/requestSchemas.ts`
2. Add handler in `src/handlers/`
3. Register route in `src/index.ts` with middleware:
- `edgeCache(TTL)` for GET requests
- `withAuth` for API key check
- `withRateLimiting` for rate limits
- `validateRequest(Schema, 'body')` for input validation
- `createCreditCheck(COST)` for credit deduction
4. Add endpoint-specific rate limits to `src/config.ts` rateLimits
5. Update `openapi.json` if public-facing
6. Add integration tests in `tests/`
Loading