A powerful full-stack development framework with intelligent code generation
Installation โข Quick Start โข Features โข Documentation โข Contributing
NSGM CLI is a comprehensive full-stack development framework that combines the power of modern web technologies with intelligent code generation capabilities. It helps developers rapidly build scalable web applications through an interactive CLI wizard and automated code templates.
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Frontend โ โ Backend โ โ Database โ
โ Next.js โโโโโบโ Express.js โโโโโบโ MySQL โ
โ React โ โ GraphQL โ โ Native SQL โ
โ Styled-Comp โ โ REST API โ โ Relations โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
- Smart Mode Detection: Automatically switches between interactive and command-line modes
- Beginner-Friendly: Step-by-step guided setup for newcomers
- Expert-Efficient: Quick command-line shortcuts for experienced developers
- Code Generation: Automatic CRUD operations, API endpoints, and database schemas
- Hot Reload: Instant development feedback
- Type Safety: Full TypeScript support throughout the stack
- CSRF Protection: Built-in cross-site request forgery prevention
- Password Encryption: bcrypt-based secure authentication
- Session Management: Robust user session handling
- CSP Headers: Content Security Policy implementation
- Frontend: Next.js 13+, React 18+, Styled-components, Redux Toolkit
- Backend: Express.js, GraphQL, REST APIs
- Database: MySQL with native drivers
- DevTools: TypeScript, ESLint, Prettier, Jest
# Using npm
npm install -g nsgm-cli
# Using yarn
yarn global add nsgm-cli
# Using pnpm
pnpm add -g nsgm-clinsgm --version
# Should output: 2.1.13# Start the interactive wizard (recommended for beginners)
nsgm init
# Or specify project name directly
nsgm init my-awesome-appThe wizard will guide you through:
- โ Project name and directory
- โ Database configuration
- โ Security settings
- โ Initial controller setup
cd your-project-name
# Copy environment template
cp .env.example .envDefault Login: admin/admin123
To change password (optional):
# Generate secure password hash
npm run generate-password yourNewPassword
# Edit .env file with generated hash
nano .env# Install dependencies
npm install
# Start development server
npm run devYour application will be available at http://localhost:3000 with:
- ๐๏ธ Admin dashboard with CRUD interface
- ๐ Data import/export functionality
- ๐๏ธ Batch operations support
- ๐ Secure login system (Default: admin/admin123)
| Command | Description | Mode | Example |
|---|---|---|---|
nsgm init |
Initialize new project | Interactive/CLI | nsgm init blog-app |
nsgm create |
Generate controller with CRUD | Interactive/CLI | nsgm create user |
nsgm delete |
Remove controller and files | Interactive/CLI | nsgm delete product |
nsgm dev |
Start development server | CLI | nsgm dev |
nsgm build |
Build for production | CLI | nsgm build |
nsgm start |
Start production server | CLI | nsgm start |
# Database operations
nsgm deletedb user # Delete controller + database table
# Project maintenance
nsgm upgrade # Upgrade project base files
nsgm export # Export static pages
# Development tools
npm run lint # Code linting
npm run test # Run tests
npm run test:coverage # Test coverage reportEach controller created with nsgm create includes:
- GraphQL Schema: Typed queries and mutations
- GraphQL Resolvers: Business logic implementation
- REST API Endpoints: RESTful service layer
- Database Models: MySQL schema definitions
- Data Validation: Input sanitization and validation
- React Components: Modern functional components with hooks
- Styled Components: CSS-in-JS styling
- Redux Integration: State management
- Form Handling: Create, edit, and validation forms
- Data Tables: Sortable, filterable data grids
- Create: Add new records with validation
- Read: List, search, and pagination
- Update: Edit existing records
- Delete: Single and batch deletion
- Import/Export: CSV and JSON data handling
your-project/
โโโ client/ # Frontend code
โ โโโ components/ # React components
โ โโโ layout/ # Layout components
โ โโโ redux/ # State management
โ โโโ service/ # API services
โ โโโ styled/ # Styled components
โ โโโ utils/ # Utility functions
โโโ server/ # Backend code
โ โโโ apis/ # REST API routes
โ โโโ modules/ # GraphQL modules
โ โโโ sql/ # Database scripts
โ โโโ utils/ # Server utilities
โโโ pages/ # Next.js pages
โโโ public/ # Static assets
โโโ scripts/ # Build and deployment scripts
โโโ __tests__/ # Test files
โโโ .env.example # Environment template
โโโ next.config.js # Next.js configuration
โโโ mysql.config.js # Database configuration
โโโ package.json # Dependencies
# .env file
NODE_ENV=development
LOGIN_USERNAME=admin
LOGIN_PASSWORD_HASH=your_generated_hash # Default: admin123
DATABASE_URL=mysql://user:password@localhost:3306/dbname
# Optional
PORT=3000
NEXT_PUBLIC_API_URL=http://localhost:3000// mysql.config.js
module.exports = {
mysqlOptions: {
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'nsgm_db',
},
}Default Login Credentials: admin/admin123
# Generate secure hash for custom password
npm run generate-password yourNewPassword
# Add to .env file
LOGIN_PASSWORD_HASH=your_generated_hash_hereNSGM CLI includes built-in CSRF protection:
// Automatic CSRF token generation
app.use(csrfProtection)
// Custom CSP headers
app.use(
createCSPMiddleware({
directives: {
defaultSrc: ["'self'"],
styleSrc: ["'self'", "'unsafe-inline'"],
scriptSrc: ["'self'"],
},
})
)# Run all tests
npm test
# Watch mode
npm run test:watch
# Coverage report
npm run test:coverage
# Lint code
npm run lint
# Format code
npm run format# 1. Initialize project
nsgm init my-blog
# 2. Create controllers
cd my-blog
nsgm create post
nsgm create category
nsgm create user
# 3. Start development
npm run dev// server/apis/custom.js
const express = require('express')
const router = express.Router()
router.get('/stats', (req, res) => {
res.json({
totalPosts: 42,
totalUsers: 15,
lastUpdate: new Date(),
})
})
module.exports = router// server/modules/blog/schema.js
module.exports = {
query: `
posts(limit: Int, offset: Int): [Post]
post(id: ID!): Post
`,
mutation: `
createPost(title: String!, content: String!): Post
updatePost(id: ID!, title: String, content: String): Post
deletePost(id: ID!): Boolean
`,
type: `
type Post {
id: ID!
title: String!
content: String!
createdAt: Date!
updatedAt: Date!
}
`,
}# Production build
npm run build
# Analyze bundle size
npm run analyze
# Export static site
npm run export# Start production server
npm start
# Or use PM2
pm2 start npm --name "nsgm-app" -- startNSGM CLI ๅฎๅ จๆฏๆ Vercel ้จ็ฝฒ๏ผๅ ๆฌ่ชๅจๅ CI/CD ๆต็จใ
ๅฟซ้ๅผๅง๏ผ
- ๆจ้้กน็ฎๅฐ GitHub
- ่ฎฟ้ฎ Vercel Dashboard
- ๅฏผๅ ฅ GitHub ไปๅบ
- ้
็ฝฎ็ฏๅขๅ้๏ผๅ่
.env.vercel.example๏ผ - ็นๅป "Deploy"
่ฏฆ็ปๆๅ๏ผ ๆฅ็ VERCEL_DEPLOYMENT.md
็นๆง๏ผ
- โ ่ชๅจ CI/CD ๆต็จ
- โ ้ข่ง็ฏๅข๏ผๆฏไธช PR๏ผ
- โ ่ชๅจ HTTPS
- โ ๅ จ็ CDN
- โ ๆ ๆๅกๅจๅฝๆฐ
- โ ไธ้ฎๅๆป
็ฏๅขๅ้้ ็ฝฎ๏ผ
NODE_ENV=production
LOGIN_USERNAME=admin
LOGIN_PASSWORD_HASH=your_hash
DATABASE_URL=mysql://...
่ทๅๅฏ็ ๅๅธ๏ผ
npm run generate-password yourPasswordWe welcome contributions! Please see our Contributing Guide for details.
# Clone repository
git clone https://github.com/erishen/nsgm.git
cd nsgm
# Install dependencies
npm install
# Run tests
npm test
# Build CLI
npm run tsbuild- Security Guide - Security best practices
- API Reference - Complete API documentation
- Migration Guide - Upgrade instructions
- Troubleshooting - Common issues and solutions
Port already in use
# Kill process on port 3000
lsof -ti:3000 | xargs kill -9
# Or use different port
PORT=3001 npm run devDatabase connection failed
# Check MySQL service
sudo systemctl status mysql
# Verify credentials in .env
cat .env | grep DB_Permission denied
# Fix npm permissions
sudo chown -R $(whoami) ~/.npm
# Or use different install location
npm config set prefix '~/.local'This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - React framework
- GraphQL - Query language
- Styled Components - CSS-in-JS
- MySQL - Relational database