{"id":18355160,"url":"https://github.com/flowup/intro-task","last_synced_at":"2026-02-27T11:45:50.386Z","repository":{"id":46733262,"uuid":"400421186","full_name":"flowup/intro-task","owner":"flowup","description":null,"archived":false,"fork":false,"pushed_at":"2021-10-18T14:38:38.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T16:52:05.657Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/flowup.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}},"created_at":"2021-08-27T07:10:39.000Z","updated_at":"2022-07-19T12:55:40.000Z","dependencies_parsed_at":"2022-09-16T03:50:59.919Z","dependency_job_id":null,"html_url":"https://github.com/flowup/intro-task","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/flowup%2Fintro-task","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowup%2Fintro-task/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowup%2Fintro-task/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowup%2Fintro-task/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowup","download_url":"https://codeload.github.com/flowup/intro-task/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248141246,"owners_count":21054417,"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-05T22:06:09.692Z","updated_at":"2025-11-07T01:02:17.852Z","avatar_url":"https://github.com/flowup.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Event aggregator\n\nEvent aggregator is a simple server service. It should be written in **Golang** or **Node** and run with the newest version.\nTry to use only standard libraries and implement all data handling in memory.\nThe service should be able to capture incoming *events* and provide aggregated data. \nTherefor, there should be 2 main endpoints for the service:\n```\n- GET /:name?from=date\u0026to=date\u0026interval=minutes     - gets aggregated data\n- POST /:name                                       - creates new event\n```\n\n### Events\n\nEvery event is defined by it's name. Server should be able to save these events and group them by their name.\nEvery event should be associated with the time of its arrival.\n### Aggregations\n\nUsers requesting the GET endpoint should be able to get aggregated data from the server. Aggregations are limited by two dates.\nInterval must also be set for every aggregation. The interval is set in minutes. \nConsider that there will be significantly more write requests then read operations.\n\n### Examples\n\n**Event**\n\n```\nPOST /click\n```\n\n**Aggregation**\n\nRequest:\n```\nfrom=1478116800 (Human time (GMT): Wed, 02 Nov 2016 20:00:00 GMT)\nto=1478120400 (Human time (GMT): Wed, 02 Nov 2016 21:00:00 GMT)\ninterval=10 (10 minutes)\n```\n\nThat means the raw request will be:\n```\nGET /click?from=1478116800\u0026to=1478120400\u0026interval=10\n```\n\nResponse:\n```\n[\n  { click: 100 }, // first 10 minutes\n  { click: 200 }, // 10-20 minutes\n  { click: 300 }, // ...\n  { click: 200 },\n  { click: 100 },\n  { click: 100 }\n]\n```\n\n### Bonus\nImplement a test validating listing functionality, when 5 **concurrent** users are sending events to the service.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowup%2Fintro-task","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowup%2Fintro-task","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowup%2Fintro-task/lists"}