{"id":21585113,"url":"https://github.com/felipeoriani/aws-serverless-nodejs-typescript-sample","last_synced_at":"2026-04-29T22:34:30.924Z","repository":{"id":227940877,"uuid":"750125458","full_name":"felipeoriani/aws-serverless-nodejs-typescript-sample","owner":"felipeoriani","description":"Sample cloud-native serverless project for a Flight Air company using Node.Js, Typescript, AWS DynamoDB, AWS Lambda, AWS SQS, AWS API Gateway and Serverless Framework.","archived":false,"fork":false,"pushed_at":"2024-06-28T13:28:06.000Z","size":1040,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-10T19:31:40.160Z","etag":null,"topics":["api-gateway","aws","aws-lambda","aws-lambda-node","aws-sqs","cloud-formation","cloud-native","dynamo","dynamodb","javascript","lambda","lambda-functions","nodejs","serverless","serverless-framework","sqs","typscript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"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/felipeoriani.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":"2024-01-30T02:58:44.000Z","updated_at":"2025-07-29T16:12:20.000Z","dependencies_parsed_at":"2024-06-28T14:49:39.249Z","dependency_job_id":"98512561-f3b3-4c37-aa7b-678eb3b5bada","html_url":"https://github.com/felipeoriani/aws-serverless-nodejs-typescript-sample","commit_stats":null,"previous_names":["felipeoriani/aws-serverless-nodejs-typescript-sample"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/felipeoriani/aws-serverless-nodejs-typescript-sample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipeoriani%2Faws-serverless-nodejs-typescript-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipeoriani%2Faws-serverless-nodejs-typescript-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipeoriani%2Faws-serverless-nodejs-typescript-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipeoriani%2Faws-serverless-nodejs-typescript-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felipeoriani","download_url":"https://codeload.github.com/felipeoriani/aws-serverless-nodejs-typescript-sample/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipeoriani%2Faws-serverless-nodejs-typescript-sample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32446905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"ssl_error","status_checked_at":"2026-04-29T22:10:49.234Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api-gateway","aws","aws-lambda","aws-lambda-node","aws-sqs","cloud-formation","cloud-native","dynamo","dynamodb","javascript","lambda","lambda-functions","nodejs","serverless","serverless-framework","sqs","typscript"],"created_at":"2024-11-24T15:09:06.046Z","updated_at":"2026-04-29T22:34:30.907Z","avatar_url":"https://github.com/felipeoriani.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS Serverless Node.Js Typescript Sample Project\r\n\r\nHello, welcome. I am [Felipe](https://github.com/felipeoriani)!\r\n\r\nThis is an example of a project for a Flight Air company designed and built using part of the technology stack that I use throughout my career where the goal is to compose my portfolio and demonstrate a bit of my professional experience. Focused on a `Cloud Native` Rest API, this project leverages `AWS` Services with a strong emphasis on `Serverless` Architecture. To achieve this, the foundation is built upon the `Serverless Framework` with custom `AWS Cloud Formation` sections to complete provide infrastructure as code. Feel free to contact me and check other projects in my portfolio here at [Github profile](https://github.com/felipeoriani) page.\r\n\r\n### Stack\r\n\r\n\u003ctable align=center border=0 width=100%\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/d/d9/Node.js_logo.svg\" alt=\"Node.Js\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eNode.Js\u003c/td\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/4/4c/Typescript_logo_2020.svg\" alt=\"Typescript\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eTypescript\u003c/td\u003e    \r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://cdn.worldvectorlogo.com/logos/aws-dynamodb.svg\" alt=\"AWS DynamoDB\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAWS DynamoDB\u003c/td\u003e    \r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/9/93/Amazon_Web_Services_Logo.svg\" alt=\"Amazon Web Services\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAmazon Web Services\u003c/td\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2752551/30405068-a7733b34-989e-11e7-8f66-7badaf1373ed.png\" alt=\"Serverless\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eServerless Framework\u003c/td\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://cdn.worldvectorlogo.com/logos/aws-cloudformation.svg\" alt=\"AWS Cloud Formation\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAWS Cloud Formation\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://cdn.worldvectorlogo.com/logos/aws-api-gateway.svg\" alt=\"AWS API Gateway\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAWS API Gateway\u003c/td\u003e\r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://cdn.worldvectorlogo.com/logos/aws-lambda.svg\" alt=\"AWS Lambda\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAWS Lambda\u003c/td\u003e    \r\n    \u003ctd align=center valign=bottom\u003e\u003cimg src=\"https://cdn.worldvectorlogo.com/logos/aws-sqs.svg\" alt=\"AWS SQS\" width=125 height=\"auto\" /\u003e\u003cbr/\u003eAWS SQS\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n### Architecture\r\n\r\n#### Rest API\r\n\r\nThe architecture consists in a serverless Rest API using Serverless Framework within the AWS as Cloud Provider. Through an `AWS API Gateway`, receive a request, process it on `AWS Lambda` written in `Node.Js` with `Typescript` superset and return a message to the `AWS API Gateway` which responds to clients using the `HTTP` protocol. All the data is persisted into a `AWS DynamoDB` table which is defined on the serverless yml file. The project is still under construction and I do it at my free time.\r\n\r\n\u003cp align=center\u003e\r\n  \u003cimg src=\"docs/rest-api-diagram.svg\" alt=\"Architecture Diagram for Flight Service\" /\u003e\r\n\u003c/p\u003e\r\n\r\n#### Events\r\n\r\nThere is an in progress event series that for every `x` minutes in order to notify all the passengers that have a scheduled flight for the next `x` hours. Check the following diagram for the events.\r\n\r\n\u003cp align=center\u003e\r\n  \u003cimg src=\"docs/events-diagram.svg\" alt=\"Event Diagram for Flight Service\" /\u003e\r\n\u003c/p\u003e\r\n\r\n#### Code Architecture\r\n\r\nThe code presents a [Layered Architecture](https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html) using `Node.Js` and `Typescript` which will be transpiled to `Javascript` as the main language of the Node.Js runtime. It contains an `Domain Layer` where keep the domain of the project including Flight and Passengers and abstractions for storage and business rules. Then we have the `Infrastructure Layer` to maintain all the code related to I/O bound operations specially network calls such as cloud services implementations which includes database, queues, cloud services, external services, etc. And finally we have the `Application Layer` which is responsable to hold the business rules.\r\n\r\nAll the layers are in the low coupling to be able to future change the implementation so each component depends on abstractions instead concrete types. It also make our tests easy to simulate some behaviour we may want to test using Mocks. In the code, you can find it under the `./src/core` folder like the image bellow:\r\n\r\n\u003cp align=center\u003e\r\n\u003cimg src=\"docs/code-architecture.png\" /\u003e\r\n\u003c/p\u003e\r\n\r\n### Tests\r\n\r\nThere are a few unit tests in progress to cover the main business rules on the application layer of the project. It is implemented on the top of native `Node Test Runner` and to run it locally, you can run `yarn test` or `npm test`.\r\n\r\n\u003cp align=center\u003e\r\n\u003cimg src=\"docs/test-results.png\" width=\"450\" /\u003e\r\n\u003c/p\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipeoriani%2Faws-serverless-nodejs-typescript-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipeoriani%2Faws-serverless-nodejs-typescript-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipeoriani%2Faws-serverless-nodejs-typescript-sample/lists"}