myex-cli
Version:
Opinionated Express.js framework with CLI tools
99 lines (63 loc) • 3.77 kB
Markdown
# Technology Stack
This document provides an overview of the technologies used in the MYX project.
## Core Technologies
### Node.js and Express.js
- **Node.js (>=18.0.0)**: JavaScript runtime built on Chrome's V8 engine.
- **Express.js**: Fast, minimalist web framework for Node.js.
- **ES6 Modules**: Modern JavaScript import/export syntax for better code organization.
### Database
- **MongoDB**: NoSQL document database for flexible data storage.
- **Mongoose**: MongoDB object modeling tool for schema validation and type casting.
## Security Tools
### Authentication and Authorization
- **Passport.js**: Authentication middleware for Node.js.
- **JWT (JSON Web Tokens)**: Secure way to transmit information between parties.
- **bcryptjs**: Library for hashing passwords securely.
### Web Security
- **Helmet**: Collection of middleware functions to secure Express apps by setting HTTP headers.
- **CORS**: Cross-Origin Resource Sharing middleware to control domain access.
- **express-rate-limit**: Basic rate-limiting middleware to protect against brute force attacks.
## Infrastructure & DevOps
### Process Management
- **PM2**: Process manager for Node.js applications with built-in load balancer.
### Containerization & Orchestration
- **Docker**: Platform for developing, shipping, and running applications in containers.
- **Docker Compose**: Tool for defining and running multi-container Docker applications.
- **Kubernetes**: Container orchestration system for automating deployment, scaling, and management.
## Logging & Monitoring
- **Winston**: Versatile logging library with support for multiple transports.
## API Development
- **Express.js Middleware**: For request processing, authentication, and error handling.
- **JSON**: Data format for request and response bodies.
- **HTTP Status Codes**: Standard codes for API responses.
- **Swagger/OpenAPI**: API documentation using swagger-jsdoc and swagger-ui-express.
## Testing
- **Jest**: JavaScript testing framework with a focus on simplicity.
- **Supertest**: HTTP assertions library for testing API endpoints.
## Code Quality & Standards
- **ESLint**: Pluggable linting utility for JavaScript.
- **MVC Pattern**: Architectural pattern separating concerns into Models, Views, and Controllers.
- **Service Layer Pattern**: Business logic abstraction between controllers and data access.
## Development Tools
- **nodemon**: Utility that monitors for changes and automatically restarts the server.
- **dotenv**: Module to load environment variables from a .env file.
## Dependency Management
- **npm**: Node.js package manager for installing and managing project dependencies.
## Environment & Configuration
- **Environment Variables**: For configuration across different environments.
- **.env Files**: Local environment configuration for development.
## Documentation
- **Markdown**: Lightweight markup language for documentation.
- **JSDoc**: API documentation generator for JavaScript.
## Security Practices
- **HTTPS Enforcement**: All production traffic should use HTTPS.
- **Secure Headers**: HTTP headers to protect against common attacks.
- **Environment-based Error Details**: Limited error information in production.
- **Input Validation**: Thorough validation of all user inputs.
- **Rate Limiting**: Prevention of abuse through request limiting.
## Best Practices
- **RESTful API Design**: Following REST principles for API endpoints.
- **Error Handling**: Centralized error handling with appropriate responses.
- **Logging**: Comprehensive logging for troubleshooting and auditing.
- **Configuration Management**: Environment-specific configuration handling.
- **Separation of Concerns**: Clear boundaries between different parts of the application.