{"id":18330941,"url":"https://github.com/dataquestio/platform-takehome-assessment","last_synced_at":"2025-10-10T02:05:10.511Z","repository":{"id":146402175,"uuid":"359539245","full_name":"dataquestio/platform-takehome-assessment","owner":"dataquestio","description":"Take home assessment for Platform Engineer applicants","archived":false,"fork":false,"pushed_at":"2021-04-22T09:11:56.000Z","size":12,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-26T21:22:08.656Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/dataquestio.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":"2021-04-19T17:13:56.000Z","updated_at":"2024-08-29T17:19:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"94932ec3-37e1-4592-a693-ed294da8e252","html_url":"https://github.com/dataquestio/platform-takehome-assessment","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/dataquestio%2Fplatform-takehome-assessment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataquestio%2Fplatform-takehome-assessment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataquestio%2Fplatform-takehome-assessment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataquestio%2Fplatform-takehome-assessment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataquestio","download_url":"https://codeload.github.com/dataquestio/platform-takehome-assessment/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248662786,"owners_count":21141630,"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-05T19:27:15.095Z","updated_at":"2025-10-10T02:05:05.491Z","avatar_url":"https://github.com/dataquestio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# platform-takehome-assessment\nTake home assessment for Platform Engineer candidates.\n\n## What this document is for\n\nYou should have received a PDF document with a take home \nassignment. This README document is intended only to help you\nset up the environment and get started with this project.\n\nPlease reach out to your recruiter if you have any questions!\n\n## Introduction\n\nThis repository contains a toy application which \nimplements a rudimentary user behavior tracking API. In the\nreal world, we use third party tools like Segment, Amplitude, \nMixpanel, etc. for this functionality. For this exercise, though,\nwe imagine that we need to implement this ourselves.\n\nNote that, for simplification of the exercise, **we are not using\na real database**. The application simply prints an insert\nstatement to the terminal. \n\nThis API is implemented as an AWS Serverless application \nusing the AWS Serverless Application Model (AWS SAM). The \nunderlying AWS products which implement the API (if we were \nto actually deploy it) are [AWS Lambda](https://aws.amazon.com/lambda/)\nand [AWS API Gateway](https://aws.amazon.com/api-gateway/).\n\n## System requirements\n\nWe have tested on Linux and Mac. If you use Windows, we advise \nto use a Linux VM to complete the exercise. If you're not sure \nhow to do this, we suggest to start with [VirtualBox](https://www.virtualbox.org/).\n\n## Installation\n\nFirst, install [Docker](https://www.docker.com/), [git](https://git-scm.com/), \nand [curl](https://curl.se/) (if you don't already have them installed).\nSee [Docker's installation docs](https://docs.docker.com/engine/install/), \nand use your OS package manager to install curl and git.\n\nAfter you have Docker, git, and curl installed, install AWS SAM CLI tool. \n\n### Linux\n\nDownload [the AWS SAM CLI zip file](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip). \nFrom the location where this file is (probably `~/Downloads`), then you can run:\n\n```bash\nunzip aws-sam-cli-linux-x86_64.zip -d sam-installation\nsudo ./sam-installation/install\n```\n\n### Mac\n\nYou will need to install [homebrew](https://brew.sh) if you don't already have it. \nFollow [the homebrew installation instructions](https://docs.brew.sh/Installation).\n\nThen you can run:\n\n```bash\nbrew tap aws/tap\nbrew install aws-sam-cli\n```\n\n### Check that SAM CLI is working\n\n```bash\nsam --version\n```\n\nIf you see `SAM CLI, version 1.22.0` (or similar), it works! 🎉\n\nIf you have some issues, check \n[the AWS SAM documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html), \nor reach out to your recruiter if you're really stuck.\n\n## Build, run, test the API\n\n**Warning: you need to re-build the application each time you make \nchanges**. AWS SAM unfortunately does not currently support\nhot reloading.\n\nClone this repo, and navigate to the [tracking-service](./tracking-service) subdirectory.\nYou will run all the following commands from that location.\n\nTo build:\n\n```bash\nsam build --use-container\n```\n\nTo run the API locally:\n\n```bash\nsam local start-api\n```\n\nTo test the API:\n\n```bash\ncurl -H \"Content-Type: application/json\" -XPOST --data '{\"event\": \"click\", \"location\": \"something\", \"user\": \"sylvia\", \"otherParam\": \"otherVal\"}' http://127.0.0.1:3000/track\n```\n\nYou should see an SQL statement printed in blue to the terminal where the API \nis running. \n\n## Important files in this repo\n\n* [app.py](tracking-service/tracking_service/app.py) - the application code\n* [event.json](tracking-service/events/event.json) - a sample event that the lambda function receives\n* [template.yaml](tracking-service/template.yaml) - the SAM configuration file\n\nWe expect you'll make changes primarily in `tracking-service/tracking_service/app.py`.\n\n## Note about tests\n\n**We like tests!** They are really important and we write lots of them!\nHowever, in order to keep the problem simple, we've excluded them here. If you\nfeel that adding tests will help you work through the problem, go for it. \nHowever, we don't expect it, and won't give extra points for answers that \ninclude tests. 🙂","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataquestio%2Fplatform-takehome-assessment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdataquestio%2Fplatform-takehome-assessment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataquestio%2Fplatform-takehome-assessment/lists"}