JSPM

  • Created
  • Published
  • Downloads 56
  • Score
    100M100P100Q63447F
  • License MIT

Express.js plugin and CLI tool for generating Node.js CRUD APIs with comprehensive Swagger documentation, RBAC authentication system, and enterprise-grade features

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.

npm version npm downloads

⚡ Quick Start (2 minutes to working API)

1. Install UCG

npm install -g ucg

2. Create New Project

mkdir my-api && cd my-api
npm init -y
npm install express ucg

3. 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 dotenv

4. 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 seed

5. 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 user

Users (/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 user

Roles (/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 statistics

Permissions (/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 delete

Permission 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 statistics

Companies (/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 statistics

Email (/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:reset

Seeding 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 settings

Test 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-password

Docker 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-deps

Database Connection Error

# Check your .env file has correct database credentials
# Ensure PostgreSQL is running
# Run migrations: npm run migrate

Email Not Working

# Check SMTP settings in .env
# For Gmail: Use App Password, enable 2FA
# Test with: npm run test:email

Permission Denied

# Ensure you're logged in as admin
# Check user roles and permissions
# Default admin: admin@example.com / Admin123!

📞 Support

📄 License

MIT License - see LICENSE file for details.


Made with ❤️ by Jithvar Consultancy Services