├── .gitignore ├── img ├── 1.jpg └── docker-compose.png ├── .gitmodules ├── LICENSE ├── docker-compose.yml ├── docker-compose.dev.yml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | .DS_Store 3 | /.docker 4 | /backend 5 | /frontend -------------------------------------------------------------------------------- /img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohsensaremi/google-rank-tracker/HEAD/img/1.jpg -------------------------------------------------------------------------------- /img/docker-compose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohsensaremi/google-rank-tracker/HEAD/img/docker-compose.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "backend"] 2 | path = backend 3 | url = https://github.com/mohsensaremi/google-rank-tracker-backend.git 4 | [submodule "frontend"] 5 | path = frontend 6 | url = https://github.com/mohsensaremi/google-rank-tracker-frontend.git 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 mohsen saremi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | mongo: 5 | image: mongo:4.4 6 | restart: on-failure 7 | environment: 8 | MONGO_INITDB_ROOT_USERNAME: root 9 | MONGO_INITDB_ROOT_PASSWORD: root 10 | volumes: 11 | - './.docker/mongo/data/db:/data/db' 12 | 13 | mongo-express: 14 | image: mongo-express:0.54 15 | restart: on-failure 16 | depends_on: 17 | - mongo 18 | ports: 19 | - 8081:8081 20 | environment: 21 | ME_CONFIG_MONGODB_ADMINUSERNAME: root 22 | ME_CONFIG_MONGODB_ADMINPASSWORD: root 23 | 24 | rabbitmq: 25 | image: "rabbitmq:3-management" 26 | restart: on-failure 27 | ports: 28 | - 5672:5672 29 | - 15672:15672 30 | 31 | hub: 32 | image: selenium/hub:4.0.0-rc-1-prerelease-20210713 33 | container_name: hub 34 | 35 | chrome: 36 | image: selenium/node-chrome:4.0.0-rc-1-prerelease-20210713 37 | depends_on: 38 | - hub 39 | environment: 40 | SE_EVENT_BUS_HOST: hub 41 | SE_EVENT_BUS_PUBLISH_PORT: 4442 42 | SE_EVENT_BUS_SUBSCRIBE_PORT: 4443 43 | 44 | backend: 45 | image: mohsensaremi/google-rank-tracker-backend:latest 46 | depends_on: 47 | - mongo 48 | - rabbitmq 49 | - chrome 50 | restart: on-failure 51 | ports: 52 | - 3001:3001 53 | environment: 54 | TZ: "Asia/Tehran" 55 | APP_PORT: 3001 56 | DB_HOST: mongo 57 | DB_PORT: 27017 58 | DB_NAME: google-rank-tracker 59 | DB_USER: root 60 | DB_PASS: root 61 | MQ_HOST: rabbitmq 62 | SELENIUM_HUB_HOST: hub 63 | 64 | frontend: 65 | image: mohsensaremi/google-rank-tracker-frontend:latest 66 | ports: 67 | - 3000:80 68 | restart: on-failure -------------------------------------------------------------------------------- /docker-compose.dev.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | mongo: 5 | image: mongo:latest 6 | restart: on-failure 7 | environment: 8 | MONGO_INITDB_ROOT_USERNAME: root 9 | MONGO_INITDB_ROOT_PASSWORD: root 10 | volumes: 11 | - './.docker/mongo/data/db:/data/db' 12 | 13 | mongo-express: 14 | image: mongo-express 15 | restart: on-failure 16 | depends_on: 17 | - mongo 18 | ports: 19 | - 8081:8081 20 | environment: 21 | ME_CONFIG_MONGODB_ADMINUSERNAME: root 22 | ME_CONFIG_MONGODB_ADMINPASSWORD: root 23 | 24 | rabbitmq: 25 | image: "rabbitmq:3-management" 26 | restart: on-failure 27 | ports: 28 | - 5672:5672 29 | - 15672:15672 30 | 31 | hub: 32 | image: selenium/hub:latest 33 | 34 | chrome: 35 | image: selenium/node-chrome:latest 36 | depends_on: 37 | - hub 38 | environment: 39 | HUB_HOST: hub 40 | 41 | backend: 42 | build: 43 | context: ./backend 44 | dockerfile: Dockerfile.dev 45 | volumes: 46 | - './backend/src:/app/src' 47 | depends_on: 48 | - mongo 49 | - rabbitmq 50 | - chrome 51 | restart: on-failure 52 | ports: 53 | - 3001:3001 54 | environment: 55 | TZ: "Asia/Tehran" 56 | APP_PORT: 3001 57 | DB_HOST: mongo 58 | DB_PORT: 27017 59 | DB_NAME: google-rank-tracker 60 | DB_USER: root 61 | DB_PASS: root 62 | MQ_HOST: rabbitmq 63 | SELENIUM_HUB_HOST: hub 64 | 65 | frontend: 66 | build: 67 | context: ./frontend 68 | dockerfile: Dockerfile.dev 69 | volumes: 70 | - './frontend/src:/app/src' 71 | ports: 72 | - 3000:3000 73 | stdin_open: true 74 | environment: 75 | REACT_APP_API_URL: 'http://localhost:3001' 76 | REACT_APP_SOCKET_URL: 'http://localhost:3001' -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Google Rank Tracker 2 | ![alt header](img/1.jpg) 3 | 4 | This project will help SEO specialist to track their website pages rank in Google search result. 5 | 6 | It will use an in memory Chrome browser to search your keyword in Google and find your website rank in the search result page. 7 | 8 | ## Installation 9 | This is a docker project, so you need to install [Docker](https://docs.docker.com/engine/install) and [Docker Compose](https://docs.docker.com/compose/install) first. 10 | 11 | To install and run this project, run these commands: 12 | ``` 13 | git clone https://github.com/mohsensaremi/google-rank-tracker.git 14 | cd google-rank-tracker 15 | docker-compose up 16 | ``` 17 | It will take some time to pull images and run the application, so be patient. 18 | 19 | After running the application visit [http://localhost:3000](http://localhost:3000) and enter your websites and keywords. 20 | 21 | ### The application will update the pages rank once a day at 00:00. 22 | 23 | 24 | ## Docker Images 25 | 26 | ![alt docker compose](img/docker-compose.png) 27 | 28 | The docker-compose file contains the following images: 29 | 30 | ### [mongo](https://hub.docker.com/_/mongo) 31 | 32 | This is the data store. 33 | 34 | ### [mongo-express](https://hub.docker.com/_/mongo-express) 35 | 36 | For monitoring data store. 37 | 38 | ### [selenium/hub](https://hub.docker.com/r/selenium/hub) and [selenium/node-chrome](https://hub.docker.com/r/selenium/node-chrome) 39 | 40 | We are using this image to open a browser, search on google, and find the rank. 41 | 42 | ### [rabbitmq](https://hub.docker.com/_/rabbitmq) 43 | 44 | This is the queue for getting pages rank in order. 45 | 46 | ### [mohsensaremi/google-rank-tracker-backend](https://hub.docker.com/r/mohsensaremi/google-rank-tracker-backend) 47 | 48 | Backend for managing all the work. 49 | 50 | ### [mohsensaremi/google-rank-tracker-frontend](https://hub.docker.com/r/mohsensaremi/google-rank-tracker-frontend) 51 | 52 | The user interface for working with the application. 53 | 54 | ## Contributing 55 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 56 | 57 | ## Support 58 | 59 | 60 | Buy Me A Coffee 61 | 62 | 63 | ## License 64 | [MIT](LICENSE) --------------------------------------------------------------------------------