{"id":19227470,"url":"https://github.com/khshourov/dictionary-api","last_synced_at":"2026-04-19T06:42:14.462Z","repository":{"id":260109182,"uuid":"878828722","full_name":"khshourov/dictionary-api","owner":"khshourov","description":"Provide a Web interface to search for lexical entries of a word","archived":false,"fork":false,"pushed_at":"2024-11-11T18:20:23.000Z","size":402,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-04T22:20:19.256Z","etag":null,"topics":["google-oauth2","nestjs-backend","reactjs","rest-api"],"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/khshourov.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":"2024-10-26T08:10:53.000Z","updated_at":"2024-11-11T18:20:31.000Z","dependencies_parsed_at":"2024-10-29T16:19:25.528Z","dependency_job_id":null,"html_url":"https://github.com/khshourov/dictionary-api","commit_stats":null,"previous_names":["khshourov/dictionary-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khshourov%2Fdictionary-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khshourov%2Fdictionary-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khshourov%2Fdictionary-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khshourov%2Fdictionary-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khshourov","download_url":"https://codeload.github.com/khshourov/dictionary-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240301346,"owners_count":19779804,"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":["google-oauth2","nestjs-backend","reactjs","rest-api"],"created_at":"2024-11-09T15:23:29.830Z","updated_at":"2026-04-19T06:42:09.433Z","avatar_url":"https://github.com/khshourov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\n\u003ch3 align=\"center\"\u003eDictionary API\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    This project provides a web interface around npm package \u003ca href=\"https://www.npmjs.com/package/dictionary-scraper\"\u003edictionary-scraper\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/khshourov/dictionary-api/wiki\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"#\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/khshourov/dictionary-api/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=bug_report.md\u0026title=\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/khshourov/dictionary-api/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=feature_request.md\u0026title=\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nThis project is primarily built on the [dictionary-scraper](https://www.npmjs.com/package/dictionary-scraper) npm package. It enhances the package’s functionality by adding caching and access information. Additionally, it provides Google authentication to allow the application to store records for each user. The application also includes a minimal web interface, providing users with exactly what they need.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n### Built With\n\n* [![Nest][NestJS]][NestJS-url]\n* [![React][React.js]][React-url]\n* [![Postgresql][Postgresql]][Postgresql-url]\n* [![Docker][Docker]][Docker-url]\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\n### Prerequisites\n\n* Node.js 22\n* Docker\n* Google OAuth 2.0 secret. Go to [Google Cloud](https://console.cloud.google.com) to create your own client-id and client-secret.\n* Postgresql\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n### Installation\n\n#### - Local installation (without docker)\n1. Copy .env.example to .env.production and set all the necessary properties.\n2. Run `yarn app:install`.\n3. Run `yarn start:prod` to launch the application.\n\nVisit [http://localhost:3000](http://localhost:3000) to access the web page.\n\n#### - Local installation (with docker-compose)\nThe docker-compose.yml file includes a PostgreSQL container, so no additional setup is needed to configure a database.\n\n1. Copy .env.example to .env and set all the required properties.\n2. Run `docker-compose up migrate --build \u0026\u0026 docker-compose down migrate --rmi local --volumes`. This command will start the PostgreSQL server, create the database, and set up the necessary tables.\n3. Start the application container with  `docker-compose up app -d --build`\n\nVisit [http://localhost:3000](http://localhost:3000) to access the web page.\n\n#### - Local installation (with docker)\nThis installation only creates the app container. You will need to set up your own PostgreSQL instance separately.\n\n1. Copy .env.example to .env and set all the required properties.\n2. Run `docker-compose up migrate --build \u0026\u0026 docker-compose down migrate --rmi local --volumes`. This command will start the PostgreSQL server, create the database, and set up the necessary tables.\n3. Build app image: `docker build -t app .`\n4. Start the application container with `docker run -d --name app --env-file .env -p 3000:3000 app`\n\nVisit [http://localhost:3000](http://localhost:3000) to access the web page.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\n\n- [ ] Delete/Export data\n\nSee the [open issues](https://github.com/khshourov/dictionary-api/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nKamrul H Shourov - shourov.kamrul@gmail.com\n\nProject Link: [https://github.com/khshourov/dictionary-api](https://github.com/khshourov/dictionary-api/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n## Acknowledgments\n\n* [Docker image size optimization](https://dev.to/andreasbergstrom/configure-typeorm-migrations-in-5-minutes-2njg)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n[NestJS]: https://img.shields.io/badge/-NestJs-ea2845?style=flat-square\u0026logo=nestjs\u0026logoColor=white\n[NestJS-url]: https://nestjs.com/\n[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[React-url]: https://reactjs.org/\n[Postgresql]: https://img.shields.io/badge/postgresql-4169e1?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\n[Postgresql-url]: https://www.postgresql.org/\n[Docker]: https://img.shields.io/badge/docker-257bd6?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[Docker-url]: https://www.docker.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhshourov%2Fdictionary-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhshourov%2Fdictionary-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhshourov%2Fdictionary-api/lists"}