Package Exports
- ucg
- ucg/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ucg) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
UCG - Universal CRUD Generator
Express.js CRUD API Generator - Create production-ready REST APIs with authentication, RBAC, and comprehensive Swagger documentation in minutes.
⚡ Quick Start (2 minutes to working API)
1. Install UCG
npm install -g ucg2. Create New Project
mkdir my-api && cd my-api
npm init -y
npm install express ucg3. Initialize Authentication System
# Generate complete auth system with 47 API endpoints
ucg init auth
# Install required dependencies
npm install bcryptjs jsonwebtoken express-validator express-rate-limit nodemailer handlebars winston sequelize pg pg-hstore swagger-jsdoc swagger-ui-express cors helmet dotenv4. Setup Database
# Create PostgreSQL database first, then:
cp .env.example .env
# Edit .env with your database credentials
# Run migrations
npm run migrate
# Seed initial data (admin user, roles, permissions)
npm run seed5. Start Your API
npm start
# API runs on: http://localhost:3000
# Swagger docs: http://localhost:3000/docs
# Admin login: admin@example.com / Admin123!🎯 What You Get
UCG generates a complete enterprise-grade API with:
🔐 Authentication System (10 endpoints)
- User registration and login
- JWT token management with refresh
- Password reset via email
- Email verification
- Profile management
👥 RBAC Authorization (23 endpoints)
- Roles: Create, assign, manage role hierarchies
- Permissions: Fine-grained access control
- Permission Groups: Organize permissions logically
- Users: Complete user management with role assignments
🏢 Multi-Tenant Companies (10 endpoints)
- Company management and settings
- User-company assignments
- Tenant data isolation
📧 Email System (4 endpoints)
- Template-based email sending
- Bulk email operations
- Email queue management
- SMTP configuration
📋 Complete API Endpoints
Once initialized, you'll have 47 fully documented endpoints:
Authentication (/api/auth)
POST /api/auth/register # User registration
POST /api/auth/login # User login
POST /api/auth/refresh # Refresh JWT token
POST /api/auth/forgot-password # Request password reset
POST /api/auth/reset-password # Reset password with token
POST /api/auth/verify-email # Verify email address
POST /api/auth/resend-verification # Resend verification email
GET /api/auth/me # Get current user profile
PUT /api/auth/change-password # Change password
POST /api/auth/logout # Logout userUsers (/api/users)
GET /api/users # List users with filtering
GET /api/users/:id # Get user by ID
PUT /api/users/:id # Update user
DELETE /api/users/:id # Delete userRoles (/api/roles)
GET /api/roles # List all roles
POST /api/roles # Create new role
GET /api/roles/:id # Get role details
PUT /api/roles/:id # Update role
DELETE /api/roles/:id # Delete role
POST /api/roles/:id/clone # Clone role
GET /api/roles/stats # Role statisticsPermissions (/api/permissions)
GET /api/permissions # List permissions
POST /api/permissions # Create permission
GET /api/permissions/:id # Get permission
PUT /api/permissions/:id # Update permission
DELETE /api/permissions/:id # Delete permission
POST /api/permissions/bulk # Bulk operations
GET /api/permissions/resources # Resource permissions
POST /api/permissions/check # Check user permissions
GET /api/permissions/user/:id # User permissions
DELETE /api/permissions/bulk-delete # Bulk deletePermission Groups (/api/permission-groups)
GET /api/permission-groups # List permission groups
POST /api/permission-groups # Create group
GET /api/permission-groups/:id # Get group
PUT /api/permission-groups/:id # Update group
DELETE /api/permission-groups/:id # Delete group
GET /api/permission-groups/stats # Group statisticsCompanies (/api/companies)
GET /api/companies # List companies
POST /api/companies # Create company
GET /api/companies/:id # Get company
PUT /api/companies/:id # Update company
DELETE /api/companies/:id # Delete company
GET /api/companies/:id/users # Company users
POST /api/companies/:id/users # Add user to company
DELETE /api/companies/:id/users/:userId # Remove user
GET /api/companies/:id/settings # Company settings
GET /api/companies/stats # Company statisticsEmail (/api/email)
POST /api/email/send # Send email
POST /api/email/send-template # Send template email
GET /api/email/templates # List templates
POST /api/email/templates # Create template🗄️ Database Setup
Supported Databases
- PostgreSQL (recommended)
- MySQL
- SQLite (development)
Migration Commands
# Run all migrations
npm run migrate
# Rollback last migration
npm run migrate:rollback
# Reset database (DEV only)
npm run migrate:resetSeeding Commands
# Seed initial data
npm run seed
# Seed specific data
npm run seed:users
npm run seed:roles
npm run seed:permissions📧 Email Configuration
Edit your .env file:
# Email Configuration (Required for auth system)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
EMAIL_FROM=your-email@gmail.com
EMAIL_FROM_NAME=Your App Name
# For Gmail: Use App Password, not regular password
# Enable 2FA and generate App Password in Google Account settingsTest Email Configuration
# Test your email setup
curl -X POST http://localhost:3000/api/email/test \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"🚀 Production Deployment
Environment Variables
NODE_ENV=production
PORT=3000
JWT_SECRET=your-super-secure-jwt-secret-min-32-chars
JWT_REFRESH_SECRET=your-refresh-secret-min-32-chars
DATABASE_URL=postgresql://user:pass@host:5432/dbname
# Email (Production SMTP)
SMTP_HOST=your-smtp-server.com
SMTP_PORT=587
SMTP_USER=your-email
SMTP_PASS=your-passwordDocker Deployment
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]🔧 Customization
Add Custom Routes
// src/routes/customRoutes.js
const express = require('express');
const router = express.Router();
router.get('/custom', (req, res) => {
res.json({ message: 'Custom endpoint' });
});
module.exports = router;Custom Middleware
// src/middleware/customMiddleware.js
module.exports = (req, res, next) => {
// Your custom logic
next();
};📚 API Documentation
Swagger UI
Visit http://localhost:3000/docs for interactive API documentation.
Authentication
All protected endpoints require JWT token:
# Login to get token
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"Admin123!"}'
# Use token in subsequent requests
curl -X GET http://localhost:3000/api/users \
-H "Authorization: Bearer YOUR_JWT_TOKEN"❗ Troubleshooting
Missing Dependencies Error
# If you get missing dependencies error:
npm run install-auth-depsDatabase Connection Error
# Check your .env file has correct database credentials
# Ensure PostgreSQL is running
# Run migrations: npm run migrateEmail Not Working
# Check SMTP settings in .env
# For Gmail: Use App Password, enable 2FA
# Test with: npm run test:emailPermission Denied
# Ensure you're logged in as admin
# Check user roles and permissions
# Default admin: admin@example.com / Admin123!📞 Support
- GitHub Issues: Report bugs
- Documentation: Complete API docs at
/docsendpoint - Email: support@jithvar.com
📄 License
MIT License - see LICENSE file for details.
Made with ❤️ by Jithvar Consultancy Services