{"id":26851397,"url":"https://github.com/azizemir/saas-todo-app-rest-api","last_synced_at":"2025-03-30T22:31:14.386Z","repository":{"id":254111993,"uuid":"845517475","full_name":"AzizEmir/SaaS-ToDo-app-REST-API","owner":"AzizEmir","description":"User management (authorization and authentication) and task management","archived":false,"fork":false,"pushed_at":"2024-08-21T13:17:21.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-22T13:54:10.941Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AzizEmir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-21T12:04:06.000Z","updated_at":"2024-08-21T13:17:24.000Z","dependencies_parsed_at":"2024-08-21T14:07:23.907Z","dependency_job_id":null,"html_url":"https://github.com/AzizEmir/SaaS-ToDo-app-REST-API","commit_stats":null,"previous_names":["azizemir/saas-todo-app-rest-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizEmir%2FSaaS-ToDo-app-REST-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizEmir%2FSaaS-ToDo-app-REST-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizEmir%2FSaaS-ToDo-app-REST-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizEmir%2FSaaS-ToDo-app-REST-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AzizEmir","download_url":"https://codeload.github.com/AzizEmir/SaaS-ToDo-app-REST-API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246390896,"owners_count":20769475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-30T22:31:13.019Z","updated_at":"2025-03-30T22:31:14.363Z","avatar_url":"https://github.com/AzizEmir.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SaaS To-Do App REST API\n\nA REST API for user management (authorization and authentication) and task management.\n\n## Getting Started\n\n### Installation\n```bash\nnpm install\n```\n\n### Configuration\nCreate a `.env` file with the following content:\n```env\nPORT=3000\nMONGODBURI=mongodb://\u003cIP\u003e:27017/jwt-tutorial\nJWT_SECRET=your_jwt_secret\n```\n\n## API Endpoints\n\n### User Registration\n**Endpoint:** `POST /api/register`\n\n**Request Body:**\n```json\n{\n    \"firstName\": \"Test2\",\n    \"lastName\": \"Testt2\",\n    \"email\": \"test2@test2.xyz\",\n    \"password\": \"123\"\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": {\n        \"firstName\": \"Test2\",\n        \"lastName\": \"Testt2\",\n        \"email\": \"test2@test2.xyz\",\n        \"password\": \"$2a$10$bHPqcGZR1MUwcbfFUa94ZuWU4PtLwdv/wXNcH5Lc4ljaJJhWlUK9e\",\n        \"isAdmin\": false,\n        \"_id\": \"66c5c2a7c77f27d4b399f8ea\",\n        \"id\": \"1ef5fa8e-a08b-6b80-b727-34ade614f982\",\n        \"createdDate\": \"2024-08-21T10:34:15.736Z\",\n        \"__v\": 0\n    },\n    \"error\": null\n}\n```\n\n### User Login\n**Endpoint:** `POST /api/login`\n\n**Request Body:**\n```json\n{\n    \"email\": \"test2@test2.xyz\",\n    \"password\": \"123\"\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": {\n        \"token\": \"your_jwt_token_here\"\n    },\n    \"error\": null\n}\n```\n\n### Change Password\n**Endpoint:** `PATCH /api/change-password`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Request Body:**\n```json\n{\n    \"email\": \"test2@test2.xyz\",\n    \"currentPassword\": \"123\",\n    \"newPassword\": \"12345\"\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": \"Password reset successful\",\n    \"error\": null\n}\n```\n\n### Get All Users (Admin Only)\n**Endpoint:** `GET /api/users`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Response:**\n```json\n{\n    \"data\": [/* list of users */],\n    \"error\": null\n}\n```\n\n### Delete Users (Admin Only)\n**Endpoint:** `DELETE /api/users`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Request Body:**\n```json\n{\n    \"ids\": [\n        \"1ef5fa8e-a08b-6b80-b727-34ade614f982\",\n        \"1ef5fa8e-39ae-6b60-b8be-893f9225347c\"\n    ]\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": {\n        \"deletedCount\": 2\n    },\n    \"error\": null\n}\n```\n\n### Create Task\n**Endpoint:** `POST /api/tasks`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Request Body:**\n```json\n{\n    \"title\": \"Sample Task\",\n    \"description\": \"This is a sample task description.\"\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": {\n        \"title\": \"Sample Task\",\n        \"description\": \"This is a sample task description.\",\n        \"userId\": \"66c5b8f585891d379b82fcc2\",\n        \"_id\": \"66c5d601d650b34d9876c3e5\",\n        \"id\": \"1ef5fb47-2ae9-6210-92da-0498ecef85c0\",\n        \"createdDate\": \"2024-08-21T11:56:49.457Z\",\n        \"__v\": 0\n    },\n    \"error\": null\n}\n```\n\n### Get All Tasks\n**Endpoint:** `GET /api/tasks`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Response:**\n```json\n{\n    \"data\": [\n        {\n            \"_id\": \"66c5ce23de0eca361019f444\",\n            \"title\": \"Sample Task\",\n            \"description\": \"This is a sample task description.\",\n            \"userId\": \"66c5b8f585891d379b82fcc2\",\n            \"id\": \"1ef5fafc-25e4-6c10-a8ca-ae196bf9bee0\",\n            \"createdDate\": \"2024-08-21T11:23:15.665Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"66c5d274339dc9a71b965757\",\n            \"title\": \"Sample Task\",\n            \"description\": \"This is a sample task description.\",\n            \"userId\": \"66c5b8f585891d379b82fcc2\",\n            \"id\": \"1ef5fb25-4b80-6c20-a27c-fc01db6b8195\",\n            \"createdDate\": \"2024-08-21T11:41:40.194Z\",\n            \"__v\": 0\n        }\n    ],\n    \"error\": null\n}\n```\n\n### Delete Task\n**Endpoint:** `DELETE /api/tasks`\n\n**Headers:**\n```\nAuthorization: Bearer your_jwt_token_here\n```\n\n**Request Body:**\n```json\n{\n    \"ids\": [\n        \"1ef5fb47-2ae9-6210-92da-0498ecef85c0\"\n    ]\n}\n```\n\n**Response:**\n```json\n{\n    \"data\": {\n        \"deletedCount\": 1\n    },\n    \"error\": null\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizemir%2Fsaas-todo-app-rest-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazizemir%2Fsaas-todo-app-rest-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizemir%2Fsaas-todo-app-rest-api/lists"}