It's already online: Manage My Review
This project is a web application to generate and manage businesses Google Review Links
based on their location.
The two subsystems being part of this project are:
- Generator Single webpage available on internet for all unauthenticated users for the generation of reviews links.
- Manager: Only accessible via
/login
path. It manages the already created Google Review Links.
A Google Review Link is a URL used to leave a review of a business or place. Once the user access the generator page it fist enters the place location. The system will find the correct address, and then it is asked to enter a valid email address to send the review. Once both of them, the place address and the contact email address are correctly provided, the system generates the review link and display it. Also, an email is sent with the same information.
A QR Code is generated holding the link. That QR code can be used by the business owners to print it and locate it in the business to gain more review amounts.
- Symfony
- jQuery
- Sendgrid
- OpenAPI
- Google reCaptchaV3
- Google Place API
Once the project is cloned via git
or copied via ftp
or directly on a filesystem the following must me executed.
# cd google_review_manager
# composer install
# npm install
# gulp run
For security reasons the .env
file is not included in this repo. It's a task of the server
where this project will be deployed to create it and correctly secure it with the right file permissions.
There are mandatory environmental variables that need to be created in that file:
APP_ENV: The environment where the system will run.
APP_SECRET: This is a string that should be unique to your application. It's commonly used to add more entropy to security related operations. Its value should be a series of characters, numbers and symbols chosen randomly and the recommended length is around 32 characters. Reference: https://symfony.com/doc/current/reference/configuration/framework.html#secret
DATABASE_URL: Database string connection
DATABASE_URL_CONSOLE: (Optional) Database string connection for development environment using docker. All the operations performed on the terminal like commands require to use this value as string database connection. The parameter DATABASE_URL should be disabled.
MAILER_DSN: Mailer DSN value. This system works using SendGrid as email server provider.
To secure the used api keys and other sensitive information never the values are typed on the .env file. Instead, it is being used Secrets, a Symfony feature. The secrets hold the real value of the env variables.
It's responsibility of the developer to create the secrets for each env.
All the secrets should be created by running the following command:
php bin/console secrets:set SECRET_NAME_EAMPLE
See secrets doc for further information.
For security reason the file config/secrets/dev/dev.decrypt.private.php
for dev env and
config/secrets/prod/prod.decrypt.private.php
for production env
are not part of the delivered code. They are used to decrypt sensitive information.
It's responsibility of the developer to copy the files into the config/secrets/dev
and config/secrets/prod
directories respectively on the server.
Note: Those files are excluded in the .gitignore
file.
The variables to save as secrets are:
- GOOGLE_MAP_API_KEY: Holds the project Google API Key for developers.
- SENDGRID_API_KEY: Holds the SendGrid API key used to send emails via SendGrid API.
- SENDGRID_INTERNAL_TO_EMAIL: Holds an internal email address used as administrator email. This is useful when it’s required to generate an email to the system administrator.
- SENDGRID_SENDER_EMAIL: An email address used as sender. All the emails will be sent by this sender.
- SYS_ADMIN_EMAIL: The email address of the system administrator. Useful for contact.
- SYS_ADMIN_LINKEDIN_PROFILE_URL: Holds the system administrator or system’s owner profile on Indeed.
- SYS_ADMIN_PERSONAL_PAGE_URL: Holds the administrator personal page or organization web URL.
- SYS_ADMIN_PHONE: Holds the main contact phone.
- REDIS_HOST: Holds the redis host machine.
- REDIS_PORT: Holds the redis port on the host machine.
- REDIS_PASSWORD: Holds the redis password.
- RECAPTCHA_V3_GRM_SITE_KEY Holds the site key used by Google reCaptcha V3
- RECAPTCHA_V3_GRM_SECRET_KEY Holds the secret key used by Google reCaptcha V3
- GOOGLE_MEASUREMENT_ID Holds the Google Analytic key.
Create a folder:
mkdir -p public/google_reviews/qr_codes
The following will build the database structure:
php bin/console doctrine:migrations:migrate
Yenier Jimenez
http://yenierjimenez.net
yjmorales86@gmail.com