{"id":18266447,"url":"https://github.com/abdelrahmanbayoumi/birthday-database","last_synced_at":"2026-04-10T20:48:35.700Z","repository":{"id":177886267,"uuid":"656832543","full_name":"AbdelrahmanBayoumi/birthday-database","owner":"AbdelrahmanBayoumi","description":"The Birthday Database app is a versatile tool that helps users keep track of important birthdays, including those of their loved ones. It features real-time age display in Hijri and Georgian calendars.","archived":false,"fork":false,"pushed_at":"2024-07-25T14:40:19.000Z","size":614,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T20:40:39.373Z","etag":null,"topics":["birthday","database","nestjs"],"latest_commit_sha":null,"homepage":"https://birthday-database.azurewebsites.net/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbdelrahmanBayoumi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-06-21T18:27:06.000Z","updated_at":"2024-07-25T14:40:23.000Z","dependencies_parsed_at":"2024-01-23T15:49:02.938Z","dependency_job_id":"72165b42-cb5c-4c7d-a4dc-0cee3bf65c0d","html_url":"https://github.com/AbdelrahmanBayoumi/birthday-database","commit_stats":null,"previous_names":["abdelrahmanbayoumi/birthday-database"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbdelrahmanBayoumi%2Fbirthday-database","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbdelrahmanBayoumi%2Fbirthday-database/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbdelrahmanBayoumi%2Fbirthday-database/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbdelrahmanBayoumi%2Fbirthday-database/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbdelrahmanBayoumi","download_url":"https://codeload.github.com/AbdelrahmanBayoumi/birthday-database/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247962912,"owners_count":21024920,"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":["birthday","database","nestjs"],"created_at":"2024-11-05T11:23:22.702Z","updated_at":"2026-04-10T20:48:30.678Z","avatar_url":"https://github.com/AbdelrahmanBayoumi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=center\u003e🗓️ Birthday Database\u003c/h1\u003e\n\n\u003cp align=center\u003e\nThe Birthday Database app is a flexible tool that helps users keep track of important birthdays, including those of their loved ones. It features real-time age display in Hijri and Georgian calendars.  \n\u003c/p\u003e\n\n- [x] Backend API ([Nest.js + PostgreSQL](#-api-documentation))\n- [x] Backend API Hosted on Microsoft Azure: https://birthday-database.azurewebsites.net/\n- [x] Frontend Web App [(Angular)](https://github.com/AbdelrahmanBayoumi/age-tracker-app)\n- [x] Frontend Hosted on Firebase: https://age-tracker-site.web.app/\n- [x] UI/UX Design [(Figma)](#-uiux-design)\n\n\u003cbr\u003e\n\n\n\u003cdiv align=center\u003e\n       \n\n![Open Source](https://img.shields.io/badge/Open%20Source-%E2%9D%A4-red?style=flat) [![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAbdelrahmanBayoumi%2Fbirthday-database\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026icon=\u0026icon_color=%23E7E7E7\u0026title=Visitors+%5Btoday%2Fall+time%5D\u0026edge_flat=false)](https://hits.seeyoufarm.com) [![license](https://img.shields.io/github/license/AbdelrahmanBayoumi/birthday-database)](https://github.com/AbdelrahmanBayoumi/birthday-database/blob/main/LICENSE)\n\n\n\u003c/div\u003e\n\n\u003c!-- This app consitst of front-end and backend and UI UX Design --\u003e\n\n\n\n## 🚀 How to run\n1. Clone the repository\n\n    ```bash\n    git clone https://github.com/AbdelrahmanBayoumi/birthday-database.git\n    ```\n\n2. Install the dependencies\n    \n    ```bash\n    npm install\n    ```\n3. Create a `.env` file in the root directory like `.env.example` and fill in the required environment variables:\n    - `DATABASE_URL`: The connection URL for the PostgreSQL database.\n    - `JWT_ACCESS_SECRET`: The secret key used to sign the JWT tokens.\n    - `JWT_REFRESH_SECRET`: The secret key used to sign the JWT refresh tokens.\n    - `JWT_EMAIL_SECRET`: The secret key used to sign the JWT email verification tokens.\n    - `FROM_EMAIL`: The email address of the sender (e.g. `Birthday Database \u003cno-reply@birthday-datbase.com\u003e`).\n    - `EMAIL_PASS`: The password of the sender's email address.\n    - `HOST_URL`: The URL of the frontend application.\n    - `PORT`: The port number for the server.\n5. Push the database schema to the database using Prisma CLI\n    ```bash\n    npx prisma db push\n    ```\n6. Start the server\n    ```bash\n    npm run start:dev\n    ```\n\n\n\n\n## 👨🏻‍💻 Technologies Used\n\n- **[Nest.js](https://nestjs.com/)**: A progressive Node.js framework for building efficient and scalable server-side applications.\n- **[PostgreSQL](https://www.postgresql.org/)** (or choose your preferred database system): A powerful and reliable open-source relational database management system.\n- **[Prisma](https://www.prisma.io/)**: A modern database toolkit that provides an ORM, query builder, and migration tool.\n- **[Passport.js](http://www.passportjs.org/)**: An authentication middleware for Node.js that supports various authentication strategies.\n- **[JWT](https://jwt.io/)**: JSON Web Tokens for secure authentication and authorization.\n- **[Jest](https://jestjs.io/)**: A popular JavaScript testing framework for unit testing the backend code.\n- **[Pino](https://github.com/pinojs/pino)**: A fast and low-overhead logger for Node.js.\n- **[Swagger](https://docs.nestjs.com/openapi/introduction)**: The Swagger UI is an open source project to visually render documentation for \nan API defined with the OpenAPI (Swagger) Specification\n\n\n---\n\n## 📦 API Documentation\n\n- Refer to the API documentation for detailed information on request/response structures and authentication requirements. ⇒ [Postman](https://documenter.getpostman.com/view/19740088/2s93z5A5NX) or [Swagger](https://birthday-database.azurewebsites.net/api)\n\nThe backend API provides the following endpoints:\n\n### General\n1. **`GET /api`** - Get the API Swagger documentation.\n2. **`GET /health-check`** - Check the health of the API.\n\n### Auth\n\n1. **`POST /auth/signup`**- User signup endpoint.\n2. **`POST /auth/login`** - User login endpoint.\n3. **`GET /auth/check`** - Check user Token\n4. **`POST /auth/logout`** - User logout endpoint.\n5. **`POST /auth/refresh`**: Refresh the authentication token.\n6. **`GET /auth/verification/{token}`**: Verify the user's email address by confirming the provided verification token.\n7. **`POST /auth/resend-verification`**: Resend the verification email to the user's email address.\n8. **`POST /auth/forgot-password`**: Initiate the password reset process by sending a reset link to the user's email.\n\n### User\n\n1. **`PATCH /users/:id`** - Update user [ `fullName` or `birthday`]\n2. **`PATCH /users/{id}/change-password`** - Change user password\n2. **`DELETE /users/:id`** - Delete the authenticated user\n\n### Birthdays\n\n1. **`GET /birthdays`**: Retrieve all birthdays for the authenticated user.\n2. **`POST /birthdays`**: Create a new birthday for the authenticated user.\n3. **`GET /birthdays/:id`**: Retrieve a specific birthday by ID.\n4. **`PATCH /birthdays/:id`**: Update a specific birthday by ID.\n5. **`DELETE /birthdays/:id`**: Delete a specific birthday by ID.\n6. **`GET /birthday/relationships`**: Retrieve all distinct relationships for the authenticated user.\n\n## 🎨 UI/UX Design\n\n\n\u003cp align=center\u003e\nSee \u003ca href=\"https://www.figma.com/file/fQummxaRmDPtuE8zaglFRW/Age-Tracker-App?type=design\u0026node-id=0%3A1\u0026mode=design\u0026t=iQSoKL7BNwAdGmjn-1\"\u003eFigma UI Prototype\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://www.figma.com/file/fQummxaRmDPtuE8zaglFRW/Age-Tracker-App?type=design\u0026node-id=0%3A1\u0026mode=design\u0026t=iQSoKL7BNwAdGmjn-1\"\u003e\n\u003cimg src=\"https://github.com/AbdelrahmanBayoumi/birthday-database/assets/48678280/23b329cb-628f-4589-8aa1-0166ee02c308\" alt=\"UI Prototype\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\n## 💡 Contributing \nIf you want to contribute to this project and make it better with new ideas, your pull request is very welcomed.\nIf you find any issue just put it in the repository issue section, thank you.\n\n## 📝 License\nThis project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.\n\n\u003cdiv align=center\u003e\n\n\u003ch2\u003e🌟Star this repository🌟\u003c/h2\u003e\n\nPlease ⭐️ this repo and share it with others\n       \n       \n\u003c/div\u003e\n\u003cbr\u003e\n\n-----------\n\n\u003ch6 align=\"center\"\u003eسبحَانَكَ اللَّهُمَّ وَبِحَمْدِكَ، أَشْهَدُ أَنْ لا إِلهَ إِلأَ انْتَ أَسْتَغْفِرُكَ وَأَتْوبُ إِلَيْكَ\u003c/h6\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdelrahmanbayoumi%2Fbirthday-database","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdelrahmanbayoumi%2Fbirthday-database","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdelrahmanbayoumi%2Fbirthday-database/lists"}