{"id":20007376,"url":"https://github.com/the-sabra/o-shortener","last_synced_at":"2026-03-07T07:33:37.236Z","repository":{"id":166353574,"uuid":"641835197","full_name":"the-sabra/O-shortener","owner":"the-sabra","description":"if you need to short URL clone it and make short URLs ","archived":false,"fork":false,"pushed_at":"2024-07-04T16:19:59.000Z","size":251,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T18:49:49.722Z","etag":null,"topics":["javascript","js","mysql","mysql-database","nestjs","nestjs-backend","rest-api","restful-api","ts","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/the-sabra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2023-05-17T09:07:03.000Z","updated_at":"2025-04-16T14:46:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"8782ee84-2c18-4296-aa8a-778385ccb215","html_url":"https://github.com/the-sabra/O-shortener","commit_stats":null,"previous_names":["omarsabra1/o-shortener","the-sabra/o-shortener"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/the-sabra/O-shortener","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-sabra%2FO-shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-sabra%2FO-shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-sabra%2FO-shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-sabra%2FO-shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/the-sabra","download_url":"https://codeload.github.com/the-sabra/O-shortener/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-sabra%2FO-shortener/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30209740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["javascript","js","mysql","mysql-database","nestjs","nestjs-backend","rest-api","restful-api","ts","typescript"],"created_at":"2024-11-13T06:16:14.419Z","updated_at":"2026-03-07T07:33:37.190Z","avatar_url":"https://github.com/the-sabra.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview \nO-shortener is used to make short urls \n\n## Built With\n[![Nest][nest]][Nest-url] \n[![Mysql]][mysql-url] \n[![Prisma]][prisma-url] \n[![TypeScript]][typescript-url] \n[![Jest]][jest-url]\n![docker]\n[![Redis]][redis]\n\n\n## API Endpoints\n  * `POST /auth/sighup` : Create a new User\n  * `GET /:short_code` :   Redirect to the original URL based on the provided short code.\n\nFor detailed documentation and examples, refer to the [API Documentation](https://documenter.getpostman.com/view/22968167/2s93sabtNc) file.\n\n\n## Installation\n\n1- clone the Repo \n\n```bash\ngit clone https://github.com/omarsabra1/O-shortener\n```\n\n```bash\ncd o-shortener\nnpm install\n```\n\n## Running the app\n\n\n```bash\n\n# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prod\n\n```\n\n## How code is work \n---------\nNOTE : **The controller mange the routes only but the services for business logic and connecting With ORM** \n* `main.ts` : The entry point of the application.\n* `urls/controller/urls.controller.ts` : Handles the creation of shortened URLs.\n* `prismaService` : Is used to connect  Prisma Client.\n* `app.controller.ts` : Handles the redirection to the original URLs.\n* `auth/controller/auth.controller.ts` : Handles Authentication and creating user \n* `auth/guard/auth/auth.guard.ts` : Verifying JWT Token\n* `caching` : Handle the caching layer in the app\n\n\n## License\nO-shortener under the  [MIT licensed](LICENSE.txt).\n\n## Contact \n[![LinkedIn]][LinkedIn-profile]\n[![Gmail]][email]\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n[nest]: https://img.shields.io/badge/nestjs-%23E0234E.svg?style=for-the-badge\u0026logo=nestjs\u0026logoColor=white\n[MySQL]: https://img.shields.io/badge/mysql-%2300f.svg?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\n[Prisma]: https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge\u0026logo=Prisma\u0026logoColor=white\n[Jest]: https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge\u0026logo=jest\u0026logoColor=white\n[TypeScript]: https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\n[docker]: https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[Redis]: https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white\n[LinkedIn]: https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\n[Gmail]: https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\n\n[nest-url]: https://nestjs.com/\n[typeScript-url]: https://www.typescriptlang.org/\n[prisma-url]: https://www.prisma.io/\n[jest-url]: https://jestjs.io/\n[mysql-url]: https://www.mysql.com/\n[linkedIn-profile]: https://www.linkedin.com/in/omar-sabra/\n[email]: omarsabra509@gmail.com\n[redis]: https://redis.io/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-sabra%2Fo-shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-sabra%2Fo-shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-sabra%2Fo-shortener/lists"}