This is a RESTful API for managing users, patients, and heart rate data, built using Node.js, Express, and MongoDB. The system allows user registration & login, patient management, and heart rate data tracking.
git clone https://github.com/Vt221001/janitri_Backend.git
cd janitri-backendnpm installCreate a .env file in the root directory and add:
MONGO_URI=
ACCESS_TOKEN_SECRET =
REFRESH_TOKEN_SECRET =
### **4️⃣ Start the Server**
```sh
npm start
Server will run at: http://localhost:3000
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/users/register |
Register a new user |
POST |
/api/users/login |
Login user |
Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "securepassword"
}Response:
{
"statusCode": 201,
"data": {
"name": "John Doe",
"email": "johndo1e@example.com",
"password": "$2a$10$q8IcIBnYNWNujC6VZAhUn.7w1wUxw7KiqtrBXHnImBf0bf.xiSooK",
"refreshToken": "",
"_id": "67ac40a0dbb8d04267d799d3",
"createdAt": "2025-02-12T06:33:04.811Z",
"updatedAt": "2025-02-12T06:33:04.811Z",
"__v": 0
},
"message": "User created successfully",
"success": true
}Request Body:
{
"email": "john@example.com",
"password": "securepassword"
}Response:
{
"statusCode": 200,
"data": {
"user": {
"_id": "67ac29be8ea3265f42962892",
"name": "John Doe",
"email": "johndoe@example.com",
"createdAt": "2025-02-12T04:55:26.240Z",
"updatedAt": "2025-02-12T06:34:28.414Z",
"__v": 0,
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3YWMyOWJlOGVhMzI2NWY0Mjk2Mjg5MiIsImlhdCI6MTczOTM0MjA2OCwiZXhwIjoxNzQxMDcwMDY4fQ.sQKmkS5xwVEac63lfuuhA5fbwaMkICxMkBjnrv8AgLI"
},
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3YWMyOWJlOGVhMzI2NWY0Mjk2Mjg5MiIsImlhdCI6MTczOTM0MjA2OCwiZXhwIjoxNzM5OTQ2ODY4fQ.4shTmWSEZy2dhqBgyjIHssVlXonDS0BxuDrE8Oxl7pc",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3YWMyOWJlOGVhMzI2NWY0Mjk2Mjg5MiIsImlhdCI6MTczOTM0MjA2OCwiZXhwIjoxNzQxMDcwMDY4fQ.sQKmkS5xwVEac63lfuuhA5fbwaMkICxMkBjnrv8AgLI"
},
"message": "User logged in successfully",
"success": true
}| Method | Endpoint | Description |
|---|---|---|
POST |
/api/patients |
Add a new patient |
GET |
/api/patients/:patientId |
Get patient details |
Request Body:
{
"name": "Amit Sharma",
"age": 28,
"gender": "Male",
"createdBy": "67ac29be8ea3265f42962891"
}
**Response:**
```json
{
"statusCode": 201,
"data": {
"name": "Amit Sharma",
"age": 28,
"gender": "Male",
"createdBy": "67ac29be8ea3265f42962892",
"_id": "67ac414adbb8d04267d799dc",
"createdAt": "2025-02-12T06:35:54.559Z",
"updatedAt": "2025-02-12T06:35:54.559Z",
"__v": 0
},
"message": "Patient created successfully",
"success": true
}Response:
{
"statusCode": 200,
"data": [
{
"_id": "67ac37aa1b05718114c7a199",
"name": "Amit Sharma",
"age": 28,
"gender": "Male",
"createdBy": "67ac29be8ea3265f42962892",
"createdAt": "2025-02-12T05:54:50.626Z",
"updatedAt": "2025-02-12T05:54:50.626Z",
"__v": 0
},
{
"_id": "67ac414adbb8d04267d799dc",
"name": "Amit Sharma",
"age": 28,
"gender": "Male",
"createdBy": "67ac29be8ea3265f42962892",
"createdAt": "2025-02-12T06:35:54.559Z",
"updatedAt": "2025-02-12T06:35:54.559Z",
"__v": 0
}
],
"message": "Patients fetched",
"success": true
}| Method | Endpoint | Description |
|---|---|---|
POST |
/api/heartrate |
Add heart rate data |
GET |
/api/heartrate/:patientId |
Get heart rate data for a patient |
DELETE |
/api/heartrate/:heartRateId |
Delete heart rate record |
Request Body:
{
"patient": "67ac37aa1b05718114c7a199",
"bpm": 75,
"recordAt": "2025-02-12T14:00:00Z"
}
Response:
{
"statusCode": 201,
"data": {
"patient": "67ac37aa1b05718114c7a199",
"bpm": 75,
"recordAt": "2025-02-12T14:00:00.000Z",
"_id": "67ac3c20fc1316ddbb003307",
"__v": 0
},
"message": "HeartRate Added successfully",
"success": true
}Response:
{
"statusCode": 200,
"data": [
{
"_id": "67ac3bc91681c277e67a5c3c",
"patient": "67ac37aa1b05718114c7a199",
"bpm": 75,
"recordAt": "2025-02-12T14:00:00.000Z",
"__v": 0
},
{
"_id": "67ac3c20fc1316ddbb003307",
"patient": "67ac37aa1b05718114c7a199",
"bpm": 75,
"recordAt": "2025-02-12T14:00:00.000Z",
"__v": 0
}
],
"message": "HeartRates fetched",
"success": true
}Response:
{
"statusCode": 200,
"data": null,
"message": "HeartRate deleted",
"success": true
}- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose ORM)
- Validation: JOI
- Error Handling: Custom Middleware
- Environment Variables: dotenv
- Authentication is basic (only email-password )JWT bcrtjs.
- Heart rate data does not require real-time updates (can be fetched via API calls).
- Patients and heart rate data are linked using
patientId.
- ✅ JWT-based authentication.
- GitHub Repository: [https://github.com/Vt221001/janitri_Backend]