Add optional name + docs (#25)
* Add optional name * docs: add README.md with project documentation
This commit is contained in:
81
README.md
Normal file
81
README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user