This application allows specified members of a team to search through contacts stored in an ElasticSearch database.
- HTML5, CSS3, Javascript
- Nodejs
- Hapijs
- Main packages: env2, Handlebars, Inert, Vision
- Testing: Lab, Code
- Databases:
Database structure with example here
Clone the Git repository from GitHub:
git clone [email protected]:FAC-GM/app.git && cd app
You will need to have ElasticSearch running on your local
machine for this to work.
If you are on Linux/Mac and don't want to install the Java Runtime
because Java is insecure
we recommend you use Vagrant
to run ElasticSearch in a Virtual Machine.
We have included a Vagrantfile
with the bare minimum you need to
get ElasticSearch up and running. Provided you already have
Vagrant and VirtualBox installed on your machine, you can boot the ES VM
with:
vagrant up
you will also need to have a .env
file in the root of your project
with the following variables:
# SEARCHBOX_URL=http://paas:[email protected] # # Ask dev team for this
SEARCHBOX_URL=http://localhost:9200
PORT=8000
ES_INDEX=gmcontact
ES_TYPE=contacts
RESULTS_PER_PAGE=10
JWT_SECRET= # Ask dev team for this
BASE_URL=http://localhost:8000
# Variable with authorised emails
#Gm app
GOOGLE_CLIENT_ID= # Ask dev team for this
GOOGLE_CLIENT_SECRET= # Ask dev team for this
MAP_ID_USER= # Ask dev team for this
Ask a member of the dev team for the SEARCHBOX_URL
variable if you
want to access the hosted ElasticSearch Database.
There are a number of other variables missing from example above which are available to the dev team.
The MAP_ID_USER environment variable is used to map the id from the user to their first name. We are using the ids to know who creates notes and who is the "owner" of a candidate. However the application shouldn't display the id of the user but the first name and it's where MAP_ID_USER is useful. see the discussion on Github for more details: issue 215 and issue 238
npm install
npm test
npm start
Now visit http://localhost:8000 in your browser to view the site.
Ask the dev team to update the variable that restricts access.
A running list of the of the functionality in the app as it becomes available.
-
Login via Google, access restricted to specific team members
-
Initials of who on the team a contact is connected to are displayed (in the example below, David Dupont is connected to our current dev team - Simon L and Anita C)
- 'Favourite' contact profiles by clicking the grey star in the corner of the profile page
- Quickly visualise who has been favourited in the search results (denoted by a yellow star) and see a full list by clicking on the yellow star in the top right hand corner of the app
- Search keywords are highlighted in the search results and profile pages to facilitate quick scanning of the information
- Symbol in search results to quickly identify if an email address is available for contact
- Searching query in following fields such as: job, fullname, location, company and skills
You can search for multiple skills if you separate the each skill with a comma:
- Adding notes to a profile: status, company and note.
- Status-label display on main page as well as on candidate page
- Display pie-chart to indicate match-score for search results
- 75% match is shown as below:
- Display all connection to each user when clicking on initials
- by clicking on initials (top right corner) as shown under:
- list of user connections
- Dashboard for user's candidate's statuses
- Home button at the top of each page
-
Sending emails through the application
- send emails to multiple candidates by clicking on relevant checkboxes
- send email to candidate from candidate view page
-
Email indicator on home page and candidate detailed view page (this feature replaces the basic email indicator)
- if an email has been sent within a month, we display red 'sent icon' with text: Emailed within a month
- if an email has been sent within 3 months time, we display amber'sent icon' with text: Emailed in less than 3 months
- if email has been sent more than 3 months ago: we display green 'sent icon' with text: Emailed over 3 months ago
-
Personal signatures match to all the users are included in the email
-
Dynamically populating candidates first names and text
Hi {name}
when sending an email in a message area -
Blacklist feature
- if the candidate is the client employee, we display following indicator:
- disabled email checkbox for client employee and candidate with status prevents accidently sending email
-
Merging candidates coming from the website
- following image on teh home page indicates the new candidate coming from the website
- jobs applied by the relevant candidate
Our product backlog is our list of issues.
We use labels to manage these. The most interesting ones are:
feature idea
- added to features that are just in idea form for now rather than definitely requiredpriority...
- labels starting with 'priority' denote the priority of the task from 1 to 5, with 1 being the highestT...
- labels starting with 'T' denote time estimates for the task; these are added by the dev team only, e.g.T1d
will require one day to completem
= minutesh
= hoursd
= days
in progress
- denotes which tasks are currently being worked onhelp wanted
- used mostly internally by the dev team when outside help is required to move an issue forwardtechnical
- used by the dev team to denote technical tasks
Google Analytics is enabled for all pages of the App. If you want access to the stats, please ask a member of the dev team.