Project Sentinel is a full-stack React + Vite + TailwindCSS application designed to monitor, analyze, and visualize disinformation campaigns. It includes AI-powered dashboards, real-time updates via Socket.IO, and LLM-assisted analysis.
- Tech Stack
- Features
- Installation
- Running Locally
- Available Scripts
- Common Issues & Fixes
- Contributing
- License
- Frontend Framework: React.js (with Vite for fast builds)
- Styling:
- Tailwind CSS (utility-first)
- shadcn/ui for accessible UI components
- Framer Motion for smooth animations
- State Management:
- Redux Toolkit (for complex data flows)
- React Query (for server data caching)
- Data Visualization:
- Real-Time Updates: Socket.IO
- Routing: React Router v7
- 🔐 Authentication Pages: Login & Signup flows
- 📊 Dashboard: Active campaigns, severity charts, real-time alerts
- 🤖 AI Assistant: Chat interface with an LLM for analyst queries
- 📂 Campaigns Archive: Searchable, filterable list of past disinformation campaigns
- 📈 Analytics & Trends: KPI flash cards, platform breakdown, geo-impact, AI detection summary
- ⚡ Real-Time Alerts: Streamed via Socket.IO
- 🎨 Responsive UI: Modern and consistent across devices
git clone https://github.com/CrazyBong/Sentinel/
cd project-sentinelMake sure you have Node.js >= 18 and npm >= 9 installed. Then run:
npm installnpm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -pnpm install @radix-ui/react-icons class-variance-authority clsx tailwind-variants
npm install framer-motion recharts socket.io-clientStart the development server:
npm run devOpen in browser:
http://localhost:5173
Build for production:
npm run buildPreview production build:
npm run previewCan't resolve './tailwind.config.js'
✅ Ensure tailwind.config.js is in the project root, not inside src/.
Failed to resolve import "@/pages/LoginPage"
✅ Fix by editing vite.config.js:
resolve: {
alias: { "@": path.resolve(__dirname, "./src") }
}does not provide an export named 'RedditLogo'
✅ Replace Lucide with custom inline SVG components (XIcon, RedditIcon).
- Check
App.jsxfor invalid syntax (often leftover Git conflict markers like<<<<<<< HEAD). - Make sure all routes are wrapped correctly with
<Routes>and<Route>.
If not using animations, remove:
import { motion } from "framer-motion"to avoid linter errors.
- Fork this repo
- Create a new branch (
feature/new-component) - Commit changes (
git commit -m "Added new feature") - Push branch (
git push origin feature/new-component) - Create a Pull Request
This project is licensed under the Vortex team — free to use and modify with attribution.