{"id":24869559,"url":"https://github.com/catho/teste-apps","last_synced_at":"2025-03-26T21:42:54.167Z","repository":{"id":42256613,"uuid":"276773094","full_name":"catho/teste-apps","owner":"catho","description":"Repositório com o teste técnico para processo seletivo de desenvolvimento de apps","archived":false,"fork":false,"pushed_at":"2023-07-14T20:26:30.000Z","size":727,"stargazers_count":0,"open_issues_count":19,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-02-01T03:31:41.411Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/catho.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":"2020-07-03T00:43:29.000Z","updated_at":"2021-04-26T18:20:47.000Z","dependencies_parsed_at":"2023-02-18T05:46:08.778Z","dependency_job_id":null,"html_url":"https://github.com/catho/teste-apps","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/catho%2Fteste-apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Fteste-apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Fteste-apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Fteste-apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catho","download_url":"https://codeload.github.com/catho/teste-apps/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245743327,"owners_count":20665090,"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":"2025-02-01T03:30:23.558Z","updated_at":"2025-03-26T21:42:54.142Z","avatar_url":"https://github.com/catho.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teste para desenvolvedores mobile Catho\nEste é o teste técnico para processo seletivo para trabalhar com desenvolvimento de apps mobile na Catho.\n\n## Desafio\nDesenvolver uma tela de aplicativo seguindo o layout proposto como referência e uma api mockada para carregar os dados.\n\n### Layout\nO seu aplicativo deve seguir o layout abaixo como referência.\n\n![Layout proposto](/img/HOME.png)\n\n#### Assets\nOs assets estão disponíveis na pasta /api/assets/.\nVocê pode utilizar ele dentro do aplicativo ou carregá-las utilizando o host da api http://localhost:4040/assets\n\n---\n\n### Premissas\n**Importante:** escolha uma linguagem conforme a vaga que está participando no processo.\n\n- Para desenvolvedores Android: utilizar Kotlin, Java ou Flutter\n- Para desenvolvedores IOS: utilizar Swift ou Flutter\n\n## O que será avaliado\n- Organização e clareza de código\n- Componentização\n- Manutenabilidade\n- Controle de qualidade\n- Controle de versão\n- Controle de release\n- Performance\n- Fidelidade ao layout\n- Experiência de usuário\n\n## Melhorias\nRealize o teste com os recursos disponíveis, porém anote e nos envie quaisquer sugestão de melhoria que julgar adequadas e por que deveríamos implementá-las.\n\n## Como aplicar\nVocê deve criar um repositório privado no GitHub.com e adicionar o usuário [testecatho](https://github.com/testecatho) como colaborador do projeto. Ao finalizar o teste, por favor, envie-nos o link do repositório pelo e-mail testecatho@catho.com. Você utilizará esse projeto apenas para rodar as apis.\n\nBoa Sorte!\n\n---\n\n### API\nAbaixo, seguem os recursos e como executar a api que retornará os dados para a construção da tela.\n\n#### Roteiro\n1. Carregue as chaves de autenticação das apis (/keys);\n2. Como não teremos uma tela de login, escolha um dos ids disponíveis no método /auth;\n3. Agora você tem todos os dados de que necessita para implementar os demais recursos. A ordem dos requests fica a seu critério.\n\n#### Features\n1. Usuário visualiza a foto cadastrada. Para essa feature você deve usar o recurso /auth.\n2. Usuário pode interagir com slider com sugestão de vagas (sugestão de até 5 vagas): caso opte por se aplicar a uma delas, o texto do botão muda para “CV enviado”. Para essa feature você deve usar o recurso /suggestion.\n3. Usuário visualiza uma dica oferecida pela Catho. Para essa feature você deve usa o recurso /tips.\n4. Usuário pode interagir com a dica, mencionando se ela foi útil ou não. Para essa feature você deve usar o recurso /survey.\n\n#### Pré requisitos\n- [Docker](https://www.docker.com/) ou [NodeJs](https://nodejs.org/en/)\n\n#### Executando a api\nPara rodar a api, execute uma das opções abaixo:\n- Usando docker:\n```sh\n./scripts/mock-server-docker.sh\n```\n- Usando NodeJs:\n```sh\n./scripts/mock-server-local.sh\n```\n\n#### Recursos\n##### Keys\n```sh\ncurl --location --request GET 'localhost:4040/keys'\n```\nResponse:\n```json\n{\n  \"auth\": \"$authkey\",\n  \"tips\": \"$tipskey\",\n  \"suggestion\": \"$suggestionkey\",\n  \"survey\": \"$surveykey\"\n}\n```\n| propriedade | tipo | descrição |\n| ----------- | ---- | --------- |\n| api name | sha512 | chave de autorização para a api |\n\n**Importante:** Enviar a chave correspondente em todos os demais requests. Não enviar a chave ou enviar a chave errada causará um retorno com status 401.\n\n---\n\n##### Auth\n```sh\ncurl --location --request GET 'http://localhost:4040/auth/$userId' \\\n--header 'x-api-key: $apiKey'\n```\nHeaders:\n| header | tipo | descrição |\n| ----------- | ---- | --------- |\n| x-api-key | string | chave de autenticação da api retornada pelo /keys |\n\n| ids disponíveis |\n| --------------- |\n| ee09bd39-4ca2-47ac-9c5e-9c57ba5a26dc |\n| cc3431c3-d9c9-48e2-8a1f-c3c0260f0712 |\n\nResponse:\n```json\n{\n  \"id\": \"ee09bd39-4ca2-47ac-9c5e-9c57ba5a26dc\",\n  \"name\": \"Leticia da Silva\",\n  \"token\": \"IltvYmplY3QgT2JqZWN0XSAi.eyJzdWIiOiJlZTA5YmQzOS00Y2EyLTQ3YWMtOWM1ZS05YzU3YmE1YTI2ZGMiLCJuYW1lIjoiTGV0aWNpYSBkYSBTaWx2YSIsImlhdCI6MTUxNjIzOTAyMn0.Dk_R9gr5RHJtl3FYjQFa7dgQySrL78d887Jk9WVdfIA\",\n  \"photo\": \"/assets/ee09bd39-4ca2-47ac-9c5e-9c57ba5a26dc.jpg\"\n}\n```\n| propriedade | tipo | descrição |\n| ----------- | ---- | --------- |\n| id | uuid | id único de referência ao usuário |\n| name | string | nome do usuário |\n| token | string | token jwt de sessão do usuário |\n| photo | string | path da foto do usuário |\n\n---\n\n##### Suggestion\n```sh\ncurl --location --request GET 'http://localhost:4040/suggestion' \\\n--header 'Authorization: $userToken' \\\n--header 'x-api-key: $apiKey'\n```\n\nHeaders:\n| header | tipo | descrição |\n| ----------- | ---- | --------- |\n| Authorization | string | token de acesso do usuário recuperado pelo /auth |\n| x-api-key | string | chave de autenticação da api retornada pelo /keys |\n\nResponse:\n```json\n[\n  {\n    \"jobAdTile\": \"Desenvolvedor Mobile - Android\",\n    \"company\": \"CATHO\",\n    \"date\": \"Hoje\",\n    \"totalPositions\": 1,\n    \"locations\": [\n      \"Barueri (SP)\"\n    ],\n    \"salary\": {\n      \"real\": \"\",\n      \"range\": \"A Combinar\"\n    }\n  }\n]\n```\n\nHeaders:\n| header | tipo | descrição |\n| ----------- | ---- | --------- |\n| jobAdTitle | string | titulo da vaga |\n| company | string | nome da empresa |\n| date | string | data formatada |\n| totalPositions | number | número de vagas no anúncio |\n| locations | array | lista de localidades que as vagas atendem |\n| salary | object |  |\n| salary.real | string | salário real. Quando preenchido exibir o real |\n| salary.range | string | faixa salarial da vaga. Somente exibido quando não existe salarial real preenchido |\n\n---\n\n##### Tips\n```sh\ncurl --location --request GET 'http://localhost:4040/tips' \\\n--header 'x-api-key: $apiKey'\n```\nHeaders:\n| header | tipo | descrição |\n| ----------- | ---- | --------- |\n| x-api-key | string | chave de autenticação da api retornada pelo /keys |\n\nResponse:\n```json\n[\n  {\n    \"id\": \"ea9ff33d-16db-42e8-9913-3fb52f3cb992\",\n    \"description\": \"Antes de enviar o seu currículo, que tal checar a última vez que você o atualizou? Uma informação a mais pode ser o ponta-pé que falta rumo à sua próxima entrevista de emprego.\",\n    \"button\": {\n      \"show\": true,\n      \"label\": \"checar curriculo\",\n      \"url\": \"https://www.catho.com.br\"\n    }\n  }\n]\n```\n\n| propriedade | tipo | descrição |\n| ----------- | ---- | --------- |\n| id | uuid | id único da dica |\n| description | string | conteúdo da dica |\n| button | object | |\n| button.show | boolean | informa se o botão deve ser exibido ou não |\n| button.label | string | label do botão |\n| button.url | string | url que deve ser carregada ao clicar no botão |\n\n---\n\n##### Survey\n```sh\ncurl --location --request POST 'http://localhost:4040/survey/tips/$tipId/$action' \\\n--header 'Authorization: $userToken' \\\n--header 'x-api-key: $apiKey'\n```\n\nHeaders:\n| header | tipo | descrição |\n| ----------- | ---- | --------- |\n| Authorization | string | token de acesso do usuário recuperado pelo /auth |\n| x-api-key | string | chave de autenticação da api retornada pelo /keys |\n\n| actions disponiveis |\n| ----------- |\n| like |\n| dislike |\n\nResponse:\n```json\n{\n  \"id\": \"70fe9fd8-1ff8-4eec-8735-ed6ccb85c782\",\n  \"created-at\": \"2020-07-03T16:34:48.4848-03:00\",\n  \"tipId\": \"ea9ff33d-16db-42e8-9913-3fb52f3cb992\",\n  \"action\": \"like\",\n  \"message\": \"Answer was registered\"\n}\n```\n\n| propriedade | tipo | descrição |\n| ----------- | ---- | --------- |\n| id | uuid | id único da resposta enviada |\n| created-at | string | timestamp do envio da resposta |\n| tipId | uuid | id único da dica para qual foi respondido |\n| action | string | resposta enviada |\n| message | string | descrição do status da request |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatho%2Fteste-apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatho%2Fteste-apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatho%2Fteste-apps/lists"}