{"id":28289342,"url":"https://github.com/drawing-captcha/drawing-captcha-app","last_synced_at":"2025-07-25T04:04:09.870Z","repository":{"id":248108456,"uuid":"827748335","full_name":"Drawing-Captcha/Drawing-Captcha-APP","owner":"Drawing-Captcha","description":"Drawing Captcha is an innovative software that enhances security and promotes brand awareness by requiring users to complete interactive drawing tasks to pass the verification process. (Website comes soon)","archived":false,"fork":false,"pushed_at":"2025-07-09T13:05:22.000Z","size":11709,"stargazers_count":7,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-09T13:25:29.743Z","etag":null,"topics":["captcha","drawing","js","nodejs","open-source","security","solving"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Drawing-Captcha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-07-12T09:38:46.000Z","updated_at":"2025-06-10T11:27:39.000Z","dependencies_parsed_at":"2024-07-12T13:04:29.914Z","dependency_job_id":"c95b22b5-bc45-45b4-be4c-1b4b980b4a1b","html_url":"https://github.com/Drawing-Captcha/Drawing-Captcha-APP","commit_stats":null,"previous_names":["drawing-captcha/drawing-captcha-app"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Drawing-Captcha/Drawing-Captcha-APP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawing-Captcha%2FDrawing-Captcha-APP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawing-Captcha%2FDrawing-Captcha-APP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawing-Captcha%2FDrawing-Captcha-APP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawing-Captcha%2FDrawing-Captcha-APP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Drawing-Captcha","download_url":"https://codeload.github.com/Drawing-Captcha/Drawing-Captcha-APP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawing-Captcha%2FDrawing-Captcha-APP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266952404,"owners_count":24011502,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"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":["captcha","drawing","js","nodejs","open-source","security","solving"],"created_at":"2025-05-22T01:11:41.627Z","updated_at":"2025-07-25T04:04:09.862Z","avatar_url":"https://github.com/Drawing-Captcha.png","language":"JavaScript","readme":"\r\n\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\r\n\r\n[![Contributors][contributors-shield]][contributors-url]\r\n[![Forks][forks-shield]][forks-url]\r\n[![Stargazers][stars-shield]][stars-url]\r\n[![Issues][issues-shield]][issues-url]\r\n[![License][license-shield]][license-url]\r\n[![LinkedIn][linkedin-shield]][linkedin-url]\r\n\r\n\r\n\r\n\u003cbr /\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/Drawing-Captcha/Drawing-Captcha-APP\"\u003e\r\n    \u003cimg src=\"./public/images/favicon.ico\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\r\n  \u003c/a\u003e\r\n\r\n  \u003ch1 align=\"center\"\u003eDrawing-Captcha APP\u003c/h3\u003e\r\n\r\n  \u003cp align=\"center\"\u003e\r\n    Boost security and brand awareness with Drawing Captcha, the fun and interactive way to verify users!\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://docs.drawing-captcha.com\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\r\n    \u003cbr /\u003e\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://demo.drawing-captcha.com\"\u003eView Demo\u003c/a\u003e\r\n    \u0026middot;\r\n    \u003ca href=\"https://github.com/Drawing-Captcha/Drawing-Captcha-APP/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\r\n    \u0026middot;\r\n    \u003ca href=\"https://github.com/Drawing-Captcha/Drawing-Captcha-APP/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\r\n  \u003col\u003e\r\n    \u003cli\u003e\r\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\r\n      \u003cul\u003e\r\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\r\n      \u003c/ul\u003e\r\n    \u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#drawing-captcha-request-flow\"\u003eRequest Flow\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\r\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\r\n      \u003cul\u003e\r\n        \u003cli\u003e\u003ca href=\"#docker-compose-setup\"\u003eDocker Compose Setup\u003c/a\u003e\u003c/li\u003e\r\n        \u003cli\u003e\u003ca href=\"#docker-compose-image-setup\"\u003eDocker Compose Setup with Image\u003c/a\u003e\u003c/li\u003e\r\n      \u003c/ul\u003e\r\n    \u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#usefull-links\"\u003eUsefull Links\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\r\n  \u003c/ol\u003e\r\n\u003c/details\u003e\r\n\r\n## About The Project\r\n\r\n[![Product Name Screen Shot][product-screenshot]](https://github.com/user-attachments/assets/cc1ef188-2cd6-4d73-94fe-8ac191a52926)\r\n\r\nI couldn’t find a captcha solution that combined security, creativity, and branding in a way that felt truly engaging—so I created Drawing-Captcha. It’s designed to make user verification fun, secure, and memorable.\r\n\r\nHere’s why you’ll love it:\r\n* Focus on building something awesome while Drawing-Captcha handles security.\r\n* Say goodbye to boring, frustrating captchas and hello to interactive, creative tasks.\r\n* Promote your brand effortlessly by integrating logos and custom designs into the captcha experience.\r\n\r\nOf course, no single solution fits every project perfectly. That’s why Drawing-Captcha is open-source and always evolving. Feel free to fork the repo, submit a pull request, or open an issue to contribute your ideas. Let’s build the future of user verification together! 🎨✨\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n### Built With\r\n\r\n* ![Mongo][MongoDB]\r\n* ![NodeJS][NodeJS]\r\n* ![ExpressJS][ExpressJS]\r\n* ![EJS][EJS]\r\n* ![JS][JS]\r\n* ![Docker][Docker]\r\n* ![HTML][HTML]\r\n* ![CSS][CSS]\r\n\r\n\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## Drawing-Captcha Request Flow\r\nThis is the request flow for the Drawing-Captcha environment. It demonstrates how to use the Drawing-Captcha API and explains its communication process with the frontend.\r\n\r\n![Request Flow Drawing Captcha][Request-Flow-Drawing-Captcha]\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## Getting Started\r\n\r\nThis repository contains the Drawing Captcha APP, which is required for the Drawing Captcha to function. It communicates with the Captcha JS library, which can be installed via npm: `@drawing-captcha/drawing-captcha-frontend`.\r\n\r\nAlternatively, you can use the CDN: `https://cdn.drawing-captcha.com/captcha.js`.\r\n\r\nTo learn how to integrate it and enable communication with your Drawing Captcha app instance, please refer to the README in this repository: \u003chttps://github.com/Drawing-Captcha/Drawing-Captcha-Frontend\u003e.\r\n\r\n\r\n### Docker Compose Setup\r\n\r\n#### Clone this project:\r\n  ```sh\r\n  git clone https://github.com/wpesicdev/drawing-captcha-app-alpha.git\r\n  ```\r\n#### Create and change your `.env` settings:\r\n\r\n\u003cp\u003eI have added a `.env.example`. You can just rename this file to `.env`.\u003c/p\u003e\r\n\r\n   ```env\r\n   MONGO_INITDB_ROOT_USERNAME=root\r\n   MONGO_INITDB_ROOT_PASSWORD=rootTest\r\n   MONGO_INITDB_DATABASE=drawing-captcha\r\n\r\n   # For local development\r\n   # MONGO_URI=\"mongodb://localhost:7500/drawing-captcha\"\r\n   # For deployment\r\n   MONGO_URI=\"mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@dc_mongo:27017/${MONGO_INITDB_DATABASE}?authSource=admin\"\r\n\r\n   # Enter here your domain where you want to host your Drawing Captcha. Important: enter it with http/https\r\n   SERVER_DOMAIN=\"https://yourdomain.com\"\r\n\r\n   # Port of your server\r\n   PORT=9091\r\n\r\n   # This will automatically be reset:\r\n   REGISTER_KEY=\"\u0026\u0026+%\u0026%ajkhdjhWIIWNw7\u003edajh2gg\"\r\n\r\n   # Change this email!!\r\n   DC_ADMIN_EMAIL=\"your@mail.com\"\r\n\r\n   # Change this password!!!\r\n   DC_ADMIN_PASSWORD=\"admin\"\r\n\r\n   # Defines how long a solved Session can be called back to verify\r\n   JWT_TOKEN_EXPIRATION=5\r\n\r\n   #Email settings\r\n   EMAIL_SERVICE= #smtpAuth || postmark \r\n   EMAIL_FROM=noreply@drawing-captcha.com\r\n   \r\n   SMTPAUTH_EMAIL_HOST=\r\n   SMTPAUTH_EMAIL_PORT=\r\n   SMTPAUTH_EMAIL_USER=\r\n   SMTPAUTH_EMAIL_PASS=\r\n   \r\n   POSTMARK_SERVER_CLIENT=\r\n   POSTMARK_MESSAGE_STREAM=\r\n\r\n   #OAUTH2 Setup \u0026 Login\r\n   # You can set this to false if you want to use the basic login with username and password (and for example just use oAuth2 for registration / logins) this is per default set to true\r\n   BASIC_AUTH=true\r\n   # For Google OAuth2\r\n   GOOGLE_CLIENT_ID=\r\n   GOOGLE_CLIENT_SECRET=\r\n   # For Microsoft OAuth2\r\n   MICROSOFT_CLIENT_ID=\r\n   MICROSOFT_CLIENT_SECRET=\r\n   #if none is given the default is \"common\"\r\n   MICROSOFT_TENANT_ID=\r\n   #OpenTelemetry HTTPS endpoint\r\n   OTEL_EXPORTER_OTLP_ENDPOINT=\"http://127.0.0.1:4318/v1/logs\"\r\n\r\n   ```\r\n\r\nFor more information on the environment variables, refer to the [official documentation](https://docs.drawing-captcha.com/documentation/#section-environment).\r\n\r\nPlease note to change these variables:\r\n- MONGO_INITDB_ROOT_USERNAME\r\n- MONGO_INITDB_ROOT_PASSWORD\r\n- SERVER_DOMAIN (if you want to host it somewhere)\r\n- DC_ADMIN_EMAIL\r\n- DC_ADMIN_PASSWORD\r\n\r\n#### Final steps:\r\n```sh\r\ndocker-compose up --build -d\r\n```\r\n\r\n\u003cp\u003eIf you haven't changed the default port, it should be working on http://localhost:9091.\u003c/p\u003e\r\n\r\n### Docker Compose Image Setup\r\n```yml\r\nversion: \"3.8\"\r\nservices:\r\n  dc_node:\r\n    container_name: dc_node\r\n    image: williamspesic/drawing-captcha-app:latest\r\n    ports:\r\n      - 9091:9091\r\n    networks:\r\n      - dc_network\r\n      - nginx_default\r\n    depends_on:\r\n      - dc_mongo\r\n    restart: always\r\n    environment:\r\n      MONGO_URI: ${MONGO_URI}\r\n      PORT: ${PORT}\r\n      SERVER_DOMAIN: ${SERVER_DOMAIN}\r\n      REGISTER_KEY: ${REGISTER_KEY}\r\n      DC_ADMIN_EMAIL: ${DC_ADMIN_EMAIL}\r\n      DC_ADMIN_PASSWORD: ${DC_ADMIN_PASSWORD}\r\n      EMAIL_SERVICE: ${EMAIL_SERVICE}\r\n      EMAIL_FROM: ${EMAIL_FROM}\r\n      SMTPAUTH_EMAIL_HOST: ${SMTPAUTH_EMAIL_HOST}\r\n      SMTPAUTH_EMAIL_PORT: ${SMTPAUTH_EMAIL_PORT}\r\n      SMTPAUTH_EMAIL_USER: ${SMTPAUTH_EMAIL_USER}\r\n      SMTPAUTH_EMAIL_PASS: ${SMTPAUTH_EMAIL_PASS}\r\n      POSTMARK_SERVER_CLIENT: ${POSTMARK_SERVER_CLIENT}\r\n      POSTMARK_MESSAGE_STREAM: ${POSTMARK_MESSAGE_STREAM}\r\n      BASIC_AUTH: ${BASIC_AUTH}\r\n      GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}\r\n      GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}\r\n      MICROSOFT_CLIENT_ID: ${MICROSOFT_CLIENT_ID}\r\n      MICROSOFT_CLIENT_SECRET: ${MICROSOFT_CLIENT_SECRET}\r\n\r\n  dc_mongo:\r\n    container_name: dc_mongo\r\n    image: mongo:latest\r\n    expose:\r\n      - \"27017\"\r\n    volumes:\r\n      - drawing-captcha:/data/db\r\n    networks:\r\n      - dc_network\r\n    restart: always\r\n    environment:\r\n      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}\r\n      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}\r\n      MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}\r\n\r\nnetworks:\r\n  dc_network:\r\n  nginx_default:\r\n    external: true\r\n\r\nvolumes:\r\n  drawing-captcha:\r\n```\r\n\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- USAGE EXAMPLES --\u003e\r\n## Usage\r\nImplementation step by step: https://github.com/Drawing-Captcha/Drawing-Captcha-Frontend/blob/main/README.md#implementation-guide\r\n\r\nDemo Site: https://demo.drawing-captcha.com\r\n\r\n_For more examples, please refer to the [Documentation](https://docs.drawing-captcha.com)_\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\u003c!-- CONTRIBUTING --\u003e\r\n## Contributing\r\n\r\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\r\n\r\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\r\nDon't forget to give the project a star! Thanks again!\r\n\r\n1. Fork the Project\r\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\r\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\r\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\r\n5. Open a Pull Request\r\n\r\n### Top contributors:\r\n\r\n\u003ca href=\"https://github.com/Drawing-Captcha/Drawing-Captcha-APP/graphs/contributors\"\u003e\r\n  \u003cimg src=\"https://contrib.rocks/image?repo=Drawing-Captcha/Drawing-Captcha-APP\" alt=\"contrib.rocks image\" /\u003e\r\n\u003c/a\u003e\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See [MIT License](https://opensource.org/licenses/MIT) for more information.\r\n\r\n## Contact\r\n\r\ninfo@wpesic.dev\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## Usefull Links\r\n* [Drawing Captcha Documentation Hub](https://docs.drawing-captcha.com/documentation/)\r\n* [Drawing Captcha for Umbraco](https://marketplace.umbraco.com/package/drawingcaptcha)\r\n* [Drawing Captcha NPM Package Frontend Integration](https://www.npmjs.com/package/@drawing-captcha/drawing-captcha-frontend?activeTab=readme)\r\n\r\n\r\n## Acknowledgments\r\n\r\n* [Img Shields](https://shields.io)\r\n* [ReadMe Template](https://github.com/othneildrew/Best-README-Template)\r\n\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## 💖 Like my work?\r\nBuy me a coffee: https://www.buymeacoffee.com/williamspe8\r\n\r\n[contributors-shield]: https://img.shields.io/github/contributors/Drawing-Captcha/Drawing-Captcha-APP.svg?style=for-the-badge\r\n[contributors-url]: https://github.com/Drawing-Captcha/Drawing-Captcha-APP/graphs/contributors\r\n[forks-shield]: https://img.shields.io/github/forks/Drawing-Captcha/Drawing-Captcha-APP.svg?style=for-the-badge\r\n[forks-url]: https://github.com/Drawing-Captcha/Drawing-Captcha-APP/network/members\r\n[stars-shield]: https://img.shields.io/github/stars/Drawing-Captcha/Drawing-Captcha-APP.svg?style=for-the-badge\r\n[stars-url]: https://github.com/Drawing-Captcha/Drawing-Captcha-APP/stargazers\r\n[issues-shield]: https://img.shields.io/github/issues/Drawing-Captcha/Drawing-Captcha-APP.svg?style=for-the-badge\r\n[issues-url]: https://github.com/Drawing-Captcha/Drawing-Captcha-APP/issues\r\n[license-shield]: https://img.shields.io/github/license/Drawing-Captcha/Drawing-Captcha-APP.svg?style=for-the-badge\r\n[license-url]: https://github.com/Drawing-Captcha/Drawing-Captcha-APP/blob/master/LICENSE\r\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\r\n[linkedin-url]: https://linkedin.com/in/wpesicdev\r\n[product-screenshot]: https://github.com/user-attachments/assets/cc1ef188-2cd6-4d73-94fe-8ac191a52926\r\n[Request-Flow-Drawing-Captcha]: ./public/images/request-flow.png\r\n[MongoDB]: https://img.shields.io/badge/-MongoDB-13aa52?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\r\n[NodeJS]: https://img.shields.io/badge/node.js-339933?style=for-the-badge\u0026logo=Node.js\u0026logoColor=white\r\n[ExpressJS]: https://img.shields.io/badge/express.js-000000?style=for-the-badge\u0026logo=express\u0026logoColor=white\r\n[EJS]: https://img.shields.io/badge/-EJS-B4CA65?logo=ejs\u0026logoColor=white\u0026style=for-the-badge\r\n[JS]: https://shields.io/badge/JavaScript-F7DF1E?logo=JavaScript\u0026logoColor=000\u0026style=for-the-badge\r\n[Docker]: https://img.shields.io/badge/Docker-2496ED?logo=docker\u0026logoColor=white\u0026style=for-the-badge\r\n[CSS]: https://img.shields.io/badge/CSS-1572B6?logo=CSS\u0026logoColor=white\u0026style=for-the-badge\r\n[HTML]: https://img.shields.io/badge/HTML-E34F26?logo=HTML5\u0026logoColor=white\u0026style=for-the-badge\r\n","funding_links":["https://www.buymeacoffee.com/williamspe8"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawing-captcha%2Fdrawing-captcha-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrawing-captcha%2Fdrawing-captcha-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawing-captcha%2Fdrawing-captcha-app/lists"}