https://github.com/veriteknik/verisentinel
Open-source PCI DSS Compliance and Infrastructure Monitoring Tool
https://github.com/veriteknik/verisentinel
Last synced: about 1 month ago
JSON representation
Open-source PCI DSS Compliance and Infrastructure Monitoring Tool
- Host: GitHub
- URL: https://github.com/veriteknik/verisentinel
- Owner: VeriTeknik
- License: mit
- Created: 2025-03-18T02:20:08.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-03-18T12:06:38.000Z (7 months ago)
- Last Synced: 2025-03-18T12:24:03.479Z (7 months ago)
- Language: TypeScript
- Size: 69.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Verisentinel
Verisentinel is a comprehensive compliance and infrastructure monitoring platform designed for small to medium organizations, offering advanced network management capabilities with intelligent visualization and real-time insights.

## Key Components
- Modern React frontend with dynamic and interactive network visualization
- Drizzle ORM and PostgreSQL Database for scalable data management
- Role-based access control for secure infrastructure monitoring
- Advanced device status tracking with hierarchical network mapping
- Enhanced security and compliance tracking mechanisms
- Comprehensive change management system with multi-stage approval workflows## Features
- **Dashboard**: Get a comprehensive overview of your organization's infrastructure health and compliance status
- **Network Topology**: Visualize your network hierarchy with interactive diagrams
- **Hardware Inventory**: Track all your hardware assets and their respective statuses
- **Compliance Management**: Monitor compliance with various frameworks including PCI-DSS
- **Change Management**: Streamlined approval process with role-based workflows (RACI model)
- **Task Management**: Organize and track tasks with Kanban board visualization
- **User Management**: Administer user roles and permissions## Getting Started
### Prerequisites
- Node.js (v18+)
- npm or yarn
- PostgreSQL database### Installation
1. **Clone the repository**
```bash
git clone https://github.com/your-organization/verisentinel.git
cd verisentinel
```2. **Install dependencies**
```bash
npm install
```3. **Database Setup**
Create a `.env` file in the root directory with the following content:
```
DATABASE_URL=postgresql://username:password@localhost:5432/verisentinel
```Replace `username`, `password` with your PostgreSQL credentials.
4. **Set up the database**
First, run the setup script to create the initial tables:
```bash
tsx scripts/setup-db.ts
```Then, update the schema with the latest fields:
```bash
tsx scripts/update-db-schema.ts
```Finally, push any schema changes to the database:
```bash
npm run db:push
```5. **Start the application**
```bash
npm run dev
```The application will be available at `http://localhost:5000`
### Default User Credentials
The system comes with pre-configured default users:
- **Administrator**
- Username: `admin`
- Password: `password123`
- Role: `admin`- **Security Officer**
- Username: `ckaraca`
- Password: `password123`
- Role: `security`- **Network Engineer**
- Username: `engineer`
- Password: `password123`
- Role: `engineer`## Project Structure
- `/client`: Frontend React application
- `/src/components`: Reusable UI components
- `/src/pages`: Application pages
- `/src/hooks`: Custom React hooks
- `/src/lib`: Utility functions- `/server`: Backend Express server
- `/routes.ts`: API endpoints
- `/storage.ts`: Data storage interfaces
- `/auth.ts`: Authentication logic- `/shared`: Code shared between client and server
- `/schema.ts`: Database schema and type definitions## Development Guidelines
### Database Management
When modifying the database setup:
1. Add the necessary Drizzle models and relations to `shared/schema.ts`
2. Update `server/storage.ts` to reflect your changes
3. Run `npm run db:push` to apply the changes to your database### Adding New Features
1. Update the shared schema if needed
2. Implement backend routes in `server/routes.ts`
3. Create UI components in `client/src/components`
4. Add pages in `client/src/pages`
5. Update navigation in `client/src/components/layout/sidebar.tsx`## Technical Stack
- **Frontend**: React, TanStack Query, TailwindCSS, shadcn/ui
- **Backend**: Express.js, TypeScript
- **Database**: PostgreSQL, Drizzle ORM
- **Authentication**: Passport.js, express-session## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgments
- All technologies and libraries used in this project
- Contributors to this project## Notification System
Verisentinel includes a comprehensive notification system for real-time alerts and updates. The system supports multiple notification types and delivery methods to ensure timely communication of important events.
### Notification Types
1. **System Notifications**
- Audit events
- System status changes
- Security alerts
- Compliance updates2. **User Notifications**
- Task assignments
- Change request updates
- Approval requests
- Deadline reminders3. **Device Notifications**
- Status changes
- Maintenance alerts
- Security incidents
- Performance warnings### Delivery Methods
- In-app notifications (real-time via WebSocket)
- Email notifications (configurable)
- SMS alerts (for critical notifications)
- Webhook integrations (for external systems)### Configuration
Notification preferences can be configured at both system and user levels:
```env
# .env configuration
NOTIFICATION_WEBSOCKET_PORT=8080
NOTIFICATION_EMAIL_ENABLED=true
NOTIFICATION_SMS_ENABLED=true
NOTIFICATION_WEBHOOK_URL=https://your-webhook-url.com
```User preferences can be managed through the notification settings panel in the user profile.
### Usage Examples
```typescript
// Send a basic notification
await notify.info("New task assigned", {
title: "Task Assignment",
message: "You have been assigned a new task"
});// Send an emergency notification
await notify.emergency("System outage detected", {
title: "Critical System Alert",
message: "Database connection lost",
recipients: ["admin", "dba"]
});
```### WebSocket Integration
The notification system uses WebSocket for real-time updates. To connect:
```typescript
// Frontend WebSocket connection
const ws = new WebSocket(`ws://localhost:8080/notifications`);ws.onmessage = (event) => {
const notification = JSON.parse(event.data);
// Handle notification
};
```### Notification Center
The notification center component provides a unified interface for managing notifications:
```typescript
import { NotificationCenter } from '@components/notifications';function App() {
return (
);
}
```### API Endpoints
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/api/notifications` | GET | Get user notifications |
| `/api/notifications/unread` | GET | Get unread notifications |
| `/api/notifications/:id/read` | PUT | Mark notification as read |
| `/api/notifications/preferences` | GET/PUT | Manage notification preferences |