# E-Voting Platform A modern e-voting platform built with Next.js and integrated with an external authentication API. ## Features - External API authentication - Role-based access control (Admin/Voter) - Modern UI with Tailwind CSS - Responsive design - Secure session management ## Setup ### Environment Variables Create a `.env.local` file in the root directory with the following variables: ```bash # External API Configuration NEXT_PUBLIC_API_BASE_URL=https://evoting-be.apskel.org NEXT_PUBLIC_API_AUTH_HEADER=•••••• # JWT Secret (for local token generation) JWT_SECRET=your-secret-key-change-this # Environment NODE_ENV=development # Base URL for the application NEXT_PUBLIC_BASE_URL=http://localhost:3000 ``` ### API Endpoints The application expects the following external API endpoints: - `POST /api/v1/auth/login` - User authentication - `POST /api/v1/auth/logout` - User logout - `GET /api/v1/auth/verify` - Token verification ### Login Credentials Use the following credentials for testing: ```bash curl --location 'localhost:4000/api/v1/auth/login' \ --header 'Content-Type: application/json' \ --header 'Authorization: ••••••' \ --data-raw '{ "email": "superadmin@example.com", "password": "ChangeMe!Super#123" }' ``` ## Development ```bash # Install dependencies npm install # Run development server npm run dev # Build for production npm run build # Start production server npm start ``` ## Architecture - **Frontend**: Next.js 15 with React 19 - **Styling**: Tailwind CSS with shadcn/ui components - **Authentication**: External API integration with local token storage - **State Management**: React hooks with localStorage persistence ## File Structure ``` ├── app/ # Next.js app directory │ ├── admin/ # Admin dashboard │ ├── login/ # Login page │ ├── vote/ # Voting interface │ └── api/ # API routes (removed - using external API) ├── components/ # Reusable UI components ├── hooks/ # Custom React hooks ├── lib/ # Utility libraries and configuration └── public/ # Static assets ``` ## Security Notes - The application now uses an external authentication API - Local JWT tokens are used for session management - All sensitive operations are delegated to the external API - Environment variables should be properly secured in production