-
Notifications
You must be signed in to change notification settings - Fork 2
Perform critical app review and assessment #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Dexploarer
merged 8 commits into
main
from
claude/critical-app-review-019txope9jjiPCuNTQJC1Qh5
Nov 25, 2025
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0cf4db4
security: Critical security improvements and fixes
claude eabeeaf
test: Remove internal service mocks from asset tests
claude 51a22c5
docs: Add ThreeViewer refactoring plan
claude d426508
Update apps/core/server/services/TokenBlocklistService.ts
Dexploarer 1609e39
Update apps/core/server/plugins/auth.plugin.ts
Dexploarer d95324f
feat: Add Eden Treaty test helpers for type-safe testing
claude 01cdece
Update apps/core/server/plugins/csrf.plugin.ts
Dexploarer d57bfd3
fix: Address code review feedback from AI tools
claude File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,165 @@ | ||
| # ============================================================================== | ||
| # Asset-Forge Environment Configuration | ||
| # ============================================================================== | ||
| # Copy this file to .env and fill in your values | ||
| # Required variables are marked with (REQUIRED) | ||
| # ============================================================================== | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Node Environment | ||
| # ------------------------------------------------------------------------------ | ||
| NODE_ENV=development # development | production | test | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Database (REQUIRED) | ||
| # ------------------------------------------------------------------------------ | ||
| DATABASE_URL=postgresql://user:password@localhost:5432/assetforge | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Server Configuration | ||
| # ------------------------------------------------------------------------------ | ||
| PORT=3004 | ||
| API_PORT=3004 | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Authentication (Privy) | ||
| # Both required for authentication to work | ||
| # ------------------------------------------------------------------------------ | ||
| PRIVY_APP_ID=your_privy_app_id | ||
| PRIVY_APP_SECRET=your_privy_app_secret | ||
|
|
||
| # Frontend Privy ID (same as PRIVY_APP_ID, used by Vite) | ||
| VITE_PRIVY_APP_ID=your_privy_app_id | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # API Key Encryption | ||
| # Required for secure storage of user-provided API keys | ||
| # Generate with: openssl rand -base64 32 | ||
| # ------------------------------------------------------------------------------ | ||
| API_KEY_ENCRYPTION_SECRET=your_32_character_encryption_secret | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # AI Services | ||
| # At least one AI service is recommended | ||
| # ------------------------------------------------------------------------------ | ||
| # Vercel AI Gateway (recommended - single key for multiple providers) | ||
| AI_GATEWAY_API_KEY=your_ai_gateway_key | ||
|
|
||
| # Or direct provider keys | ||
| OPENAI_API_KEY=sk-your_openai_key | ||
| # ANTHROPIC_API_KEY=your_anthropic_key | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # 3D Asset Generation (Meshy AI) | ||
| # Required for 3D model generation features | ||
| # ------------------------------------------------------------------------------ | ||
| MESHY_API_KEY=your_meshy_api_key | ||
| MESHY_MODEL_DEFAULT=meshy-4 | ||
| MESHY_POLL_INTERVAL_MS=10000 | ||
| MESHY_TIMEOUT_MS=300000 | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Voice/Audio Generation (ElevenLabs) | ||
| # Optional - for voice synthesis and sound effects | ||
| # ------------------------------------------------------------------------------ | ||
| ELEVENLABS_API_KEY=your_elevenlabs_key | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Vector Database (Qdrant) | ||
| # Optional - for semantic search features | ||
| # ------------------------------------------------------------------------------ | ||
| QDRANT_URL=http://localhost:6333 | ||
| QDRANT_API_KEY=your_qdrant_key | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # URLs & CORS | ||
| # IMPORTANT: Configure these for production deployment | ||
| # ------------------------------------------------------------------------------ | ||
| # Frontend URL (REQUIRED in production for CORS/CSRF) | ||
| FRONTEND_URL=http://localhost:3000 | ||
| VITE_API_URL=http://localhost:3004 | ||
|
|
||
| # Additional allowed CORS origins (comma-separated) | ||
| CORS_ALLOWED_ORIGINS= | ||
|
|
||
| # CDN Configuration (for asset delivery) | ||
| CDN_URL=https://your-cdn.example.com | ||
| CDN_API_KEY=your_cdn_api_key | ||
| CDN_WS_URL=wss://your-cdn.example.com/ws | ||
| AUTO_PUBLISH_TO_CDN=true | ||
|
|
||
| # Image server URL (for Meshy AI callbacks) | ||
| IMAGE_SERVER_URL=http://localhost:3004 | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Webhook Configuration | ||
| # For CDN-to-app communication | ||
| # ------------------------------------------------------------------------------ | ||
| WEBHOOK_SECRET=your_webhook_secret_32_chars_minimum | ||
| CDN_WEBHOOK_ENABLED=false | ||
| WEBHOOK_SYSTEM_USER_ID= | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Rate Limiting | ||
| # Enabled by default in all environments | ||
| # ------------------------------------------------------------------------------ | ||
| # Set to "true" to disable rate limiting (NOT recommended) | ||
| # DISABLE_RATE_LIMITING=false | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Logging | ||
| # ------------------------------------------------------------------------------ | ||
| LOG_LEVEL=info # fatal | error | warn | info | debug | trace | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Testing Only | ||
| # ------------------------------------------------------------------------------ | ||
| # Secret for test JWT signing (only needed when NODE_ENV=test) | ||
| TEST_JWT_SECRET=test-secret-for-jwt-signing | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Railway Platform (auto-set by Railway) | ||
| # ------------------------------------------------------------------------------ | ||
| # RAILWAY_VOLUME_MOUNT_PATH=/data | ||
| # RAILWAY_PUBLIC_DOMAIN=your-app.railway.app | ||
|
|
||
| # ------------------------------------------------------------------------------ | ||
| # Image Hosting (Legacy) | ||
| # ------------------------------------------------------------------------------ | ||
| # IMGUR_CLIENT_ID=your_imgur_client_id | ||
|
|
||
| # ============================================================================== | ||
| # DEPLOYMENT CHECKLIST | ||
| # ============================================================================== | ||
| # Before deploying to production, ensure: | ||
| # | ||
| # 1. Security: | ||
| # [ ] NODE_ENV=production | ||
| # [ ] FRONTEND_URL is set (required for CORS/CSRF) | ||
| # [ ] API_KEY_ENCRYPTION_SECRET is a strong random value | ||
| # [ ] WEBHOOK_SECRET is set if using CDN webhooks | ||
| # [ ] All secrets are unique and not shared across environments | ||
| # | ||
| # 2. Database: | ||
| # [ ] DATABASE_URL points to production database | ||
| # [ ] Database migrations have been applied | ||
| # [ ] Connection pool is appropriately sized | ||
| # | ||
| # 3. Authentication: | ||
| # [ ] PRIVY_APP_ID and PRIVY_APP_SECRET are set | ||
| # [ ] VITE_PRIVY_APP_ID matches PRIVY_APP_ID | ||
| # | ||
| # 4. AI Services: | ||
| # [ ] At least one AI provider key is configured | ||
| # [ ] MESHY_API_KEY is set for 3D generation | ||
| # | ||
| # 5. URLs: | ||
| # [ ] FRONTEND_URL is the production frontend domain | ||
| # [ ] IMAGE_SERVER_URL is accessible by Meshy for callbacks | ||
| # [ ] CDN_URL is configured if using CDN | ||
| # | ||
| # 6. Monitoring: | ||
| # [ ] LOG_LEVEL=info or LOG_LEVEL=warn for production | ||
| # [ ] Error tracking service configured (Sentry, etc.) | ||
| # | ||
| # ============================================================================== |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.