@listablelabs/create-api
v1.0.3
Published
CLI to scaffold ListableLabs microservices
Maintainers
Readme
@listablelabs/create-api
CLI tool to scaffold standardized ListableLabs microservices.
Installation
# Install globally
npm install -g @listablelabs/create-api
# Or use npx (no install required)
npx @listablelabs/create-api create my-serviceUsage
Create a New Service
# Interactive mode (recommended)
listablelabs create my-service
# Quick mode with defaults
listablelabs create my-service -y
# Specify directory
listablelabs create my-service -d ./services
# Skip npm install
listablelabs create my-service --skip-install
# Skip git initialization
listablelabs create my-service --skip-gitAdd Components to Existing Project
# Add a new route + controller
listablelabs add route
listablelabs add route -n users
# Add just a controller
listablelabs add controller -n payment
# Add a service
listablelabs add service -n email
# Add a middleware
listablelabs add middleware -n cache
# Add a model (auto-detects MongoDB/SQL)
listablelabs add model -n userFeatures
When creating a new service, you can choose:
- Logging - Pino with pretty printing in dev
- Validation - Joi request validation
- Rate Limiting - Express rate limit
- Error Handling - Centralized error handling with typed errors
- JWT Authentication - Optional auth middleware
- Swagger/OpenAPI - Optional API documentation
- Database - PostgreSQL, MongoDB, or MySQL support
Project Structure
my-service/
├── src/
│ ├── config/ # Environment configuration
│ ├── controllers/ # Request handlers
│ ├── middlewares/ # Express middlewares
│ ├── routes/v1/ # API routes
│ ├── services/ # Business logic
│ ├── models/ # Data models
│ ├── utils/ # Utilities (logger, response)
│ ├── app.js # Express setup
│ └── server.js # Entry point
├── tests/
├── Dockerfile
└── docker-compose.ymlPublishing (Internal)
# Login to npm (or your private registry)
npm login
# Publish
npm publish --access publicExamples
Create a user service with PostgreSQL and auth:
$ listablelabs create user-service
? Service name: user-service
? Description: User management microservice
? Port: 3001
? Select features:
◉ Pino Logging
◉ Joi Validation
◉ Rate Limiting
◉ Error Handling
◉ JWT Authentication
◯ Swagger/OpenAPI Docs
? Database: PostgreSQL
✔ Project structure created
✔ Git repository initialized
✔ Dependencies installed
✔ Project created successfully!
Next steps:
cd user-service
npm run devAdd a products route:
$ cd user-service
$ listablelabs add route -n products
✔ Created products route and controller
Files created:
- src/routes/v1/productsRoutes.js
- src/controllers/productsController.js
Add to src/routes/v1/index.js:
const productsRoutes = require('./productsRoutes');
router.use('/products', productsRoutes);