{"id":30176247,"url":"https://github.com/zerodiscord/sentinal-ai","last_synced_at":"2025-08-12T02:44:35.546Z","repository":{"id":302634894,"uuid":"1012451232","full_name":"ZeroDiscord/Sentinal-AI","owner":"ZeroDiscord","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-03T11:40:41.000Z","size":146,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-03T12:38:15.727Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/ZeroDiscord.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-07-02T10:58:07.000Z","updated_at":"2025-07-03T11:40:45.000Z","dependencies_parsed_at":"2025-07-03T12:50:24.246Z","dependency_job_id":null,"html_url":"https://github.com/ZeroDiscord/Sentinal-AI","commit_stats":null,"previous_names":["zerodiscord/sentinal-ai"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ZeroDiscord/Sentinal-AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroDiscord%2FSentinal-AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroDiscord%2FSentinal-AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroDiscord%2FSentinal-AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroDiscord%2FSentinal-AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZeroDiscord","download_url":"https://codeload.github.com/ZeroDiscord/Sentinal-AI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeroDiscord%2FSentinal-AI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269991428,"owners_count":24509009,"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-12T02:00:09.011Z","response_time":80,"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":[],"created_at":"2025-08-12T02:44:31.742Z","updated_at":"2025-08-12T02:44:35.515Z","avatar_url":"https://github.com/ZeroDiscord.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SentinelAI\n\n[![Live Demo](https://img.shields.io/badge/Live%20Demo-Online-brightgreen)](https://sentinal-ai-nine.vercel.app/)\n\n**Live Demo:** [https://sentinal-ai-nine.vercel.app/](https://sentinal-ai-nine.vercel.app/)\n\n\u003ch1 align=\"center\" style=\"font-size:2.5rem; font-weight:800; letter-spacing:-1px; margin-bottom:0.5em; font-family:'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, 'sans-serif';\"\u003e\n  \u003cimg src=\"public/favicon.svg\" alt=\"SentinelAI Logo\" style=\"height:2.2em; vertical-align:middle; margin-right:0.5em;\" /\u003e\n  \u003cspan\u003e\n    SentinelAI Incident Reporting\n  \u003c/span\u003e\n\u003c/h1\u003e\n\u003cdiv style=\"max-width: 900px; margin: 2em auto; border-radius: 1.5em; box-shadow: 0 8px 32px 0 rgba(31,38,135,0.18); padding: 2.5em 2em; font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif; border: 1px solid rgba(99,102,241,0.12);\"\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"font-size: 2rem; font-weight: 800; margin-bottom: 0.5em; letter-spacing: -1px;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#128161; Why\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cp style=\"font-size: 1.1em; color: #94a3b8;\"\u003e\n      For Google Developer Groups (GDG) On-Campus organiser hiring, I had to devise a technical solution to solve an issue the community or college was struggling with. With the use of Google technologies and the proper inspiration, I was able to do that.\n    \u003c/p\u003e\n  \u003c/section\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"font-size: 1.7rem; font-weight: 700; margin-bottom: 0.4em;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#128187; Overview\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cp style=\"font-size: 1.1em; color: #cbd5e1;\"\u003e\n      \u003cb\u003eSentinelAI\u003c/b\u003e is an advanced \u003cspan style=\"color:#60a5fa;\"\u003eAI-driven\u003c/span\u003e incident management software for schools and campuses. Using state-of-the-art AI (Google Gemini) to process, classify, and escalate incident reports, it provides real-time dashboards, role-based security, and simple user management.\n    \u003c/p\u003e\n  \u003c/section\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"font-size: 1.7rem; font-weight: 700; margin-bottom: 0.4em;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#128204; Motivation\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cp style=\"font-size: 1.1em; color: #94a3b8;\"\u003e\n      Besides being a coder and a tech enthusiast, I am also an extremely engaged member of the University's official Student Discipline Committee, DC. In my committee work, one glaring lack that I have noticed is the lack of one, intelligent platform for reporting and managing incidents in the campus.\n    \u003c/p\u003e\n    \u003cdiv style=\"border-radius: 1em; padding: 1em 1.5em; margin: 1.2em 0;\"\u003e\n      \u003cp style=\"margin-bottom: 0.5em; color: #facc15; font-weight: 600;\"\u003eCurrent students are tasked with physically forwarding an email to the Chief Proctor Office (CPO) for reporting emergency and disciplinary issues. The system is suboptimal and flawed:\u003c/p\u003e\n      \u003cul style=\"color: #f1f5f9; margin-left: 1.2em; list-style: disc;\"\u003e\n        \u003cli\u003eEmails are unstructured and hard to prioritize.\u003c/li\u003e\n        \u003cli\u003eThey tend to lack well-organized, actionable information.\u003c/li\u003e\n        \u003cli\u003eThere is no protocol or authentication.\u003c/li\u003e\n        \u003cli\u003eNo assurance of follow-up or visibility to the concerned authority.\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cp style=\"margin-bottom: 0.5em; color: #94a3b8;\"\u003eThrough the \u003cb\u003eSentinelAI\u003c/b\u003e platform, we are able to:\u003c/p\u003e\n    \u003cul style=\"color: #60a5fa; margin-left: 1.2em; list-style: square;\"\u003e\n      \u003cli\u003ePermit students to report incidents in text reviewing them with Gemini AI.\u003c/li\u003e\n      \u003cli\u003eAuto-extract such vital information like category (i.e., harassment, ragging, theft), severity, time, and location.\u003c/li\u003e\n      \u003cli\u003eReal-time reporting of incidents to the concerned authority by role and access (e.g., School Proctors, Wardens, Secretaries, or Chief Proctor Office).\u003c/li\u003e\n      \u003cli\u003eOffer a real-time dashboard to proctorial and security officials, displaying active incidents, and charts.\u003c/li\u003e\n      \u003cli\u003eOffer anonymous reporting with privacy and escalation capabilities.\u003c/li\u003e\n      \u003cli\u003eReplace unstructured email-based reporting with structured, AI-tagged reports that are traceable, searchable, and prioritizable.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003cp style=\"margin-top: 1em; color: #cbd5e1;\"\u003e\n      With the incorporation of modern front-end design \u003cspan style=\"color:#6366f1;\"\u003evibecoded by Google's IDX\u003c/span\u003e powered by Google's cloud and AI stack, combined with real-world domain know-how in university discipline processes, SentinelAI demonstrates a scalable, high-impact solution that is not a prototype and is close to production-grade maturity.\n    \u003c/p\u003e\n  \u003c/section\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"font-size: 1.7rem; font-weight: 700; margin-bottom: 0.4em;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#9889; Core Features\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cul style=\"margin-left: 1.2em; color: #f1f5f9; font-size: 1.08em; line-height: 1.7;\"\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eRole-Based Authentication:\u003c/b\u003e Safe login and role management (e.g., CPO, school proctor, warden, student).\u003c/li\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eIncident Report:\u003c/b\u003e Incident report information (description, where, optional media uploads).\u003c/li\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eAI Incident Analysis:\u003c/b\u003e Summarizes and annotates incidents, classifies them, and estimates their severity using Gemini API and also provides escalation recommendations.\u003c/li\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eIncident Dashboard:\u003c/b\u003e Real-time incident dashboard to view, filter, and manage incidents by role, school, and others.\u003c/li\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eReal-time Notifications:\u003c/b\u003e Notifications for critical events.\u003c/li\u003e\n      \u003cli\u003e\u003cb style=\"color:#60a5fa;\"\u003eUser Management:\u003c/b\u003e Management of user profiles to view and update their information.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/section\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"font-size: 1.7rem; font-weight: 700; margin-bottom: 0.4em;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#128187; Tech Stack\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cul style=\"margin-left: 1.2em; color: #cbd5e1; font-size: 1.08em; line-height: 1.7;\"\u003e\n      \u003cli\u003e\u003cb\u003eFrontend:\u003c/b\u003e Next.js (React), Tailwind CSS, Radix UI, Lucide Icons\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eBackend:\u003c/b\u003e Next.js API routes, Firebase (Firestore, Auth), Gemini API (Google GenAI)\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eAI Integration:\u003c/b\u003e Centralized in \u003ccode style=\"background:rgba(99,102,241,0.12); color:#60a5fa; border-radius:0.3em; padding:0.1em 0.4em;\"\u003esrc/ai/gemini.js\u003c/code\u003e and flows\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eAuthentication:\u003c/b\u003e Firebase Auth (Google, email/password, anonymous)\u003c/li\u003e\n      \u003cli\u003e\u003cb\u003eStyling:\u003c/b\u003e Glassmorphism, Inter/Google Sans fonts, and a custom color palette:\u003c/li\u003e\n      \u003cul style=\"margin-left: 1.5em; color: #94a3b8; font-size: 0.98em;\"\u003e\n        \u003cli\u003e\u003cspan style=\"color:#60a5fa;\"\u003e\u003cb\u003ePrimary Blue:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#60a5fa\u003c/code\u003e (used for highlights, buttons, and icons)\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#6366f1;\"\u003e\u003cb\u003eAccent Indigo:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#6366f1\u003c/code\u003e (used for gradients and accent elements)\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#0f172a;\"\u003e\u003cb\u003eBackground Slate:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#0f172a\u003c/code\u003e and \u003ccode\u003e#1e293b\u003c/code\u003e (main backgrounds and cards)\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#fff;\"\u003e\u003cb\u003eGlass Card Overlay:\u003c/b\u003e\u003c/span\u003e semi-transparent white (\u003ccode\u003ergba(255,255,255,0.08)\u003c/code\u003e) for glassmorphism effect\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#f1f5f9;\"\u003e\u003cb\u003eText Foreground:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#f1f5f9\u003c/code\u003e (main text), \u003ccode\u003e#94a3b8\u003c/code\u003e (muted text)\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#22c55e;\"\u003e\u003cb\u003eSuccess/Resolved:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#22c55e\u003c/code\u003e\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#facc15;\"\u003e\u003cb\u003eWarning:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#facc15\u003c/code\u003e\u003c/li\u003e\n        \u003cli\u003e\u003cspan style=\"color:#ef4444;\"\u003e\u003cb\u003eDestructive/Error:\u003c/b\u003e\u003c/span\u003e \u003ccode\u003e#ef4444\u003c/code\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/ul\u003e\n  \u003c/section\u003e\n\n  \u003csection style=\"margin-bottom: 2.5em;\"\u003e\n    \u003ch2 style=\"color: #60a5fa; font-size: 1.7rem; font-weight: 700; margin-bottom: 0.4em;\"\u003e\n      \u003cspan style=\"vertical-align: middle;\"\u003e\u0026#128640; Getting Started\u003c/span\u003e\n    \u003c/h2\u003e\n    \u003cdiv style=\"background: rgba(99,102,241,0.08); border-radius: 1em; padding: 1em 1.5em; margin-bottom: 1.2em;\"\u003e\n      \u003ch3 style=\"color: #22c55e; font-size: 1.1em; font-weight: 700; margin-bottom: 0.5em;\"\u003ePrerequisites\u003c/h3\u003e\n      \u003cul style=\"color: #f1f5f9; margin-left: 1.2em;\"\u003e\n        \u003cli\u003eNode.js 20+\u003c/li\u003e\n        \u003cli\u003eFirebase project (Firestore, Auth enabled)\u003c/li\u003e\n        \u003cli\u003eGemini API key (Google GenAI)\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003ch3 style=\"color: #6366f1; font-size: 1.1em; font-weight: 700; margin-bottom: 0.5em;\"\u003eInstallation\u003c/h3\u003e\n    \u003col style=\"color: #cbd5e1; margin-left: 1.2em; font-size: 1.05em;\"\u003e\n      \u003cli style=\"margin-bottom: 0.7em;\"\u003e\n        \u003cb\u003eClone the repository:\u003c/b\u003e\n        \u003cpre style=\"background: #1e293b; color: #60a5fa; border-radius: 0.5em; padding: 0.7em 1em; margin: 0.5em 0; font-size: 1em; overflow-x: auto;\"\u003egit clone https://github.com/ZeroDiscord/Sentinal-AI\ncd sentinelai\u003c/pre\u003e\n      \u003c/li\u003e\n      \u003cli style=\"margin-bottom: 0.7em;\"\u003e\n        \u003cb\u003eInstall dependencies:\u003c/b\u003e\n        \u003cpre style=\"background: #1e293b; color: #60a5fa; border-radius: 0.5em; padding: 0.7em 1em; margin: 0.5em 0; font-size: 1em; overflow-x: auto;\"\u003enpm install\u003c/pre\u003e\n      \u003c/li\u003e\n      \u003cli style=\"margin-bottom: 0.7em;\"\u003e\n        \u003cb\u003eSet up environment variables:\u003c/b\u003e\n        \u003cspan style=\"color:#94a3b8;\"\u003e(See \u003ccode\u003e.env.example\u003c/code\u003e for required keys)\u003c/span\u003e\n      \u003c/li\u003e\n      \u003cli style=\"margin-bottom: 0.7em;\"\u003e\n        \u003cb\u003eConfigure Firebase:\u003c/b\u003e\n        \u003cul style=\"margin-left: 1.2em;\"\u003e\n          \u003cli\u003eCreate a Firebase project at \u003ca href=\"https://console.firebase.google.com/\" style=\"color:#60a5fa;\"\u003econsole.firebase.google.com\u003c/a\u003e.\u003c/li\u003e\n          \u003cli\u003eEnable \u003cb\u003eFirestore\u003c/b\u003e and \u003cb\u003eAuthentication\u003c/b\u003e (Google, email/password, and anonymous sign-in).\u003c/li\u003e\n          \u003cli\u003eIn the Firebase console, add a web app and copy the config into your \u003ccode\u003e.env.local\u003c/code\u003e file.\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli style=\"margin-bottom: 0.7em;\"\u003e\n        \u003cb\u003eRun the development server:\u003c/b\u003e\n        \u003cpre style=\"background: #1e293b; color: #60a5fa; border-radius: 0.5em; padding: 0.7em 1em; margin: 0.5em 0; font-size: 1em; overflow-x: auto;\"\u003enpm run dev\u003c/pre\u003e\n        \u003cspan style=\"color:#94a3b8;\"\u003eThe app will be available at \u003ca href=\"http://localhost:3000\" style=\"color:#60a5fa;\"\u003ehttp://localhost:3000\u003c/a\u003e.\u003c/span\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n        \u003cb\u003e(Optional) Deploy:\u003c/b\u003e\n        \u003cul style=\"margin-left: 1.2em;\"\u003e\n          \u003cli\u003eYou can deploy to your preferred platform.\u003c/li\u003e\n          \u003cli\u003eMake sure to set the same environment variables in your deployment settings.\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n    \u003c/ol\u003e\n  \u003c/section\u003e\n\n  \u003chr style=\"border: none; border-top: 1.5px solid #6366f1; margin: 2.5em 0 1.5em 0;\"\u003e\n\n  \u003cdiv style=\"text-align: center; color: #94a3b8; font-size: 1.08em;\"\u003e\n    \u003cb\u003eFor more details, see \u003ca href=\"src/ai/gemini.js\" style=\"color:#60a5fa; text-decoration: underline;\"\u003esrc/ai/gemini.js\u003c/a\u003e for AI integration setup.\u003c/b\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzerodiscord%2Fsentinal-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzerodiscord%2Fsentinal-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzerodiscord%2Fsentinal-ai/lists"}