239 lines
6.3 KiB
Markdown
239 lines
6.3 KiB
Markdown
# Royal Enfield Dealership Onboarding System - Backend
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### 1. Install Dependencies
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 2. Setup Database
|
|
Create PostgreSQL database:
|
|
```bash
|
|
createdb royal_enfield_onboarding
|
|
```
|
|
|
|
### 3. Configure Environment
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your database credentials and other settings
|
|
```
|
|
|
|
### 4. Run Migrations
|
|
```bash
|
|
npm run migrate
|
|
```
|
|
|
|
### 5. Start Server
|
|
```bash
|
|
# Development
|
|
npm run dev
|
|
|
|
# Production
|
|
npm start
|
|
```
|
|
|
|
## 📁 Complete File Structure
|
|
|
|
This backend requires the following files to be fully functional. Files marked with ✅ are already created. Files marked with ⚠️ need to be created by your AI assistant:
|
|
|
|
### Root Files
|
|
- ✅ `package.json`
|
|
- ✅ `.env.example`
|
|
- ✅ `server.js`
|
|
- ✅ `README.md`
|
|
- ✅ `back.md` (Comprehensive documentation)
|
|
- ⚠️ `.gitignore`
|
|
|
|
### Config Files (/config)
|
|
- ✅ `database.js`
|
|
- ✅ `email.js`
|
|
- ✅ `constants.js`
|
|
|
|
### Models (/models)
|
|
- ✅ `index.js`
|
|
- ✅ `User.js`
|
|
- ✅ `Outlet.js`
|
|
- ⚠️ `Application.js` - Dealer application model
|
|
- ⚠️ `Resignation.js` - Resignation request model
|
|
- ⚠️ `ConstitutionalChange.js` - Constitutional change model
|
|
- ⚠️ `RelocationRequest.js` - Relocation request model
|
|
- ⚠️ `Worknote.js` - Discussion worknotes model
|
|
- ⚠️ `Document.js` - Document uploads model
|
|
- ⚠️ `AuditLog.js` - Audit trail model
|
|
- ⚠️ `FinancePayment.js` - Finance payment tracking
|
|
- ⚠️ `FnF.js` - Full & Final settlement
|
|
- ⚠️ `Region.js` - Regional hierarchy
|
|
- ⚠️ `Zone.js` - Zone model
|
|
|
|
### Controllers (/controllers)
|
|
- ⚠️ `authController.js` - Login, logout, token refresh
|
|
- ⚠️ `userController.js` - User management
|
|
- ⚠️ `applicationController.js` - Dealer applications
|
|
- ⚠️ `resignationController.js` - Resignation workflow
|
|
- ⚠️ `constitutionalController.js` - Constitutional changes
|
|
- ⚠️ `relocationController.js` - Relocation requests
|
|
- ⚠️ `outletController.js` - Outlet management
|
|
- ⚠️ `worknoteController.js` - Discussion platform
|
|
- ⚠️ `financeController.js` - Finance operations
|
|
- ⚠️ `masterController.js` - Master configuration
|
|
- ⚠️ `dashboardController.js` - Dashboard statistics
|
|
|
|
### Routes (/routes)
|
|
- ⚠️ `auth.js` - Authentication routes
|
|
- ⚠️ `users.js` - User routes
|
|
- ⚠️ `applications.js` - Application routes
|
|
- ⚠️ `resignations.js` - Resignation routes
|
|
- ⚠️ `constitutional.js` - Constitutional change routes
|
|
- ⚠️ `relocations.js` - Relocation routes
|
|
- ⚠️ `outlets.js` - Outlet routes
|
|
- ⚠️ `worknotes.js` - Worknote routes
|
|
- ⚠️ `finance.js` - Finance routes
|
|
- ⚠️ `master.js` - Master configuration routes
|
|
- ⚠️ `dashboard.js` - Dashboard routes
|
|
|
|
### Middleware (/middleware)
|
|
- ⚠️ `auth.js` - JWT verification middleware
|
|
- ⚠️ `roleCheck.js` - Role-based access control
|
|
- ⚠️ `upload.js` - File upload middleware
|
|
- ⚠️ `validation.js` - Input validation
|
|
- ⚠️ `errorHandler.js` - Global error handler
|
|
|
|
### Utilities (/utils)
|
|
- ⚠️ `emailTemplates.js` - Email HTML templates
|
|
- ⚠️ `emailService.js` - Email sending utilities
|
|
- ⚠️ `logger.js` - Winston logger
|
|
- ⚠️ `helpers.js` - Helper functions
|
|
|
|
### Migrations (/migrations)
|
|
- ⚠️ `initial-setup.js` - Initial database schema and seed data
|
|
|
|
## 📝 Instructions for AI Assistant
|
|
|
|
**To complete this backend, your AI IDE should:**
|
|
|
|
1. Read the `back.md` file for complete architecture understanding
|
|
2. Create all remaining model files based on the database schema in `back.md`
|
|
3. Create all controller files with business logic as described in API endpoints
|
|
4. Create all route files mapping HTTP requests to controllers
|
|
5. Create middleware files for authentication, authorization, and validation
|
|
6. Create utility files for email, logging, and helpers
|
|
7. Create migration file to set up initial database schema and seed data
|
|
|
|
**Each file should follow these patterns:**
|
|
|
|
### Model Pattern:
|
|
```javascript
|
|
const { CONSTANTS } = require('../config/constants');
|
|
|
|
module.exports = (sequelize, DataTypes) => {
|
|
const ModelName = sequelize.define('ModelName', {
|
|
// Fields defined in back.md schema
|
|
});
|
|
|
|
ModelName.associate = (models) => {
|
|
// Relationships defined in back.md
|
|
};
|
|
|
|
return ModelName;
|
|
};
|
|
```
|
|
|
|
### Controller Pattern:
|
|
```javascript
|
|
const db = require('../models');
|
|
const logger = require('../utils/logger');
|
|
|
|
exports.functionName = async (req, res, next) => {
|
|
try {
|
|
// Business logic
|
|
res.json({ success: true, data: result });
|
|
} catch (error) {
|
|
logger.error('Error:', error);
|
|
next(error);
|
|
}
|
|
};
|
|
```
|
|
|
|
### Route Pattern:
|
|
```javascript
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const controller = require('../controllers/controllerName');
|
|
const auth = require('../middleware/auth');
|
|
const roleCheck = require('../middleware/roleCheck');
|
|
|
|
router.get('/', auth, roleCheck(['Role1', 'Role2']), controller.list);
|
|
router.post('/', auth, roleCheck(['Role1']), controller.create);
|
|
|
|
module.exports = router;
|
|
```
|
|
|
|
## 🔌 API Documentation
|
|
|
|
Full API documentation is available in `back.md` including:
|
|
- All endpoint URLs
|
|
- Request/Response formats
|
|
- Authentication requirements
|
|
- Role permissions
|
|
- Example payloads
|
|
|
|
## 🗄️ Database Schema
|
|
|
|
Complete database schema with all tables, columns, relationships, and indexes is documented in `back.md`.
|
|
|
|
## 🔐 Security
|
|
|
|
The backend implements:
|
|
- JWT authentication
|
|
- Role-based access control
|
|
- Password hashing with bcrypt
|
|
- Input validation
|
|
- SQL injection prevention
|
|
- Rate limiting
|
|
- CORS protection
|
|
- Security headers (Helmet)
|
|
|
|
## 📧 Email Notifications
|
|
|
|
Email templates and triggers are defined in `utils/emailTemplates.js` and `utils/emailService.js`.
|
|
|
|
## 📊 Logging
|
|
|
|
Winston logger is configured in `utils/logger.js` with multiple transports.
|
|
|
|
## 🧪 Testing
|
|
|
|
Run tests with:
|
|
```bash
|
|
npm test
|
|
npm run test:coverage
|
|
```
|
|
|
|
## 🚢 Deployment
|
|
|
|
See `back.md` for detailed deployment instructions for:
|
|
- Railway
|
|
- Render
|
|
- AWS/DigitalOcean
|
|
- Docker
|
|
|
|
## 📞 Support
|
|
|
|
Refer to `back.md` for:
|
|
- Troubleshooting common issues
|
|
- Database backup/restore
|
|
- Maintenance tasks
|
|
- Complete architecture documentation
|
|
|
|
---
|
|
|
|
**Next Steps:**
|
|
1. Have your AI assistant read `back.md`
|
|
2. Ask it to create all remaining files following the patterns above
|
|
3. Test API endpoints
|
|
4. Connect frontend to backend
|
|
5. Deploy to production
|
|
|
|
Good luck! 🚀
|