{"id":50766249,"url":"https://github.com/kenken64/dynaform","last_synced_at":"2026-06-11T14:01:25.753Z","repository":{"id":295675980,"uuid":"990874606","full_name":"kenken64/DynaForm","owner":"kenken64","description":"Using Qwen model convert pdf to dynamic form (Angular), Agentic AI ","archived":false,"fork":false,"pushed_at":"2025-06-25T11:08:14.000Z","size":48083,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-25T11:19:02.304Z","etag":null,"topics":["ai","angular","generative-ai","nodejs","ollama","python","qwen","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kenken64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-26T19:20:48.000Z","updated_at":"2025-06-25T11:08:17.000Z","dependencies_parsed_at":"2025-06-10T11:40:32.236Z","dependency_job_id":null,"html_url":"https://github.com/kenken64/DynaForm","commit_stats":null,"previous_names":["kenken64/doc2formjson"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kenken64/DynaForm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenken64%2FDynaForm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenken64%2FDynaForm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenken64%2FDynaForm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenken64%2FDynaForm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kenken64","download_url":"https://codeload.github.com/kenken64/DynaForm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenken64%2FDynaForm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34201842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","angular","generative-ai","nodejs","ollama","python","qwen","typescript"],"created_at":"2026-06-11T14:01:15.338Z","updated_at":"2026-06-11T14:01:25.746Z","avatar_url":"https://github.com/kenken64.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DynaForm - AI-Powered Document-to-Form Conversion Platform\n\n**Transform PDF documents into interactive web forms using AI, with blockchain verification for form integrity.**\n\n## Quick Start\n\n**🚀 Super Fast Start:**\n```bash\n# Mac/Linux\n./quick-start.sh dev\n\n# Windows PowerShell  \n.\\quick-start.ps1 dev\n```\n\n**📖 All Scripts Organized:**\nAll startup, setup, and test scripts are now organized in the `scripts/` directory:\n- `scripts/docker/` - Docker Compose startup scripts\n- `scripts/setup/` - Setup and configuration scripts  \n- `scripts/test/` - Testing and debugging scripts\n\nSee `scripts/README.md` for complete documentation.\n\n## Overview\n\nDynaForm is a complete Web3-enabled document digitization platform that converts static PDFs into verified, interactive forms through AI analysis and blockchain verification.\n\n### Core Workflow\n```\nPDF → AI Analysis → Form Fields → Web Form → Data Collection → Blockchain Verification → Export\n```\n\n### Full-Stack Architecture\n\n- **🌐 Frontend**: Angular application (port 4201)\n- **🔧 Backend**: Node.js/Express API (port 3000)\n- **🗄️ Database**: MongoDB with security features\n- **🤖 AI Engine**: Ollama with qwen2.5vl multimodal model\n- **📄 PDF Processing**: Python Flask service (port 5001)\n- **⚡ Caching**: Redis for performance optimization\n- **🔗 Blockchain**: Verifiable smart contracts for form authenticity\n\n### Key Features\n\n- **AI-Powered Extraction**: Automatically extracts form fields from PDF images\n- **User Management**: Authentication, authorization, and user profiles\n- **Form Builder**: Create and manage interactive forms\n- **Public Sharing**: Share forms publicly for data collection\n- **Data Export**: Export collected data to Excel formats\n- **Blockchain Verification**: Smart contract-based form integrity validation\n- **Recipient Management**: Organize and manage form recipients\n- **Performance Monitoring**: Comprehensive testing and stress monitoring\n\n### Development Features\n\n- **Cross-Platform**: Windows PowerShell + Mac/Linux Bash scripts\n- **Docker Orchestration**: Complete containerized deployment\n- **Secure Configuration**: MongoDB with Docker secrets\n- **Smart Contracts**: Hardhat-based blockchain deployment\n- **Testing Suite**: Unit, integration, and stress testing\n\n## 📚 Documentation \u0026 Diagrams\n\nThis project includes comprehensive documentation with diagrams, implementation guides, and technical specifications:\n\n| Category | Document | Description |\n|----------|----------|-------------|\n| **🏗️ Architecture** | [Architecture Diagram](architecture-diagram.md) | Complete system architecture with Mermaid diagrams |\n| **🏗️ Architecture** | [Server Class Diagram](server-class-diagram.md) | Backend class structure and relationships |\n| **🏗️ Architecture** | [MongoDB Data Flow](mongodb-data-flow-diagrams.md) | Database architecture and data flow diagrams |\n| **🏗️ Architecture** | [Dashboard PDF Upload Sequence](dashboard-pdf-upload-sequence.md) | Complete PDF to web form generation flow |\n| **🤖 AI Agent** | [AI Agent Code](AI_AGENT_CODE.md) | Complete AI agent implementation details |\n| **🤖 AI Agent** | [AI Agent Blockchain Publishing](AI_AGENT_BLOCKCHAIN_PUBLISHING.md) | Blockchain integration for AI agent |\n| **🤖 AI Agent** | [AI Agent Completion Summary](AI_AGENT_COMPLETION_SUMMARY.md) | AI agent development summary |\n| **🤖 AI Agent** | [Form Extraction Prompt](FORM_EXTRACTION_PROMPT.md) | AI prompts for form field extraction |\n| **🤖 AI Agent** | [Ollama Timeout Configuration](OLLAMA_TIMEOUT_CONFIGURATION.md) | Ollama service configuration |\n| **🗄️ Database** | [MongoDB Security Guide](MONGODB_SECURITY_GUIDE.md) | Database security implementation |\n| **🗄️ Database** | [MongoDB Setup](MONGODB_SETUP_COMPLETE.md) | Database setup and configuration |\n| **🗄️ Database** | [MongoDB Users Schema](MONGODB_USERS_SCHEMA.md) | User management database schema |\n| **⚡ Caching** | [Redis Cache Implementation](REDIS_CACHE_IMPLEMENTATION_COMPLETE.md) | Redis caching system |\n| **⚡ Caching** | [Redis Implementation Final](REDIS_CACHE_IMPLEMENTATION_FINAL.md) | Final Redis implementation |\n| **⚡ Caching** | [Redis Iteration Complete](REDIS_ITERATION_COMPLETE.md) | Redis development iterations |\n| **🌐 Frontend** | [Angular Routing Fix](ANGULAR_ROUTING_FIX_COMPLETE.md) | Frontend routing implementation |\n| **🌐 Frontend** | [Public Form Implementation](PUBLIC_FORM_IMPLEMENTATION_COMPLETE.md) | Public form features |\n| **🌐 Frontend** | [Carousel Implementation](CAROUSEL_IMPLEMENTATION_COMPLETE.md) | Image carousel component |\n| **🌐 Frontend** | [Forms List Create Button](FORMS_LIST_CREATE_BUTTON_COMPLETE.md) | Forms management interface |\n| **🔧 Backend** | [Form Data API](FORM_DATA_API.md) | Backend API documentation |\n| **🔧 Backend** | [Recipient Groups API](RECIPIENT_GROUPS_API.md) | Recipient management API |\n| **🔧 Backend** | [PDF Fingerprint Update](BACKEND_PDF_FINGERPRINT_UPDATE.md) | PDF processing implementation |\n| **🔧 Backend** | [PDF Fingerprint Fix](PDF_FINGERPRINT_FIX_COMPLETE.md) | PDF fingerprint fixes |\n| **✨ Features** | [Form Title Autosave](FORM_TITLE_AUTOSAVE_COMPLETE.md) | Auto-save functionality |\n| **✨ Features** | [Field Configuration Fix](FIELD_CONFIGURATION_ERROR_FIX_COMPLETE.md) | Form field configuration |\n| **✨ Features** | [User Info Implementation](USERINFO_IMPLEMENTATION_COMPLETE.md) | User profile features |\n| **✨ Features** | [User Public Submissions](USER_PUBLIC_SUBMISSIONS_TESTING_COMPLETE.md) | Public submission system |\n| **🔐 Security** | [Secure Implementation](SECURE_IMPLEMENTATION_SUMMARY.md) | Security implementation guide |\n| **🔐 Security** | [Testing Secure Config](TESTING_SECURE_CONFIG.md) | Security testing procedures |\n| **🔐 Security** | [Bhutan NDI Login Complete](BHUTAN_NDI_LOGIN_COMPLETE.md) | Complete NDI authentication integration |\n| **🧪 Testing** | [Autosave Testing Guide](AUTOSAVE_TESTING_GUIDE.md) | Testing autosave features |\n| **🧪 Testing** | [Autosave Fix Verification](AUTOSAVE_FIX_VERIFICATION.md) | Autosave bug fixes |\n| **🛠️ DevOps** | [Scripts Organization](SCRIPTS_REORGANIZATION_COMPLETE.md) | Script structure reorganization |\n| **🛠️ DevOps** | [Scripts Documentation](scripts/README.md) | Complete scripts usage guide |\n| **⚙️ Hardware** | [NVIDIA Configuration](NVIDIA.md) | GPU acceleration setup |\n\n### Quick Access to Key Diagrams\n\n- **🏗️ [System Architecture](architecture-diagram.md)** - Complete physical architecture\n- **🗄️ [Database Design](mongodb-data-flow-diagrams.md)** - MongoDB data flow and schemas  \n- **🔧 [Backend Structure](server-class-diagram.md)** - Server-side class diagrams\n- **📄 [PDF Upload Flow](dashboard-pdf-upload-sequence.md)** - Complete user journey from PDF to web form\n- **🤖 [AI Integration](AI_AGENT_CODE.md)** - AI agent implementation details\n\n## Docker Setup and Build Options\n\nThis project uses Docker Compose to orchestrate multiple services including MongoDB for data persistence. The configuration ensures that containers are always rebuilt with the latest changes.\n\n### Complete Application Stack\n\n**MongoDB + All Services (Recommended):**\n\n```bash\n# Complete setup with MongoDB - Interactive mode\n./scripts/docker/start-complete-with-mongodb.sh\n\n# MongoDB management\n./scripts/setup/mongodb-manager.sh start     # Start MongoDB only\n./scripts/setup/mongodb-manager.sh connect   # Connect to MongoDB shell\n./scripts/setup/mongodb-manager.sh stats     # Show database statistics\n./scripts/setup/mongodb-manager.sh help      # Show all commands\n```\n\n**Services Included:**\n- 🗄️ **MongoDB**: Document database for form data storage\n- 🤖 **Ollama**: LLM service for form field analysis  \n- 🔧 **API**: Node.js/Express backend service\n- 📄 **PDF Converter**: Python Flask service for PDF processing\n- 🌐 **Frontend**: Angular application\n\n### Quick Start Options\n\n**For Development (Always Rebuilds):**\n\n*Windows (PowerShell):*\n```powershell\n# Interactive mode with forced rebuild\n.\\scripts\\docker\\start-dev.ps1\n\n# Detached mode with forced rebuild  \n.\\scripts\\docker\\start-dev-detached.ps1\n```\n\n*Mac/Linux (Bash):*\n```bash\n# Make scripts executable (first time only)\nchmod +x scripts/docker/*.sh scripts/setup/*.sh scripts/test/*.sh\n\n# Complete stack with MongoDB (recommended)\n./scripts/docker/start-complete-with-mongodb.sh\n\n# Interactive mode with forced rebuild\n./scripts/docker/start-dev.sh\n\n# Detached mode with forced rebuild  \n./scripts/docker/start-dev-detached.sh\n```\n\n**Standard Options:**\n\n*Windows (PowerShell):*\n```powershell\n# Interactive mode with build\n.\\scripts\\docker\\start-with-build.ps1\n\n# Detached mode with build\n.\\scripts\\docker\\start-detached-with-build.ps1\n\n# Original scripts (may not always rebuild)\n.\\scripts\\docker\\start.ps1\n.\\scripts\\docker\\start-detached.ps1\n```\n\n*Mac/Linux (Bash):*\n```bash\n# Interactive mode with build\n./scripts/docker/start-with-build.sh\n\n# Detached mode with build\n./scripts/docker/start-detached-with-build.sh\n\n# Original scripts (may not always rebuild)\n./scripts/docker/start.sh\n./scripts/docker/start-detached.sh\n```\n\n### Manual Docker Commands\n\n**Always rebuild all containers:**\n```bash\n# Set timestamp for forced rebuild\n$env:BUILD_TIMESTAMP = Get-Date -Format \"yyyyMMddHHmmss\"\ndocker-compose up --build\n\n# Or using development override\ndocker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build\n```\n\n**Standard commands:**\n```bash\n# Start services\ndocker-compose up\n\n# Start in detached mode\ndocker-compose up -d\n\n# View logs\ndocker-compose logs -f\n\n# Stop services\ndocker-compose down\n```\n\n### Services and Ports\n\n- **Frontend (Angular)**: http://localhost:4201\n- **API (Node.js)**: http://localhost:3000  \n- **PDF Converter (Python Flask)**: http://localhost:5001\n- **Ollama GPU**: http://localhost:11434\n- **MongoDB**: mongodb://localhost:27017\n\n### MongoDB Configuration\n\nThe application uses MongoDB for persistent data storage with the following setup:\n\n**Database Information:**\n- **Database Name**: `doc2formjson`\n- **Collections**: `form_submissions`, `forms`, `users`, `form_templates`\n- **Application User**: `doc2formapp` (read/write access)\n- **Read-only User**: `doc2formreader` (analytics access)\n\n**Connection Details:**\n```\nMongoDB URI: mongodb://doc2formapp:apppassword123@localhost:27017/doc2formjson\nAdmin URI: mongodb://admin:password123@localhost:27017/admin\n```\n\n**Environment Variables:**\n```bash\nMONGODB_URI=mongodb://doc2formapp:apppassword123@localhost:27017/doc2formjson\nMONGODB_DB_NAME=doc2formjson\n```\n\n**⚠️ Security Note**: Default passwords are for development only. Change them in production!\n\n### MongoDB Management\n\nUse the MongoDB manager script for easy database operations:\n\n```bash\n./mongodb-manager.sh start      # Start MongoDB container\n./mongodb-manager.sh stop       # Stop MongoDB container\n./mongodb-manager.sh connect    # Open MongoDB shell\n./mongodb-manager.sh stats      # Show database statistics\n./mongodb-manager.sh backup     # Create database backup\n./mongodb-manager.sh logs       # View MongoDB logs\n./mongodb-manager.sh help       # Show all commands\n```\n\n**Sample Database Operations:**\n```javascript\n// Connect to application database\nuse doc2formjson\n\n// View collections\nshow collections\n\n// Count form submissions\ndb.form_submissions.countDocuments()\n\n// Find recent submissions\ndb.form_submissions.find().sort({submissionMetadata.submittedAt: -1}).limit(5)\n\n// Search submissions by form title\ndb.form_submissions.find({formTitle: {$regex: \"invoice\", $options: \"i\"}})\n```\n\n## Install Ollama with Qwen Multimodal\n\n```\nollama run qwen2.5vl:latest\n```\n\nhttps://ollama.com/blog/multimodal-models\n\n\n## Server side that convert pdf to png\n\nLinux\n```\nsudo apt-get update\nsudo apt-get install poppler-utils\n```\n\nMacos\n```\nbrew install poppler\n```\n\nInstall python libraries\n\n```\npip install Flask pdf2image Pillow\n```\n\n```\npython app.py\n```\n\n```\ncurl -X POST \\\n     -F \"pdfFile=@/path/to/your/document.pdf\" \\\n     http://localhost:5001/conversion/pdf-to-png-save\n```\n\n\n\n## Server side with LLM Models\n```\nnpm i \n```\n\nOkay, let's set up your Node.js Express project to be TypeScript-compatible. This involves installing TypeScript, configuring it, and adjusting your scripts.\n\nHere's a step-by-step guide:\n\n**1. Initialize your project (if you haven't already):**\n\n```bash\nnpm init -y\n```\n\n**2. Install Dependencies:**\n\n*   **Core Dependencies (for your application):**\n    ```bash\n    npm install express multer\n    # npm install node-fetch # If you were using this for Node \u003c 18\n    ```\n*   **Development Dependencies (for TypeScript and tooling):**\n    ```bash\n    npm install --save-dev typescript ts-node nodemon @types/node @types/express @types/multer\n    ```\n    *   `typescript`: The TypeScript compiler.\n    *   `ts-node`: Allows you to run TypeScript files directly without pre-compiling (great for development).\n    *   `nodemon`: Automatically restarts your server when files change (works well with `ts-node`).\n    *   `@types/node`: Type definitions for Node.js built-in modules.\n    *   `@types/express`: Type definitions for Express.\n    *   `@types/multer`: Type definitions for Multer.\n\n**3. Create a TypeScript Configuration File (`tsconfig.json`):**\n\nRun this command in your project root:\n\n```bash\nnpx tsc --init\n```\n\n\n**7. Running Your TypeScript Application:**\n\n*   **For Development:**\n    ```bash\n    npm run dev\n    ```\n    `nodemon` will start your server using `ts-node`. Any changes you make to `.ts` files in `src` will cause the server to automatically restart.\n\n*   **For Production:**\n    1.  **Build the project:**\n        ```bash\n        npm run build\n        ```\n        This will compile your TypeScript code from `src` into JavaScript in the `dist` folder.\n    2.  **Run the compiled code:**\n        ```bash\n        npm run start\n        ```\n        This runs the `dist/server.js` file using Node.js.\n\nNow your Express API is set up with TypeScript, providing better code organization, type safety, and an improved development experience! Remember to change `DEFAULT_MODEL_NAME` in `src/server.ts`.\n\n```\ncurl -X POST \\\n     -F \"imageFile=@/path/to/your/my_test_image.jpg\" \\\n     -F \"prompt=Describe this image in a few sentences.\" \\\n     -F \"model=qwen:7b\" \\\n     http://localhost:3000/api/describe-image\n```\n\n\n```\ncurl -X POST \\                         \n     -F \"imageFile=@sampleform_page_1.png\" \\               \n     -F \"prompt=List all the form fields format the output in json (make sure is this json structure {forms:[ fields: []]}) and also provide the field type whether it is a textbox or checkbox\" \\\n     -F \"model=qwen2.5vl:latest\" \\\n     http://localhost:3000/api/describe-image\n\n```\n\n```\ncurl -X POST \\\n     -F \"imageFile=@sampleform_page_1.png\" \\\n     -F \"prompt=List all the form fields format the output in csv and also provide the field type whether is a textbox or checkbox\" \\ \n     -F \"model=qwen2.5vl:latest\" \\\n     http://localhost:3000/api/describe-image\n\n\n{\"description\":\"Sure, here is the list of form fields in CSV format with their respective types:\\n\\n| Field Name | Field Type |\\n|------------|------------|\\n| Given Name | Textbox    |\\n| Family Name | Textbox    |\\n| Address 1 | Textbox    |\\n| Address 2 | Textbox    |\\n| House nr | Textbox    |\\n| Postcode | Textbox    |\\n| City | Textbox    |\\n| Country | Textbox    |\\n| Gender | Textbox    |\\n| Height (cm) | Textbox    |\\n| Driving License | Checkbox   |\\n| I speak and understand (tick all that apply) | Checkbox   |\\n| Deutsch | Checkbox   |\\n| English | Checkbox   |\\n| Français | Checkbox   |\\n| Esperanto | Checkbox   |\\n| Latin | Checkbox   |\\n| Favourite colour | Textbox    |\\n\\nThis CSV format lists the field names and their corresponding types.\",\"modelUsed\":\"qwen2.5vl:latest\",\"createdAt\":\"2025-05-26T19:19:28.563265Z\",\"timings\":{\"totalDuration\":8454185958,\"promptEvalDuration\":1119861291,\"evalDuration\":7290537000},\"tokenCounts\":{\"promptEvalCount\":1311,\"evalCount\":185}}%\n```\n\n### Ollama Model Management\n\nThe application requires the `qwen2.5vl:latest` model to be available in Ollama. The model is automatically cached in a Docker volume for persistence.\n\n**Automatic Setup:**\n\n*Windows (PowerShell):*\n```powershell\n# Complete setup with model initialization\n.\\start-complete.ps1\n```\n\n*Mac/Linux (Bash):*\n```bash\n# Complete setup with model initialization\n./start-complete.sh\n```\n\n**Manual Model Setup:**\n\n*Windows (PowerShell):*\n```powershell\n# Ensure models are ready (run after containers are started)\n.\\setup-ollama-models.ps1\n```\n\n*Mac/Linux (Bash):*\n```bash\n# Ensure models are ready (run after containers are started)\n./setup-ollama-models.sh\n```\n\n**Troubleshooting Ollama Issues:**\n- Model not found: Run `.\\setup-ollama-models.ps1` (Windows) or `./setup-ollama-models.sh` (Mac/Linux)\n- Check Ollama logs: `docker-compose logs ollama-gpu`\n- Manually pull model: `docker-compose exec ollama-gpu ollama pull qwen2.5vl:latest`\n\n### API Routing Fix\n\nThe nginx configuration has been updated to properly proxy API calls from the frontend to the backend services:\n- Frontend (port 4201) → API calls get proxied to → Backend (port 3000)\n- PDF conversion calls get proxied to → PDF service (port 5001)\n\n## Cross-Platform Usage\n\nThis project includes both PowerShell scripts (`.ps1`) for Windows and Bash scripts (`.sh`) for Mac/Linux to provide identical functionality across platforms.\n\n### Windows Setup\nPowerShell scripts are ready to use. If you encounter execution policy issues:\n```powershell\n# Allow script execution (run as Administrator)\nSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser\n```\n\n### Mac/Linux Setup\nMake shell scripts executable on first use:\n```bash\n# Make all scripts executable\nchmod +x *.sh\n\n# Or make individual scripts executable\nchmod +x start-complete.sh\nchmod +x setup-ollama-models.sh\n```\n\n### Script Equivalents\n| Windows (PowerShell) | Mac/Linux (Bash) | Description |\n|---------------------|-------------------|-------------|\n| `start-complete.ps1` | `start-complete.sh` | Complete setup with model initialization |\n| `start-dev.ps1` | `start-dev.sh` | Development mode (always rebuilds) |\n| `start-dev-detached.ps1` | `start-dev-detached.sh` | Development detached mode |\n| `start-with-build.ps1` | `start-with-build.sh` | Force rebuild and start |\n| `start-detached-with-build.ps1` | `start-detached-with-build.sh` | Force rebuild and start detached |\n| `start.ps1` | `start.sh` | Standard start with build |\n| `start-detached.ps1` | `start-detached.sh` | Standard start detached |\n| `setup-ollama-models.ps1` | `setup-ollama-models.sh` | Setup Ollama models only |\n\n### Secure MongoDB Configuration 🔐\n\nFor production deployments, use the secure configuration that implements Docker secrets for password management:\n\n```bash\n# Setup secure MongoDB configuration (one-time setup)\n./setup-mongodb-security.sh\n\n# Start with secure configuration\n./start-secure.sh\n\n# Test secure configuration\n./test-secure-config.sh\n\n# Test MongoDB connection\nnode test-mongodb-connection.js\n```\n\n**Security Features:**\n- 🔒 **Docker Secrets**: Passwords stored as Docker secrets, not environment variables\n- 🔑 **Role-based Access**: Separate users for admin, application, and read-only access\n- 📁 **Secure Storage**: Password files with restricted permissions (600)\n- 🛡️ **No Plain Text**: No passwords in Docker Compose files or environment variables\n- 📝 **Comprehensive Logging**: Security audit trail and configuration validation\n\n**Files Created:**\n- `secrets/mongo_root_password.txt` - MongoDB admin password\n- `secrets/mongo_app_password.txt` - Application user password  \n- `secrets/mongo_reader_password.txt` - Read-only user password\n- `docker-compose.secure.yml` - Secure Docker Compose configuration\n\nSee [MONGODB_SECURITY_GUIDE.md](./MONGODB_SECURITY_GUIDE.md) for detailed security documentation.\nSee [TESTING_SECURE_CONFIG.md](./TESTING_SECURE_CONFIG.md) for testing instructions.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenken64%2Fdynaform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkenken64%2Fdynaform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenken64%2Fdynaform/lists"}