Commit Graph

87 Commits

Author SHA1 Message Date
Zimeng Xiong b0bdc05071 Merge pull request #15 from AdrianAcala/perf/drawings-optim
perf: optimize drawings endpoint with caching and lazy loading
2025-12-01 13:59:08 -08:00
Zimeng Xiong 2520d7e7a2 fix(drawings): stabilize lazy loading, improve export error handling, and tidy cache invalidation 2025-12-01 13:58:24 -08:00
Zimeng Xiong f8830a8b0f add example in docker-compose, clarify README, add clearer validation, longer timeouts for websocket connections 2025-12-01 13:27:31 -08:00
Adrian Acala c4352185d6 refactor: optimize drawing data handling and cache management
- Improve cache key generation using JSON.stringify for consistent formatting
- Add promise deduplication in DrawingCard to prevent redundant API calls for full drawing data
- Clear full data state when drawing ID changes to ensure fresh data loading
- Fix async cache invalidation in drawing update and collection delete endpoints
- Move cache invalidation after database operations in SQLite import endpoint
- Add HydratedDrawingData type for better type safety in drawing data management
2025-11-29 11:48:47 -08:00
Adrian Acala f9986513f8 Refactor nginx configuration and update README
- Moved BACKEND_URL configuration to the frontend service in the README.
- Added validation for the generated nginx configuration in the entrypoint script.
- Removed fallback nginx configuration copy from the Dockerfile.
- Adjusted nginx template to ensure proper header formatting.

This improves the deployment process and clarifies configuration instructions.
2025-11-29 11:29:43 -08:00
Adrian Acala 6f050aec7d perf: optimize drawings endpoint with caching and lazy loading
- Add 5s in-memory cache for /drawings responses with automatic cleanup
- Split Drawing/DrawingSummary types for efficient data fetching
- Implement lazy loading of drawing data in DrawingCard component
- Add configurable DRAWINGS_CACHE_TTL_MS and RATE_LIMIT_MAX_REQUESTS env vars
- Prevent memory leaks with periodic cleanup of cache and rate limit maps
- Add loading states and better UX for export operations
- Improve JSON parsing with error handling for malformed stored data

Benchmark results (100 drawings, cached):
- Avg latency: 6.94ms (p50: 4ms, p97.5: 8ms)
- Avg throughput: 668 req/s (peak: 1,023)
- 3k requests in 5s with 0 errors

Update .gitignore to exclude generated files, env files, and build artifacts
2025-11-29 04:30:28 +00:00
Adrian Acala 05b787bc27 Add backend URL configuration for frontend and update nginx setup
- Added BACKEND_URL environment variable to docker-compose for frontend service.
- Introduced a new entrypoint script to configure nginx with the BACKEND_URL at runtime.
- Created a template for nginx configuration to handle API and WebSocket requests dynamically.
- Updated README with instructions for configuring reverse proxy setups.

Fixes #12
2025-11-28 17:56:19 -08:00
Zimeng Xiong f20d48fea2 fix migration issues 2025-11-24 14:53:17 -08:00
Zimeng Xiong c53dc010de Merge branch '8-export-drawing' into pre-release 2025-11-24 14:43:58 -08:00
Zimeng Xiong 03e778a06f add export functionality via exportUtils 2025-11-24 14:39:38 -08:00
Zimeng Xiong fa73708d97 allow importing of libraries via URL, update db schema 2025-11-24 14:32:48 -08:00
Zimeng Xiong d581eb3e88 fix database import, allow sqlite and db format 2025-11-23 09:22:01 -08:00
Zimeng Xiong 4728ef151c release notes 2025-11-23 09:12:36 -08:00
Zimeng Xiong eb5f54a6d0 unify version numbering 2025-11-23 08:53:36 -08:00
Zimeng Xiong c502f1c0bd add version card to settings, branch push protection 2025-11-23 08:35:36 -08:00
Zimeng Xiong 0787989496 add version managment script 2025-11-23 08:02:00 -08:00
Zimeng Xiong 997fa4af03 add prisma cli to dependencies, make zod checks more permissive 2025-11-23 07:08:41 -08:00
Zimeng Xiong b864e82318 Merge branch '1-413-request-entity-too-large' into pre-release 2025-11-22 22:50:40 -08:00
Zimeng Xiong 3835557e67 update nginx config 2025-11-22 21:06:01 -08:00
Zimeng Xiong 69bffab745 fix XSS and Root execution of NPM in docker 2025-11-22 20:38:40 -08:00
Zimeng Xiong fb5fe1235c add fallback for browsers that do not have crypto.randomUUID 2025-11-22 19:18:05 -08:00
Zimeng Xiong d31feda405 fix: realign sqlite path and stabilize client data 2025-11-22 16:26:28 -08:00
Zimeng Xiong c8971e62d2 Add frontend access instructions to README
Added instructions to access the frontend after running the container.
2025-11-22 14:25:18 -08:00
Zimeng Xiong 8230a58899 add README, sidebar adjustability 2025-11-22 12:09:11 -08:00
Zimeng Xiong d08dfe9b56 export/import functionality 2025-11-22 10:06:58 -08:00
Zimeng Xiong 05d472189c New Icon/Logo 2025-11-22 09:45:20 -08:00
Zimeng Xiong 0c843eb37d Browser Title 2025-11-22 09:29:46 -08:00
Zimeng Xiong e87987a0a3 Dockerize 2025-11-22 09:18:20 -08:00
Zimeng Xiong 5979293e1b Dynamically resize text box for editing name 2025-11-21 23:15:41 -08:00
Zimeng Xiong 5925017868 Generate preview on exiting of editor 2025-11-21 23:12:21 -08:00
Zimeng Xiong be45a0c913 remove normalization, fix import issues 2025-11-21 23:10:51 -08:00
Zimeng Xiong aae0059a6f Minor UI, fix dragging to select 2025-11-21 22:52:32 -08:00
Zimeng Xiong 6a57e668dd Fix save issue 2025-11-21 22:46:58 -08:00
Zimeng Xiong 9ee9d6ccfe working live collab 2025-11-21 22:06:12 -08:00
Zimeng Xiong 0878b5e87f Trash ID Update Collections 2025-11-21 19:31:59 -08:00
Zimeng Xiong 4e8beae0ee MVP 2025-11-21 19:18:07 -08:00
Zimeng Xiong 35734936b3 Scaffolding 2025-11-21 17:55:51 -08:00