{"id":19275724,"url":"https://github.com/trycontrolmymind/funraise-test","last_synced_at":"2026-06-17T19:32:48.580Z","repository":{"id":144078788,"uuid":"548505775","full_name":"trycontrolmymind/funraise-test","owner":"trycontrolmymind","description":null,"archived":false,"fork":false,"pushed_at":"2022-10-10T09:51:33.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T21:17:51.672Z","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/trycontrolmymind.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":"2022-10-09T17:56:56.000Z","updated_at":"2022-10-09T17:59:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"f94c107e-1d2c-4486-aca7-1849bc6f3d35","html_url":"https://github.com/trycontrolmymind/funraise-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trycontrolmymind/funraise-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycontrolmymind%2Ffunraise-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycontrolmymind%2Ffunraise-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycontrolmymind%2Ffunraise-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycontrolmymind%2Ffunraise-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trycontrolmymind","download_url":"https://codeload.github.com/trycontrolmymind/funraise-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycontrolmymind%2Ffunraise-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34463552,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"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":"2024-11-09T20:51:45.349Z","updated_at":"2026-06-17T19:32:48.559Z","avatar_url":"https://github.com/trycontrolmymind.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fundraise test fullstack\n\n## Get started\n\n### 1. Install node.js v18.10.0 or NVM\n\n```bash\nnvm install\nnvm use\n```\n\n### 2. NPM install\n\n```bash\nnpm install\n```\n\n### 3. Build everything\n\n```bash\nnpm run build\n```\n\n### 4. Start database\n\n```bash\ncd packages/backend\ndocker-compose up --build\n```\n\nMongo Express: http://localhost:8081\n\n### 5. Start application\n\n```bash\ncd packages/backend\nnpm run start\n```\n\nServing HTML on http://localhost:8000  \nServing script and /track on http://localhost:8001  \n\nENV Variables https://github.com/trycontrolmymind/funraise-test/blob/master/packages/backend/.env\n\n# Bonus\n\nНапишите свой сниппет вставки трекера на страницу, замените им \u003cscript src=\"http://localhost:8001/\"\u003e\u003c/script\u003e, и объясните зачем “все так усложнили”.\n\n\u003e Это нужно для того, чтобы асинхронно грузить script и перед загрузкой скрипта куда-то складывать события, которые происходят по ходу.\n\n---\n\nСделайте так, чтобы при клике по ссылке все события успели дойти до бекенда до перехода на новую страницу.\n\n\u003e Добавил navigator.sendBeacon для отправки при закрытии страницы, чтобы отправка не терялась при закрытии\n\n---\n\nСделайте так, чтобы при CORS запросе не происходил префлайт OPTIONS запрос.\n\n\u003e Изменил content-type: text/plain и сделал, чтобы express пытался парсить json из text/plain\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycontrolmymind%2Ffunraise-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrycontrolmymind%2Ffunraise-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycontrolmymind%2Ffunraise-test/lists"}