{"id":15147557,"url":"https://github.com/yaroslavchuiko/threatchecker","last_synced_at":"2026-02-09T12:07:56.311Z","repository":{"id":216113089,"uuid":"740482596","full_name":"YaroslavChuiko/threatChecker","owner":"YaroslavChuiko","description":"ThreatChecker is a free website security scanner","archived":false,"fork":false,"pushed_at":"2024-09-09T10:58:55.000Z","size":263,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T04:51:14.599Z","etag":null,"topics":["nextauth","nextjs","prisma","react","reactquery","t3-stack","tailwindcss","trpc","typescript","vercel","zod"],"latest_commit_sha":null,"homepage":"https://threat-checker.vercel.app","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/YaroslavChuiko.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}},"created_at":"2024-01-08T12:44:25.000Z","updated_at":"2025-03-05T22:47:26.000Z","dependencies_parsed_at":"2024-06-03T20:59:08.047Z","dependency_job_id":"56fb5e49-1c62-49e5-9b64-5d8ca9cdceec","html_url":"https://github.com/YaroslavChuiko/threatChecker","commit_stats":null,"previous_names":["yaroslavchuiko/threatchecker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YaroslavChuiko/threatChecker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FthreatChecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FthreatChecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FthreatChecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FthreatChecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YaroslavChuiko","download_url":"https://codeload.github.com/YaroslavChuiko/threatChecker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FthreatChecker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269734149,"owners_count":24466554,"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-08-10T02:00:08.965Z","response_time":71,"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":["nextauth","nextjs","prisma","react","reactquery","t3-stack","tailwindcss","trpc","typescript","vercel","zod"],"created_at":"2024-09-26T12:42:12.566Z","updated_at":"2026-02-09T12:07:56.206Z","avatar_url":"https://github.com/YaroslavChuiko.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003chead\u003e\n    \u003cdiv align=\"center\"\u003e\n        \u003ch1 align=\"center\"\u003eThreatChecker\u003c/h1\u003e\n    \u003c/div\u003e\n\u003c/head\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"nextdotjs\" src=\"https://img.shields.io/badge/-next.js-000000.svg?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/-TypeScript-3178C6.svg?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"react\" src=\"https://img.shields.io/badge/-React-61DAFB.svg?style=for-the-badge\u0026logo=react\u0026logoColor=black\" /\u003e\n  \u003cimg alt=\"trpc\" src=\"https://img.shields.io/badge/-trpc-2596BE.svg?style=for-the-badge\u0026logo=trpc\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"zod\" src=\"https://img.shields.io/badge/-zod-3E67B1.svg?style=for-the-badge\u0026logo=zod\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"reactquery\" src=\"https://img.shields.io/badge/-react%20query-FF4154.svg?style=for-the-badge\u0026logo=reactquery\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"nextauth\" src=\"https://img.shields.io/badge/-nextauth.js-000000.svg?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"tailwindcss\" src=\"https://img.shields.io/badge/-tailwind%20CSS-4285F4.svg?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"chartdotjs\" src=\"https://img.shields.io/badge/-chart.js-FF6384.svg?style=for-the-badge\u0026logo=chartdotjs\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"Prisma\" src=\"https://img.shields.io/badge/-Prisma-2D3748.svg?style=for-the-badge\u0026logo=prisma\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"postgresql\" src=\"https://img.shields.io/badge/-postgresql-4169E1.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"virustotal\" src=\"https://img.shields.io/badge/-virustotal%20API-394EFF.svg?style=for-the-badge\u0026logo=virustotal\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"vercel\" src=\"https://img.shields.io/badge/-vercel-000000.svg?style=for-the-badge\u0026logo=vercel\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"pnpm\" src=\"https://img.shields.io/badge/-pnpm-F69220.svg?style=for-the-badge\u0026logo=pnpm\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"pwa\" src=\"https://img.shields.io/badge/-pwa-5A0FC8.svg?style=for-the-badge\u0026logo=pwa\u0026logoColor=white\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003eThreatChecker is a free website security scanner. Remote scanners have limited access and results are not guaranteed.\u003c/h3\u003e    \n  \u003cp\u003e\u003ca href=\"https://threat-checker.vercel.app/\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## About\n\nThis is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`.\n\nA chat application, written in Next.js, with the use of tRPC, NextAuth.js, Tailwind CSS, Prisma.\n\n## Setup \u0026 Run\n\nPrior to setup, create an `.env` file based on the `.env.example`.\nThen proceed:\n\n1. `pnpm install`\n2. Create PostgreSQL database and add [connection url](https://www.prisma.io/docs/reference/database-reference/connection-urls#env) as value for `DATABASE_URL`\n3. `npx prisma db push`\n4. Generate a secret value for `NEXTAUTH_SECRET`. You can generate a new secret on the command line with: `openssl rand -base64 32`\n5. Create a [Google OAuth App](https://console.developers.google.com/apis/credentials) and add values for `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET`\n6. Create a [Discord OAuth App](https://create.t3.gg/en/usage/next-auth#setting-up-the-default-discordprovider) and add values for `DISCORD_CLIENT_ID` and `DISCORD_CLIENT_SECRET`\n7. Create a [GitHub OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app). Make sure to set Authorization callback URL to http://localhost:3000/api/auth/callback/github. After that add values for `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET`\n8. Create [Mailtrap account](https://mailtrap.io/) and add values for `EMAIL_SERVER_USER`, `EMAIL_SERVER_PASSWORD`, `EMAIL_SERVER_HOST`, `EMAIL_SERVER_PORT`, `EMAIL_FROM`\n9. Create [VirusTotal account](https://www.virustotal.com/) and add values for `VIRUS_TOTAL_API_KEY`\n10. `npx prisma db seed`\n11. `pnpm run dev`\n\n\u003cbr/\u003e\n\n## Deployment diagram\n\n![deployment-diagram](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/9deea909-e62f-4c40-88cd-c3e23400b0b4)\n\n## Entity-relationship diagram\n\n![Entity-relationship diagram](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/a7a9e145-0e2e-46a3-8d80-c3fcbc902d16)\n\n## Snapshots\n\n### Sign in\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/3e911f80-3dbe-4a96-8737-d9ff7f009d72)\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/5129130b-5411-42c6-a6b6-6ce338ed550e)\n\n### Home\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/247d1905-fa57-468b-97e1-b868eddc5565)\n\n### Results\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/89033d5f-cb90-4f4e-9ecd-4beb9808ba31)\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/c61913bc-e85f-44cd-8868-45401886e1f3)\n\n### Statistics\n\n![image](https://github.com/YaroslavChuiko/threatChecker/assets/32570823/8d6fc59b-01e2-44c2-91f1-b1742e3d332c)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaroslavchuiko%2Fthreatchecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaroslavchuiko%2Fthreatchecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaroslavchuiko%2Fthreatchecker/lists"}