Skip to content
kushkapadiaPublic

About

A menu-driven Node.js MVC Server generator.

Topics

Resources

Stars

46 stars

Watchers

2 watching

Forks

Latest commit

Β 

History

111 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Servitect - A one-click Node.js MVC Server generator

Server + Architect = Servitect

Automate the creation of a well-structured Model-View-Controller (MVC) pattern for your Node.js projects with ease. Servitect is designed to help developers quickly scaffold a project, follow best practices, and integrate various functionalities with minimal setup.

Servitect Logo

npm version npm downloads License: MIT

πŸ€” Why Servitect?

Servitect is designed to simplify and accelerate the server development process by automating the setup of essential components for a modern backend. Here's why you should choose Servitect:

  • 🏎️ Speedy Development: Perfect for hackathons and rapid prototyping, Servitect allows you to set up a fully functional server in minutes, letting you focus on building unique features and meeting tight deadlines rather than getting stuck in setup.

  • πŸ—„οΈ MongoDB Integration: With built-in support for MongoDB, Servitect is ideal for modern applications that need a flexible and scalable NoSQL database.

  • βš™οΈ Customizable: Servitect's menu-driven approach allows you to pick and choose the features you need, giving you flexibility while still automating repetitive tasks.

  • πŸ€– AI-Ready: Built-in support for Large Language Models (LLMs) with LangChain integration for modern AI-powered applications.

Servitect streamlines the backend creation process, allowing developers to focus on building what matters most. Whether you're a beginner or an experienced developer, Servitect provides the tools you need to jumpstart your server development!

πŸš€ Features

Servitect comes with a variety of built-in features that streamline the development process:

image

1. πŸ“ MVC Folder Structure Generation

  • Automatically generates a standard Model-Controller folder structure.
  • Creates the directories and files for:
    • Models: MongoDB Schema definitions and database models.
    • Controllers: Handles logic and data flow between models and views.
    • Routes: Defines CRUD endpoints.
    • Helper: Utility functions and middleware.
    • Constants: Application constants and messages.

2. βœ… Best Practices for Scalability and Error Handling

  • Comes with pre-configured global error-handling mechanisms.
  • Implements best practices for middleware and request validation.
  • Follows scalable design patterns to ensure maintainability even as your application grows.
  • Built-in try-catch wrapper for async route handlers.

3. πŸ”’ Authentication APIs

  • Provides complete authentication system with JWT tokens.
  • Actor-based authentication system for users, admins, and custom roles.
  • Secure password hashing with bcryptjs.
  • Token verification middleware for protected routes.
  • Session management with configurable token expiration.

4. πŸ“ CRUD API Generation

  • Quickly generate Create, Read, Update, Delete (CRUD) APIs for any entity.
  • Support for both Actor models (with authentication) and Entity models.
  • Consistent API response format with success/error handling.
  • Automatic route registration and controller generation.

5. πŸ“€ File Uploads to Cloudinary

  • Complete file upload system with Cloudinary integration.
  • Support for single file, multiple files, and field-specific uploads.
  • Automatic local file cleanup after cloud upload.
  • Built-in file deletion capabilities from Cloudinary.
  • Multer middleware for handling multipart/form-data.

6. 🟒 WhatsApp Notifications Integration

  • Integrates with WhatsApp Cloud API for sending notifications.
  • Template-based message sending system.
  • Easy configuration with access tokens.
  • Perfect for automated notifications and alerts.

7. πŸ”” Firebase Cloud Messaging API Integration for Mobile Apps

  • Complete Firebase FCM setup for push notifications.
  • Support for sending notifications to individual devices.
  • Topic-based messaging for broadcasting to multiple users.
  • Batch notifications for sending to multiple FCM tokens.
  • Multi-topic notification support with condition-based targeting.

8. πŸ“¨ NodeMailer Integration

  • Full email functionality with NodeMailer.
  • Gmail SMTP configuration out of the box.
  • HTML email support for rich content.
  • Environment-based configuration for security.

9. πŸ’¬ Chat Logic with Database Model and API Creation

  • Ready-to-use real-time chat system.
  • MongoDB-based chat storage with message history.
  • APIs for sending messages and retrieving conversations.
  • Support for one-on-one conversations with message threading.
  • Timestamp tracking and sender identification.

10. 🐳 Docker Setup

  • Pre-configured Docker setup for containerization.
  • Production-ready Dockerfile with Node.js best practices.
  • Easy deployment with container orchestration support.
  • Development and production environment configurations.

11. πŸ€– Large Language Model (LLM) Integration

  • Ollama Integration: Local LLM deployment with conversation memory.
  • LangChain Framework: Advanced prompt engineering and chain operations.
  • Session-based conversation history for contextual responses.
  • Customizable system prompts and model configurations.
  • Support for multiple LLM models through Ollama.

πŸ“¦ Installation

Install Servitect globally using npm:

npm install -g servitect

For Linux and Mac users:

sudo npm install -g servitect

🏁 Quick Start

After installation, you can create a new MVC project by running:

servitect

Follow the interactive Menu to configure your project with the features you need.

πŸ“š Usage

Creating a New Project

  1. Install Servitect globally:

    npm install -g servitect
  2. Run the CLI tool:

    servitect
  3. Select your project directory and provide a project name when prompted.

  4. Choose "Initialize MVC" from the menu to create the basic structure.

  5. Add additional modules as needed:

    • Actor Models (Users, Admins, etc.)
    • Entity Models (Products, Orders, etc.)
    • Chat Module
    • File Upload Module
    • Firebase FCM
    • WhatsApp Integration
    • NodeMailer
    • Docker Setup
    • LLM Integration
  6. Navigate to your project and start the server:

    cd your-project-name
    npm run server
  7. Test your APIs - if you see Connected in the console, your APIs are ready!

πŸ—‚οΈ Project Structure

Here's an overview of the generated project structure:

my-project/
β”‚
β”œβ”€β”€ models/                 # Database models
β”‚   β”œβ”€β”€ User.js            # Example actor model
β”‚   └── Product.js         # Example entity model
β”‚
β”œβ”€β”€ controllers/           # Business logic
β”‚   β”œβ”€β”€ userController.js
β”‚   β”œβ”€β”€ productController.js
β”‚   β”œβ”€β”€ chatController.js
β”‚   β”œβ”€β”€ uploadController.js
β”‚   └── firebaseController.js
β”‚
β”œβ”€β”€ routes/               # API routes
β”‚   β”œβ”€β”€ router.js         # Main router
β”‚   β”œβ”€β”€ userRoutes.js
β”‚   β”œβ”€β”€ productRoutes.js
β”‚   β”œβ”€β”€ chatRoutes.js
β”‚   β”œβ”€β”€ fileUploadRoutes.js
β”‚   └── firebaseRoutes.js
β”‚
β”œβ”€β”€ helper/               # Utility functions
β”‚   β”œβ”€β”€ JsonResponse.js   # Standardized API responses
β”‚   β”œβ”€β”€ JWTAuthHelper.js  # JWT authentication
β”‚   β”œβ”€β”€ TryCatch.js       # Error handling wrapper
β”‚   β”œβ”€β”€ cloudinary.js     # File upload utilities
β”‚   β”œβ”€β”€ LlmHelperOllama.js # LLM integration
β”‚   β”œβ”€β”€ Nodemailer.js     # Email utilities
β”‚   └── WhatsappNotification.js # WhatsApp messaging
β”‚
β”œβ”€β”€ constants/            # Application constants
β”‚   └── Message.js        # Response messages
β”‚
β”œβ”€β”€ middleware/           # Express middleware
β”‚   └── multer.js         # File upload middleware
β”‚
β”œβ”€β”€ public/               # Static files
β”‚   └── uploads/          # Temporary file storage
β”‚
β”œβ”€β”€ .env                  # Environment variables
β”œβ”€β”€ .gitignore           # Git ignore rules
β”œβ”€β”€ package.json         # Dependencies and scripts
β”œβ”€β”€ app.js               # Express application setup
β”œβ”€β”€ db.js                # Database connection
β”œβ”€β”€ Dockerfile           # Docker configuration
└── firebase-key.json    # Firebase service account key

πŸ”Œ Integrations

1. Cloudinary Setup

To enable file uploads with Cloudinary:

  1. Sign up for a Cloudinary account
  2. Get your Cloud Name, API Key, and API Secret from the dashboard
  3. When prompted by Servitect, enter these credentials or add them to .env later:
    CLOUDINARY_CLOUD_NAME=your_cloud_name
    CLOUDINARY_API_KEY=your_api_key
    CLOUDINARY_API_SECRET=your_api_secret

2. Firebase FCM Setup

To use Firebase Cloud Messaging:

  1. Create a Firebase project in the Firebase Console
  2. Go to Settings β†’ Cloud Messaging and enable it
  3. Go to Service Accounts β†’ Generate Private Key
  4. Save the downloaded JSON file as firebase-key.json in your project root
  5. Add to .env:
    GOOGLE_APPLICATION_CREDENTIALS="firebase-key.json"

3. WhatsApp Setup

To use WhatsApp Cloud API:

  1. Follow the Meta WhatsApp Business API documentation
  2. Get your access token and phone number ID
  3. Add to .env:
    WHATSAPP_URL="https://graph.facebook.com/v18.0/YOUR_PHONE_NUMBER_ID/messages"
    WHATSAPP_ACCESS_TOKEN=your_access_token

4. NodeMailer Setup

For email functionality:

  1. Use a Gmail account with App Password (recommended)
  2. Add to .env:
    NODEMAILER_ADMIN_EMAIL=your_email@gmail.com
    NODEMAILER_ADMIN_PASSWORD=your_app_password

5. LLM Setup (Ollama)

For AI integration:

  1. Install Ollama locally
  2. Pull a model (e.g., ollama pull llama3.1)
  3. Ensure Ollama is running on http://localhost:11434
  4. The LLM helper is pre-configured and ready to use

πŸ“‹ API Documentation

Authentication Endpoints

POST /user/register        # User registration
POST /user/login           # User login
GET  /user/get-by-id/:id   # Get user by ID (protected)

File Upload Endpoints

POST /fileUpload/uploadSingleFile      # Upload single file
POST /fileUpload/uploadMultipleFiles   # Upload multiple files
POST /fileUpload/deleteSingleFile      # Delete file from Cloudinary

Chat Endpoints

POST /chat/send-chat                   # Send a message
GET  /chat/get-my-chat/:id/:contactId  # Get conversation history

Firebase FCM Endpoints

POST /firebase/sendNotificationToCustomDevice    # Send to specific device
POST /firebase/sendNotificationToTopic/:topic    # Send to topic subscribers
POST /firebase/sendBatchNotificationsMultipleFCMS # Batch send to multiple devices

LLM Endpoints

POST /llm/ask-llm          # Send prompt to LLM and get response

πŸ›‘οΈ Security Features

  • JWT Authentication: Secure token-based authentication
  • Password Hashing: bcryptjs for secure password storage
  • CORS Protection: Cross-origin request handling
  • Environment Variables: Sensitive data protection
  • Input Validation: Request data validation and sanitization
  • Error Handling: Comprehensive error management without exposing sensitive info

πŸ”§ Development Commands

npm run server    # Start development server with nodemon
npm run watch     # Alternative development command

🐣 New to Development? We're Here to Help!

If you are just starting your journey in server development or find certain concepts challenging, we have resources to assist you:

  • YouTube Tutorials: Visit our YouTube channel for comprehensive tutorials
  • In-Depth Documentation: Detailed documentation covering features, commands, and best practices
  • Community Support: Connect with us on LinkedIn for support and questions:

🀝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

How to Contribute

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ˆ Stats

  • 🎯 1000+ weekly downloads on npm
  • ⭐ Growing GitHub stars
  • πŸš€ Production-ready code generation
  • πŸ”§ 10+ integrated modules and features

πŸ“„ License

This project is MIT licensed.

πŸ™ Acknowledgements

  • Thanks to all contributors who have helped shape Servitect
  • Inspired by the need for rapid, scalable server development in the Node.js ecosystem
  • Built with modern development practices and industry standards

πŸ”— Links


πŸš€ Happy Coding!

Made with ❀️ by Elite Coders

Server + Architect = Servitect - Your one-click solution for Node.js MVC backend development!

About

A menu-driven Node.js MVC Server generator.

Topics

Resources

Stars

46 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages