2.5 KiB
2.5 KiB
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:
# 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 authenticationPOST /api/v1/auth/logout- User logoutGET /api/v1/auth/verify- Token verification
Login Credentials
Use the following credentials for testing:
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
# 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