{"id":18826272,"url":"https://github.com/otaviojava/filtering_matches","last_synced_at":"2026-01-21T05:30:19.586Z","repository":{"id":141704383,"uuid":"179263469","full_name":"otaviojava/filtering_matches","owner":"otaviojava","description":null,"archived":false,"fork":false,"pushed_at":"2019-04-05T01:04:53.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-30T05:29:27.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"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/otaviojava.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-03T10:06:22.000Z","updated_at":"2019-04-05T01:04:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"626eb95d-6402-4c1c-9ea1-70d8d2036c87","html_url":"https://github.com/otaviojava/filtering_matches","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/otaviojava%2Ffiltering_matches","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otaviojava%2Ffiltering_matches/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otaviojava%2Ffiltering_matches/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/otaviojava%2Ffiltering_matches/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/otaviojava","download_url":"https://codeload.github.com/otaviojava/filtering_matches/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239763670,"owners_count":19692800,"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-11-08T01:04:07.350Z","updated_at":"2026-01-21T05:30:19.525Z","avatar_url":"https://github.com/otaviojava.png","language":"Java","readme":"## Filtering Matches\n\nThis exercise requires a little bit more back end and a little bit less front end.\nPlease provide some code which allows you to filter on a prebuilt set of filters (using server side filtering)\nIf you're stronger on the frontend, that's fine to concentrate on that more - just let us know in the notes you've done so.\nPlease, however, ensure both the client and server side is *well tested* and *clean code* and that the code works before you submit your code.\n\n### Filtering Details\n\n| Filter | Details |\n|--------|---------|\n| Has photo | Boolean yes / no filter |\n| In contact | Boolean yes / no filter |\n| Favourite | Boolean yes / no filter |\n| Compatibility Score | range: from 1% to 99% |\n| age | range: from 18 years old until \u003e 95 years old |\n| height | range: from 135cm to \u003e 210cm |\n| distance in km | single selection: lower bound \u003c 30 km, upper bound \u003e 300 km | \n\n\n### Server side\n\nThe server side can be in whatever language you are strong with.  \nWe mainly use js, java, and a little bit of php and go, so please try to use one of them that you're stronger with.\n\nThere is a small json file provided [database/matches.json](./database/matches.json).  \nPlease use this data as the basis for your service.\nIf you opt to use a db, please import this data as your starting point, and ensure you provide full setup script or instructions for the db.\nYou can use whatever storage you think fits the problem.\n\n\n### Client side\n\nThe client side can be either web or app.\nIf it's web, please ensure it can be used on multiple devices.\nCompletely up to you what frameworks you use; on our own code we use angular 2 or react for web, and all the usual libs for android and iOS that allows MVVM, MVP, and easier testing.\n\n##### Web Requirements\nPlease provide an initial list view with all existing matches provided in the [database/matches.json](./database/matches.json) file.\nYou should also have a number of filters available, as listed above.\nIf you use range sliders or any components where you have dragging actions etc, please ensure ensure they are cross device compatible\nNote - for filtering \"distance in km\" assume that the user has logged in as one of the users in matches.json file, and use their \"city\" property.  You don't need to ask location from their browser\n\n##### App Requirements\nPlease provide an initial list view of all existing matches and a number of filters, as listed above.\nThe resulting app should handle rotation and scale for tablets as well as phones.\nNote - for filtering \"distance in km\" assume that the user has logged in as one of the users in matches.json file.  Ask for the users location in the app first.  If the user does not supply it, use their \"city\" property from their profile\n\n\n## Running the App\n\n1. `mvn clean install`\n1. `start a MongoDB instance`\n1. `java -jar target/filtering-matches-1.0-SNAPSHOT-spring-boot.jar`\n\n\n### MongoDB instance is required\n\n![MongoDB Project](http://www.jnosql.org/img/logos/mongodb.png)\n\n\n**Mongodb**: MongoDB is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas.\n\n\nTo run this project a MongoDB instance is required, so you can use either a local instalation or using Docker.\n\n\n## Manual installation\n\nFollow the instructions in: https://docs.mongodb.com/manual/installation/\n\n\n## Using Docker\n\n![Docker](https://www.docker.com/sites/default/files/horizontal_large.png)\n\n\n1. Install docker: https://www.docker.com/\n1. https://store.docker.com/images/mongo\n1. Run MondoDB: verify MongoDB image name with the command `docker images`, it can be mongodb or mongo, and then execute this command `docker run -d --name mongodb-instance -p 27017:27017 mongo`\n\n\n### Front-End\n\n* Unfortunately, I did not implement it.\n* I know that there are several that make the developer life more comfortable such as NPM; however, I did not create a new one from scratch.\n* A fast solution that I could do would be a front-end technology friendly to a back-end such as Spring MVC or JSF.\n\n### The possible next features:\n\n* Documentation using Swagger\n* Authentication\n* Improves new filters such as religion","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotaviojava%2Ffiltering_matches","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fotaviojava%2Ffiltering_matches","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotaviojava%2Ffiltering_matches/lists"}