{"id":15332495,"url":"https://github.com/slachiewicz/app","last_synced_at":"2025-04-15T03:02:23.505Z","repository":{"id":85553836,"uuid":"56609248","full_name":"slachiewicz/app","owner":"slachiewicz","description":":card_index: User interface for GM","archived":false,"fork":false,"pushed_at":"2024-02-08T03:31:12.000Z","size":2736,"stargazers_count":0,"open_issues_count":4,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T03:02:16.183Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slachiewicz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-04-19T15:32:38.000Z","updated_at":"2022-08-09T19:41:24.000Z","dependencies_parsed_at":"2023-07-21T09:32:42.991Z","dependency_job_id":null,"html_url":"https://github.com/slachiewicz/app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slachiewicz%2Fapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slachiewicz%2Fapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slachiewicz%2Fapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slachiewicz%2Fapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slachiewicz","download_url":"https://codeload.github.com/slachiewicz/app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997083,"owners_count":21195798,"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":[],"created_at":"2024-10-01T09:59:01.312Z","updated_at":"2025-04-15T03:02:23.486Z","avatar_url":"https://github.com/slachiewicz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GM Contact Management\n\n[![Build Status](https://travis-ci.org/FAC-GM/app.svg?branch=master)](https://travis-ci.org/FAC-GM/app)\n[![Code Climate](https://codeclimate.com/github/FAC-GM/app/badges/gpa.svg)](https://codeclimate.com/github/FAC-GM/app)\n[![Dependency Status](https://david-dm.org/FAC-GM/app.svg)](https://david-dm.org/FAC-GM/app)\n[![codecov.io](https://codecov.io/github/FAC-GM/app/coverage.svg?branch=master)](https://codecov.io/github/FAC-GM/app?branch=master)\n\n## What?\n\nThis application allows specified members of a team to search through\ncontacts stored in an ElasticSearch database.\n\n# How?\n\n### We use following technologies:\n\n* HTML5, CSS3, Javascript\n* [Nodejs](https://nodejs.org/en/)\n* [Hapijs](http://hapijs.com/)\n  * Main packages: env2, Handlebars, Inert, Vision\n  * Testing: Lab, Code\n* Databases:\n  * [ElasticSearch](https://www.elastic.co/)\n  * [Redis](http://redis.io/)\n\n#### Database structure with example [here](https://github.com/FAC-GM/app/blob/master/DATA.md)\n\n## Running the App *Locally*\n\n\nClone the Git repository from GitHub:\n\n```sh\ngit clone git@github.com:FAC-GM/app.git \u0026\u0026 cd app\n```\n\n### ElasticSearch (*our primary database*)\n\nYou will need to have ***ElasticSearch*** running on your local\nmachine for this to work.  \nIf you are on Linux/Mac and ***don't want*** to install the Java Runtime\n*because* [***Java*** *is* ***insecure***](https://goo.gl/cqEhN4)  \nwe *recommend* you use [***Vagrant***](https://github.com/dwyl/learn-vagrant)\nto run ElasticSearch in a Virtual Machine.  \n\nWe have included a `Vagrantfile` with the *bare minimum* you need to\nget ElasticSearch up and running. Provided you already have\nVagrant and VirtualBox installed on your machine, you can boot the ES VM\nwith:\n\n```sh\nvagrant up\n```\n\n\n### `.env` file\n\nyou will also need to have a `.env` file in the root of your project\nwith the following variables:\n\n```sh\n# SEARCHBOX_URL=http://paas:password@eu-west-1.searchly.com # # Ask dev team for this\nSEARCHBOX_URL=http://localhost:9200\nPORT=8000\nES_INDEX=gmcontact\nES_TYPE=contacts\nRESULTS_PER_PAGE=10\nJWT_SECRET= # Ask dev team for this\nBASE_URL=http://localhost:8000\n# Variable with authorised emails\n#Gm app\nGOOGLE_CLIENT_ID= # Ask dev team for this\nGOOGLE_CLIENT_SECRET= # Ask dev team for this\nMAP_ID_USER= # Ask dev team for this\n```\nAsk a member of the dev team for the `SEARCHBOX_URL` variable if you\nwant to access the *hosted* ElasticSearch Database.\nThere are a number of other variables missing from example above which are available to the dev team.\n\nThe 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](https://github.com/FAC-GM/app/issues/215) and [issue 238](https://github.com/FAC-GM/app/issues/238)\n\n### Install *node.js* dependencies\n\n```sh\nnpm install\n```\n\n### Run the Unit Tests\n\n```sh\nnpm test\n```\n\n### Boot the App\n\n```sh\nnpm start\n```\n\nNow visit http://localhost:8000 in your browser to view the site.\n\n### Allowing new team members access to the app\nAsk the **dev team** to update the variable that restricts access.\n\n\n## Functionality\n\nA running list of the of the functionality in the app as it becomes available.\n\n+ [Login via Google](https://github.com/dwyl/hapi-auth-github), access restricted to specific team members\n\n+ Initials of who on the team a contact is connected to are displayed\n _(in the example below, David Dupont is connected to our current dev team - Simon L and Anita C)_\n\n![Initials-of-who-contact-is-connected-to](wireframes/initials.png)\n\n* 'Favourite' contact profiles by clicking the grey star in the corner of the profile page\n\n![favouriting-a-contact-functionality](wireframes/star2.png)\n\n+ 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\n\n![how-favourites-appear-in-search-results](wireframes/favourite1.png)\n\n+ Search keywords are highlighted in the search results and profile pages to facilitate quick scanning of the information\n\n![search-keyword-highlighted-in-search](wireframes/keywords.png)\n\n![search-keyword-highlighted-in-profile](wireframes/candidateProfile.png)\n\n+ Symbol in search results to quickly identify if an email address is available for contact\n\n![email-indicator-screenshot](wireframes/email-indicator-screenshot.png)\n\n+ Searching query in following fields such as: job, fullname, location, company and skills\n\n![query-search-field](wireframes/search.png)\n\nYou can search for multiple skills if you separate the each skill with a comma:\n\n![query-skills](wireframes/search_skills_multiple.png)\n\n+ Adding notes to a profile: status, company and note.\n\n![query-skills](wireframes/note.png)\n\n+ Status-label display on main page as well as on candidate page\n\n![display-status](wireframes/status.png)\n\n![display-status-candidate-view](wireframes/candidate-view-status.png)\n\n+ Display pie-chart to indicate match-score for search results\n\n- 75% match is shown as below:\n\n![match-score](wireframes/match-score.png)\n\n+ Display all connection to each user when clicking on initials\n\n- by clicking on initials (top right corner) as shown under:\n\n![initials](wireframes/initials-right.png)\n\n- list of user connections\n\n![all-connections](wireframes/all-connections.png)\n\n+ Dashboard for user's candidate's statuses\n\n![dashboard](wireframes/dash-final.png)\n\n+ Home button at the top of each page\n\n![home](wireframes/home-button.png)\n\n+ Sending emails through the application\n\n  - send emails to multiple candidates by clicking on relevant checkboxes\n  - send email to candidate from candidate view page\n\n+ Email indicator on home page and candidate detailed view page (this feature replaces the basic email indicator)\n\n  - if an email has been sent within a month, we display red 'sent icon' with text: Emailed within a month\n\n  ![email-indicator-red](wireframes/email_within_month.png)\n\n  - if an email has been sent within 3 months time, we display amber'sent icon' with text: Emailed in less than 3 months\n\n  ![email-indicator-amber](wireframes/email_within_3months.png)\n\n  - if email has been sent more than 3 months ago: we display green 'sent icon' with text: Emailed over 3 months ago\n\n  ![email-indicator-green](wireframes/email_over_3months.png)\n\n+ Personal signatures match to all the users are included in the email\n\n  ![email-dash-signature](wireframes/email-dash.png)\n\n+ Dynamically populating candidates first names and text ```Hi {name}``` when sending an email in a message area\n\n+ Blacklist feature\n\n  - if the candidate is the client employee, we display following indicator:\n\n  ![client-employee-indicator](wireframes/kayak.png)\n\n  - disabled email checkbox for client employee and candidate with status prevents accidently sending email\n\n+ Merging candidates coming from the website\n\n  - following image on teh home page indicates the new candidate coming from the website\n\n  ![website-candidate](wireframes/website-candidate.png)\n\n  - jobs applied by the relevant candidate\n\n  ![job-aplication](job-aplication.png)\n\n\n## Working with this repo\nOur [product backlog is our list of issues](https://github.com/FAC-GM/app/issues).\n\nWe use labels to manage these. The most interesting ones are:\n+ `feature idea` - added to features that are just in idea form for now rather than _definitely_ required\n+ `priority...` - labels starting with 'priority' denote the priority of the task from 1 to 5, with 1 being the highest\n+ `T...` - 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 complete\n  + `m` = minutes\n  + `h` = hours\n  + `d` = days\n+ `in progress` - denotes which tasks are currently being worked on\n+ `help wanted` - used mostly internally by the dev team when outside help is required to move an issue forward\n+ `technical` - used **by the dev team** to denote technical tasks\n\n## Google Analytics\n\nGoogle Analytics is enabled for all pages of the App.\nIf you want access to the stats, please ask a member of the dev team.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslachiewicz%2Fapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslachiewicz%2Fapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslachiewicz%2Fapp/lists"}