{"id":20331058,"url":"https://github.com/ascariandrea/serverless-calendar","last_synced_at":"2025-08-03T23:35:09.458Z","repository":{"id":77147267,"uuid":"300601554","full_name":"ascariandrea/serverless-calendar","owner":"ascariandrea","description":"A calendar implementation in Serverless","archived":false,"fork":false,"pushed_at":"2020-10-02T14:24:21.000Z","size":152,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T12:30:47.407Z","etag":null,"topics":["agenda","serverless","typescript"],"latest_commit_sha":null,"homepage":"https://elz163a380.execute-api.eu-central-1.amazonaws.com/dev/events","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ascariandrea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-10-02T12:03:56.000Z","updated_at":"2020-10-02T14:37:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"756dbf22-dd4a-47a9-9cee-276b1d51d1ce","html_url":"https://github.com/ascariandrea/serverless-calendar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ascariandrea/serverless-calendar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascariandrea%2Fserverless-calendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascariandrea%2Fserverless-calendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascariandrea%2Fserverless-calendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascariandrea%2Fserverless-calendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ascariandrea","download_url":"https://codeload.github.com/ascariandrea/serverless-calendar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascariandrea%2Fserverless-calendar/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268628978,"owners_count":24281066,"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","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"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":["agenda","serverless","typescript"],"created_at":"2024-11-14T20:18:38.989Z","updated_at":"2025-08-03T23:35:09.432Z","avatar_url":"https://github.com/ascariandrea.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Serverless Calendar\n\n\u003e A simple agenda REST API implementation with [serverless](https://www.serverless.com/) framework and AWS provider.\n\nThe service is deployed [here](https://elz163a380.execute-api.eu-central-1.amazonaws.com/dev/events)\n\n## Architecture\n\nThis is a sample REST API that perform CRUD operations on `event` resource.\nData is stored in *DynamoDB* and the service is deployed on *AWS*.\n\nSource code is written in TypeScript and it uses a functional approach with [`fp-ts`](https://github.com/gcanti/fp-ts) and [`io-ts`](https://github.com/gcanti/io-ts).\n\n## API\n\nAPI endpoints are defined as a structure of `io-ts` types and used to validate request payload and response outputs.\n\n### Events\n\n#### List\n\nList all events filtered by given query params\n\n**[Endpoint](./src/models/Event.ts#L62):** GET /events\n\n**[QueryParams](./src/models/Event.ts#L64):** [ListEventQueryParams](./src/models/Event.ts#L49)\n\n- year: the selected year (optional)\n- week: the selected week (optional)\n\n**[Output](./src/models/Event.ts#L69):** [Event](./src/models/Event.ts#L35)[]\n\n#### Get\n\nGet event details\n\n**[Endpoint](./src/models/Event.ts#L72):** GET /events/{id}\n\n**[PathParams](./src/models/Event.ts#L75):** [Id](./src/models/Id.ts)\n\n- id: the event id to retrieve\n\n**[Output](./src/models/Event.ts#L79):** [Event](./src/models/Event.ts#L35)\n\n#### Create\n\nCreate an event\n\n**[Endpoint](./src/models/Event.ts#L82):** POST /events\n\n**[Body](./src/models/Event.ts#L87):** [CreateEventData](./src/models/Event.ts#L10)\n\n- title: event title\n- description: event description\n- address: event address\n- startDate: event start date\n- endDate: event end date\n\n**[Output](./src/models/Event.ts#89):** [Event](./src/models/Event.ts#L35)\n\n#### Edit\n\nModify the event\n\n**[Endpoint](./src/models/Event.ts#L92):** PUT /events/{id}\n\n**[PathParams](./src/models/Event.ts#L95):** [Id](./src/models/Id.ts)\n\n- id: event id\n\n**[Body](./src/models/Event.ts#L97):** [EditEventData](./src/models/Event.ts#L23)\n\n- title: event title (optional)\n- description: event description (optional)\n- address: event address (optional)\n- startDate: event start date (optional)\n- endDate: event end date (optional)\n\n**[Output](./src/models/Event.ts#L99):** [Event](./src/models/Event.ts#L35)\n\n#### Remove\n\nRemove an event by id\n\n**[Endpoint](./src/models/Event.ts#L102):** DELETE /events/{id}\n\n**[PathParams](./src/models/Event.ts#L105):**\n\n- id: event id\n\n**[Output](./src/models/Event.ts#109):** boolean\n\n## Development\n\n### Requirements\n\n- `node`\n\n### Install dependencies\n\n```sh\nnpm i\n```\n\n### Run locally\n\nIt will start an http server listening on `http://localhost:3000/local`\n\n```sh\nnpm run dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascariandrea%2Fserverless-calendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fascariandrea%2Fserverless-calendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascariandrea%2Fserverless-calendar/lists"}