# Nigeria Election Monitoring System (NEMS)
A comprehensive full-stack web application for monitoring Nigeria's electoral process with geographical data integration, role-based access control, and real-time reporting capabilities.
## 🚀 Features
- **Role-Based Authentication**: Admin, Observer, and Public access levels
- **Geographical Data Integration**: Complete Nigerian electoral geography (States, LGAs, Wards, Polling Units)
- **Real-Time Reporting**: Incident tracking, status updates, and dashboard analytics
- **CSV Batch Upload**: Bulk observer onboarding with Excel/CSV import
- **Responsive Dashboard**: Mobile-friendly interface with data visualization
- **JWT Authentication**: Secure token-based authentication system
- **In-Memory Database**: Demo mode without MongoDB dependency
## 🛠️ Technology Stack
### Backend
- **Node.js** with Express.js framework
- **MongoDB** (with in-memory fallback for demos)
- **JWT** for authentication
- **bcrypt** for password hashing
- **Multer** for file uploads
- **Express Validator** for input validation
### Frontend
- **React.js** with modern hooks
- **React Router** for navigation
- **Chart.js** for data visualization
- **Axios** for API communication
- **CSS3** with responsive design
## đź“‹ Prerequisites
- Node.js (v14 or higher)
- npm or yarn package manager
- MongoDB (optional - in-memory database available for demos)
## 🚀 Quick Start
### 1. Clone and Install Dependencies
```bash
# Install backend dependencies
npm install
# Install frontend dependencies
cd client
npm install
cd ..
```
### 2. Environment Configuration
Create a `.env` file in the root directory:
```env
# Database Configuration
USE_MEMORY_DB=true # Set to false to use MongoDB
MONGODB_URI=mongodb://localhost:27017/nems
# Authentication
JWT_SECRET=your-super-secret-jwt-key-here
# Server
PORT=5000
NODE_ENV=development
```
### 3. Start the Application
```bash
# Start backend server
npm start
# In another terminal, start frontend
cd client
npm …