{"id":34974574,"url":"https://github.com/techwithty/tint-take-home","last_synced_at":"2026-05-23T03:06:30.223Z","repository":{"id":280012099,"uuid":"940343059","full_name":"TechWithTy/tint-take-home","owner":"TechWithTy","description":"Next - Docker - WSL - Stripe - DataDog - Open Ai - Postgres - Drizzle","archived":false,"fork":false,"pushed_at":"2025-02-28T18:27:46.000Z","size":186,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"backup-main","last_synced_at":"2025-02-28T22:22:47.301Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/TechWithTy.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":"2025-02-28T02:30:53.000Z","updated_at":"2025-02-28T18:04:59.000Z","dependencies_parsed_at":"2025-02-28T22:23:58.039Z","dependency_job_id":"5cd01d56-bab6-4e60-bc2c-33cb000a1be6","html_url":"https://github.com/TechWithTy/tint-take-home","commit_stats":null,"previous_names":["techwithty/tint-take-home"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TechWithTy/tint-take-home","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechWithTy%2Ftint-take-home","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechWithTy%2Ftint-take-home/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechWithTy%2Ftint-take-home/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechWithTy%2Ftint-take-home/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TechWithTy","download_url":"https://codeload.github.com/TechWithTy/tint-take-home/tar.gz/refs/heads/backup-main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechWithTy%2Ftint-take-home/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33380807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T01:21:08.577Z","status":"online","status_checked_at":"2026-05-23T02:00:05.530Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-12-26T23:59:48.196Z","updated_at":"2026-05-23T03:06:30.212Z","avatar_url":"https://github.com/TechWithTy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Technical Test\nPlease read the entirety of this README carefully before starting.\n\n## Context\n\nTint provides a low-code tool that allows our customers to propose whole-fledged Insurance protection to their end-users using only a few lines of code (you can think of it as Google Analytics for insurance).\n\nYou are going to work on our Protection Portal. This portal is the one the end-users are interacting with. And more precisely, you will work on the payment flow. After the initial quote and successful payment, we'll turn the end-user submission into a policy, covering them for the transaction.\n\nFor alerting, Tint is using Datadog. We set up alerts based on the log attributes. For instance, we could trigger a `Slow response` alert if our `response.durationMs` property exceeds 2,000. \n\n## Expectations\n\nWe expect you to scope down the given high-level objective and implement it. At the end of the case study, you should submit:\n\n* A pull request containing all your changes,\n* A quick overview of the feature (eg. through a [Loom video](https://www.loom.com/looms/videos), screenshots, etc.).\n\nIf you need to detail your thought process or to mention how you would handle alerts, you can use the PR description.\n\nTo speed up the review process, don't hesitate to ping your hiring manager once you are done.\n\n## Guidelines\n\nAs in a real-world situation, you have access to all the resources you may need. Google, StackOverflow, AI-powered assistants... Use all of the tools you are comfortable with to complete the assignment!\n\n**Note regarding AI-generated code:** The usage of AI-generated code is acceptable. However, you should be aware that code generated by AI tools may contain errors and may not follow best practices. We often use AI-powered tools here at Tint, but we also never directly copy/paste the code generated by AI tools. **Ultimately you are responsible for ensuring any code generated by AI works as expected and follows best practices.**\n\nAs an early-stage start-up, Tint is **focused on the speed of execution rather than on long-term scalability**. You should keep that in mind when working on this technical test. \n\n**You should not spend more than 3 hours on this exercise.**  You may need to take shortcuts or reduce the scope to make it fit. This is expected, as a Senior Software Engineer should also challenge the decisions to find the fastest way to provide value to our customers.\n\nThis exercise is going to use Stripe. You can create a [free account](https://dashboard.stripe.com/) if you don't already have one.\n\n## Objective\n\nThe end-user currently has access to a quote to estimate the cost of his protection. We now need to implement the payment system (using Stripe) to turn their quote into a policy. \n\nFor the sake of this technical test, we don't provide any mock-ups. \n\n**Acceptance criteria:**\n\n* The user should pay the premium related to the created quote.\n* In case of a successful payment, we should turn the quote into a policy, in a new `policies` table.\n* In case of a failed payment, an alert should warn the Tint team of an issue.\n* A Tint admin should be able to proceed to a refund in the rare cases where an end-user requests it.\n\n## Launching the Project\n\nTo launch this project, you need to install:\n\n* [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/install/), to launch the Postgres database\n* Node 20 (you can install it through [nvm](https://github.com/nvm-sh/nvm))\n\nOnce these dependencies are installed, you can set up and launch the projects:\n\n```sh\n# install dependencies, load the database fixtures\nmake init\n\n# launch the project\nmake start\n\n# launch the tests\nmake test\nmake test-watch\n```\n\nDon't hesitate to check the `Makefile` to get a list of all available commands.\n\n## Troubleshooting\n- `Postgres [FATAL]: role \"tint\" does not exists`\n  - Often, the source of this issue is having an existing Postgres service running on the default port on your machine. You can either shut down this other instance, or you can update the exposed port in the docker compose configuration.\n- General difficulty in Windows environments\n  - It is _HIGHLY_ recommended that you use WSL2 with your preferred Linux distribution as your development environment. This would include configuring Docker Desktop for Windows to use this WSL2 environment. The coding challenge has been confirmed to run without issue using **Ubuntu 20.04** and **Ubuntu 22.04** running in WSL2 with Docker Desktop. Other distributions should work, but may require additional tweaking. \n  ```\n\n  Run DB\n  docker-compose -f docker-compose.development.yaml up -d\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechwithty%2Ftint-take-home","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechwithty%2Ftint-take-home","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechwithty%2Ftint-take-home/lists"}