Files
ENI-cicd-tp/README.md
Rock b4d021a548 Add optional name + docs (#25)
* Add optional name

* docs: add README.md with project documentation
2025-12-02 14:09:31 +01:00

82 lines
2.2 KiB
Markdown

# TP CI/CD
A Node.js application providing a simple greeting service with a REST API. It includes a server built with Express, greeting logic, and comprehensive test
suites (unit, integration, and end-to-end).
## Features
- **Greeting Functionality**: Generates personalized greetings via `src/greeting.js`.
- **REST API Server**: Built with Express in `src/server.js`, supporting GET and POST endpoints for greetings.
- **Testing**: Full test coverage with Jest:
- Unit tests in `tests/unit/greeting.test.js`.
- Integration tests in `tests/integration/app.test.js`.
- End-to-end tests in `tests/e2e/e2e.test.js`.
- **Linting**: Configured with ESLint (via `.eslintrc.js` and `.eslintignore`).
- **Node.js Version Management**: Uses `.nvmrc` to specify Node.js v22.19.0.
## Prerequisites
- Node.js ≥22.19.0 (use `.nvmrc` with nvm: `nvm use`).
- npm (included with Node.js).
## Installation
1. Fork the repository:
2. Install dependencies:
```
npm install
```
## Usage
Start the server:
```
npm start
```
The server runs on port 3000 (or `process.env.PORT`). Endpoints:
- `GET /hello/:name?`: Returns a greeting (e.g., "Hello world!" or "Hello world! From [name]").
- `POST /hello`: Expects `x-name` header for the name.
## Testing
Run tests with Jest:
- All tests: `npm test`
- Unit tests: `npm run test:unit` (if defined; otherwise, use `npm test -- tests/unit/`)
- Integration tests: `npm run test:integration` (if defined; otherwise, use `npm test -- tests/integration/`)
- E2E tests: `npm run test:e2e` (if defined; otherwise, use `npm test -- tests/e2e/`)
## Linting
Check code quality:
```
npm run lint
```
## Project Structure
- `src/greeting.js`: Core greeting logic.
- `src/server.js`: Express server setup.
- `tests/`: Test suites (unit, integration, e2e).
- `.eslintrc.js`: ESLint configuration.
- `.eslintignore`: Files/directories excluded from linting.
- `.nvmrc`: Node.js version specification.
- `package.json`: Project metadata, dependencies, and scripts.
## Dependencies
- **Runtime**: Express (web server), Axios (HTTP client), Supertest (testing utility).
- **Dev**: ESLint (linting), Jest (testing).
## Contributing
1. Fork the repo.
2. Create a feature branch.
3. Run tests and linting.
4. Submit a pull request.