A structured process for identifying, analyzing, and resolving incidents that disrupt an organization's operations
Momentum Incident Management
About 8 min5/10/25
Features
No More Clunky UI β Nested tables & column-based filtering (text, date, select) make incident tracking effortless.
Nested CRUD for Incidents & Tasks β Create, update, and manage tasks seamlessly, with an option to add notes.
Choose & Create CIs β Define and manage configuration items with ease.
Automate with Swagger APIs β Ready for CI/CD pipelines, making integrations a breeze.
Seamless Deployment β Frontend & backend deployed on Vercel for high performance.
MongoDB Seeding β Easily set up initial data for a smooth start.
Swagger Documentation β Well-documented APIs for easy collaboration and scaling.
No Costly Subscriptions β A powerful alternative to expensive service management platforms
Project Overview
This is a full-stack web application that is called "momentum" internally and aims to replicate ServiceNow's IT service management capabilities.
Architecture
The project follows a client-server architecture with clear separation of concerns:
Root Level Structure
- Monorepo setup with both client and server in the same repository
- Package management: Uses
pnpmfor dependency management - Development tools: Includes Husky for git hooks, ESLint/Prettier for code formatting
- Deployment: Configured for Vercel deployment
momentum/
βββ client/ # Frontend Vue.js application
βββ server/ # Backend Node.js API
βββ .github/ # GitHub workflows and templates
βββ .husky/ # Git hooks configuration
βββ .vercel/ # Vercel deployment config
βββ .vscode/ # VS Code workspace settings
βββ package.json # Root package configuration
βββ pnpm-lock.yaml # Package lock file
βββ vercel.json # Vercel deployment settings
βββ README.md # Project documentationFrontend (Client Directory)
Technology Stack:
- Vue.js 3 with TypeScript
- PrimeVue UI component library (modern ServiceNow-like interface)
- Vite for fast development and building
- Pinia for state management
- Vue Router for navigation
- Playwright for end-to-end testing
- Vitest for unit testing
Key Features:
- Authentication system (Login/Register components)
- Incident/Ticket management forms
- Task management
- File upload capabilities (with file-saver)
- Data export functionality (xlsx)
- Form validation (vee-validate with yup schemas)
- Rich text editing (Quill editor)
- Modern responsive UI with PrimeFlex
Client Directory Structure:
client/
βββ src/
β βββ components/
β β βββ auth/ # Login/Register components
β β βββ layout/ # Header/Footer components
β β βββ shared/ # Reusable components
β β βββ TicketForm.vue # Incident ticket form
β β βββ TaskForm.vue # Task management form
β βββ stores/ # Pinia state management
β β βββ auth.module.ts
β β βββ incidents.module.ts
β β βββ user.module.ts
β β βββ ...
β βββ service/ # API service layer
β βββ utils/ # Utility functions
β βββ App.vue # Main application component
β βββ main.ts # Application entry point
βββ public/ # Static assets
βββ package.json # Frontend dependencies
βββ vite.config.ts # Vite configuration
βββ tsconfig.json # TypeScript configuration
βββ playwright.config.ts # E2E test configurationBackend (Server Directory)
Technology Stack:
- Node.js with Express.js
- MongoDB with Mongoose ODM
- JWT authentication with refresh tokens
- Swagger API documentation
- CommonJS modules (
.cjsfiles)
Key Features:
- Models: User, Incident, CI (Configuration Items), Roles, Refresh Tokens
- Authentication: JWT-based with bcrypt password hashing
- File uploads: Multer for handling image uploads
- Email functionality: Nodemailer integration
- API documentation: Swagger UI available
- CORS enabled for cross-origin requests
Server Directory Structure:
server/
βββ controllers/ # Request handlers
β βββ auth.controller.cjs
β βββ user.controller.cjs
β βββ shared/
βββ models/ # Database models
β βββ user.model.cjs
β βββ incident.model.cjs
β βββ ci.model.cjs
β βββ role.model.cjs
β βββ refreshToken.model.cjs
βββ routes/ # API route definitions
βββ middlewares/ # Custom middleware
βββ database/ # Database configuration
βββ helpers/ # Utility functions
βββ validations/ # Input validation schemas
βββ configs/ # Application configuration
βββ uploadedImages/ # File upload storage
βββ build/ # Compiled output
βββ server.cjs # Main server file
βββ swagger.cjs # API documentation setup
βββ package.json # Backend dependenciesDevelopment Workflow
Available Scripts:
# Install dependencies for both client and server
pnpm install
# Start both client and server concurrently
pnpm start
# Start only the server (runs on backend port)
pnpm start:server
# Start only the client (runs on http://localhost:5173/)
pnpm start:client
# Format code in both directories
pnpm format
# Copy environment variables
pnpm copy:env
# Clean all node_modules and build files
pnpm cleanEnvironment Setup:
- Clone the repository
- Run
pnpm installto install all dependencies - Run
pnpm copy:envto set up environment variables - Run
pnpm startto start both client and server - Access the application at
http://localhost:5173/
DevOps & Quality
- Git hooks: Husky for pre-commit actions
- Linting: ESLint configuration for both frontend and backend
- Code formatting: Prettier for consistent code style
- Commit standards: Commitlint for conventional commits
- Testing: Unit tests (Vitest) and E2E tests (Playwright)
- Deployment: Vercel configuration for production deployment
ServiceNow-like Features
Based on the structure, this clone implements:
- Incident Management: Ticket creation and tracking
- Task Management: Work item handling
- Configuration Items (CI): IT asset management
- User Management: Role-based access control
- Authentication: Secure login/registration system
- File Management: Document/image upload capabilities
- Reporting: Data export and analysis features
- API Documentation: Swagger UI for API exploration
Technology Highlights
Frontend Technologies:
- Vue 3 Composition API
- TypeScript for type safety
- PrimeVue for enterprise UI components
- Pinia for reactive state management
- Vite for fast development builds
- Playwright for reliable E2E testing
Backend Technologies:
- Express.js for robust API development
- MongoDB for flexible document storage
- Mongoose for elegant object modeling
- JWT for secure authentication
- Swagger for comprehensive API documentation
- Multer for efficient file handling
This is a well-structured, production-ready application that demonstrates modern full-stack development practices while replicating core ServiceNow functionality for educational/demonstration purposes.











