{"id":21097259,"url":"https://github.com/davila23/javascript-valence-test","last_synced_at":"2026-05-16T17:37:22.434Z","repository":{"id":124396340,"uuid":"246914620","full_name":"davila23/javascript-valence-test","owner":"davila23","description":"Get 5-day forecast from Metaweather API","archived":false,"fork":false,"pushed_at":"2020-03-12T19:36:07.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-12T05:08:44.263Z","etag":null,"topics":["fetch","javascript","json","requests","weather-app"],"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/davila23.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-03-12T19:26:10.000Z","updated_at":"2020-03-12T19:37:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"54d505a8-2848-4bf4-b69f-e0483c823076","html_url":"https://github.com/davila23/javascript-valence-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davila23/javascript-valence-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davila23%2Fjavascript-valence-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davila23%2Fjavascript-valence-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davila23%2Fjavascript-valence-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davila23%2Fjavascript-valence-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davila23","download_url":"https://codeload.github.com/davila23/javascript-valence-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davila23%2Fjavascript-valence-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33112127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["fetch","javascript","json","requests","weather-app"],"created_at":"2024-11-19T22:47:03.461Z","updated_at":"2026-05-16T17:37:22.411Z","avatar_url":"https://github.com/davila23.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# javascript-valence-test\nGet 5-day forecast from Metaweather API\n\nREF : https://drive.google.com/file/d/1rcfnwS4EebaJWQqbmDz441yZ1Po3AGiR/view\n\n\nAWS Cloud Developer (Javascript) CodingAssessment\n  \nThe goal of this assessment is for us to take a look at how you write and organize your code. \nThis is the most technical part of the Valence interview process, and we want to make sure that you are not under any stress and have plenty of time to complete this assessment.\nIt should take you approximately 2-3 hours to complete, and we promise we'll never ask you any white- boarding pop-quizzes during the culture fit interview that follows\nGuidelines\nTake as much time as you need\nFeel free to use an IDE of your choice\nUse Google as you normally would\nUse of third party frameworks is encouraged\nClearly define dependencies within package.json No need to write any unit tests\nTo remove any potential bias we will scrub any personally identifiable information from your submission before handing it over to an engineer for a code review.\nEvaluation Criteria\nWe are looking at the following things:\nDoes the app compile and run? Are all the base features implemented?\nHow well is your code organized? (Hint: Break your code into meaningful functions and compose them in the endpoint hook)\nAre your variable and class names descriptive? Do they make sense? (Tip: don't name things with a single character)\nAre you using proper encapsulation?\n  \nIs your memory management sound? Are there any memory leaks?\nAre you adhering to the Javascript code style guidelines and naming conventions?\nAre all public methods and classes appropriately documented?\nDid you implement any bonus features? Points for appropriate asynchronous operations (network/disk access), and parallelization as necessary\nLess code = more . Brevity is the soul of wit\nNote that we will test your function by running it from the command line and comparing to some expected output, so make sure your formatting is correct (order of entries doesn't matter).\n\n\nAWS Lambda Function\n\nWe are using Serverless as the framework to enable running of this Lambda function locally without the need to deploy to AWS.\nWhat to Do\nYour mission, should you choose to accept it, is to develop an AWS Lambda function (using the serverless framework setup described below), to act as an API endpoint that reads a CSV file from S3, queries weather data from an external API for each of the locations, and returns a single JSON document describing the weather across all locations.\nThe API you will be querying is the MetaWeather service - it provides an aggregated forecast across many different weather services into a single 5-day forecast for each location. You will parse the CSV passed in to your API endpoint, and for each location name, you need to devise a scalable and reliable strategy to acquire the 5-day forecast data for each location name, and return it in a single, useful JSON document format intended to be consumed by a client application, or data processing service.\n\nYour output should be a simplified version of the weather data, across multiple locations as defined in the CSV file:\n      \n{\n\"location_1_name\" : [\n\n{\n\n\"date\" : \"some_date\", \"temp\" : \"some_temp\", \"weather\" : \"some_weather\"\n\n}, ...\n\n],\n\"location_2_name\" : [\n\n...\n\n], ...\n\n}\n\n\n\nExample:\n\n\nNotes\nYou must fetch the CSV file from S3, it can't be locally embedded into your function.\nNot all data within the CSV needs to be used. You should decide which data is relevant, and which isn't. \nMake sure to read the API documentation extensively - querying the required forecast data for this assignment is not completely straightforward and may require multiple queries to get the data you need. Proper parallelization and usage of asynchronous operations is extremely important in contexts such as this - as you know, network operations are blocking, and an efficient program doesn't spendunnecessary time waiting.\n\n\nSetup Installation\n1. Install Serverless\n2. Download Serverless Template\nUsing an IDE (VSCode)\nYou are welcome to use an IDE to develop the Lambda function. One IDE that works really well with the Serverless framework (allowing for local debugging) is VSCode. You will want to install the serverless-vscode extension if you want to use it. This should work equally well on a Mac and on Windows (most of us use Macs).\nTo open the template and create a debug configuration, do the following:\n1. In VSCode go to File \u003e Open and point to the template folder.\n2. Open the handler.js file by double-clicking it. This step allows VSCode to infer that you'll be working\nwith JS/Node.\n3. Click the Debug tab (leftmost menu).\n4. You will see a drop-down near the Run symbol that says \"No Configuration\". Click on that dropdown and\nselect Add Configuration. Select Node.js as your environment.\n5. A launch.json file will be automatically generated in the hidden .vscode folder within your\nproject's root.\n6. Replace the contents of launch.json with the following.\n        \n  {\n\"version\": \"0.2.0\", \"configurations\": [\n\n{\n\"type\": \"node\",\n\"request\": \"launch\",\n\"name\": \"Launch Lambda\",\n\"program\": \"${workspaceFolder}/node_modules/serverless/bin/serverless\", \"args\": [\n\"invoke\", \"local\", \"-f\", \"myFunction\"\n],\n\n\n// Required, otherwise Serverless thinks stdin is a stream and tries to r from it.\n\"console\": \"integratedTerminal\"\nead options\n} ]\n}\n\n\nUsage Local --\u003e  serverless invoke local -f myFunction -l\n\nDeploy  --\u003e serverless deploy\n\nUsage Remote  --\u003e serverless invoke -f myFunction -l\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavila23%2Fjavascript-valence-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavila23%2Fjavascript-valence-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavila23%2Fjavascript-valence-test/lists"}