Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aws-samples/aws-serverless-airline-booking
Airline Booking is a sample web application that provides Flight Search, Flight Payment, Flight Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD. This web application was the theme of Build on Serverless Season 2 on AWS Twitch running from April 24th until end of August in 2019.
https://github.com/aws-samples/aws-serverless-airline-booking
airline-booking aws aws-lambda aws-lambda-node aws-lambda-python graphql lambda lambda-functions python sam serverless tracing typescript
Last synced: 25 days ago
JSON representation
Airline Booking is a sample web application that provides Flight Search, Flight Payment, Flight Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD. This web application was the theme of Build on Serverless Season 2 on AWS Twitch running from April 24th until end of August in 2019.
- Host: GitHub
- URL: https://github.com/aws-samples/aws-serverless-airline-booking
- Owner: aws-samples
- License: mit-0
- Created: 2019-04-15T20:34:33.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-08-09T22:14:20.000Z (3 months ago)
- Last Synced: 2024-10-01T21:24:13.867Z (about 1 month ago)
- Topics: airline-booking, aws, aws-lambda, aws-lambda-node, aws-lambda-python, graphql, lambda, lambda-functions, python, sam, serverless, tracing, typescript
- Homepage:
- Size: 8.53 MB
- Stars: 2,185
- Watchers: 115
- Forks: 1,290
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-aws-amplify - Serverless Airline Booking is a complete web application that provides Flight Search, Payment, Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD.
README
## AWS Serverless Airline Booking
Serverless Airline Booking is a complete web application that provides Flight Search, Payment, Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD. This web application was the theme of Build on Serverless Season 2 on AWS Twitch running from April 24th until August 7th - Check out [Twitch branch for the list of 14 episodes](https://github.com/aws-samples/aws-serverless-airline-booking/tree/twitch).
For more up-to-date information on what's being implemented, take a look at our current [Boards](https://github.com/aws-samples/aws-serverless-airline-booking/projects).
> **Note**
>
> This project is no longer being worked on. This branch repo only serves to give inspiration to others as a point in time reference, you can see the former code by viewing the [`archive` branch](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive)![Serverless Airline Booking sample](./media/prototype-web.png)
## Deployment
To get started with the Serverless Airline application, you can deploy into your AWS Account by following our [Get Started instructions](./docs/getting_started.md)
## Stack
Summary of what the stack looks like now including a picture with the core tech:
* **Front-end** - Vue.js as the core framework, Quasar for UI, Amplify for Auth UI component and AWS integration, and Stripe JS with Stripe Elements for card tokenization, validation, etc.
* **Data** - All data is modeled after GraphQL types and stored in DynamoDB. Python being the core language for all services except Loyalty that's written in Typescript, and JavaScript for front-end.
* **API** - GraphQL is managed by AppSync and also acts as an API Hub to interact with other services. Loyalty implements a REST API to demonstrate how to secure service-to-service communication while maintaining a public endpoint. Payment API is also based on REST to demonstrate an external payment provider.
* **Auth** - Cognito provides JSON Web Tokens (JWT) and along with AppSync fine-grained authorization on what data types users can access.
* **Messaging** - Booking workflow is managed by Step Functions while SNS provides service-to-service communication through messaging between Booking and Loyalty.![Core stack](./media/core-stack.png)
### Back-end
Back-end services that makes up the Serverless Airline functionalities as of now:
Service | Language | Description
------------------------------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------
[Catalog](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive/src/backend/catalog/README.md) | Apache VTL | Provides Flight search. CRUD operations including custom indexes are auto-generated by Amplify
[Booking](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive/src/backend/booking/README.md) | Python and Apache VTL | Provides new and list Bookings. CRUD operations including custom indexes are auto-generated by Amplify. Business workflow is implemented in Python.
[Payment](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive/src/backend/payment/README.md) | YAML and Python | Provides payment authorization, collection and refund. Bulk of Payment integration with Stripe is done via a [Serverless Application Repository App](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:375983427419:applications~api-lambda-stripe-charge). Payment collection and refund operations within Booking business workflow are in Python
[Loyalty](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive/src/backend/loyalty/README.md) | Typescript | Provides Loyalty points for customers including tiers. Fetching and ingesting Loyalty points are implemented in Typescript.### Front-end
See more information about our [Front-end, components, routing and convention](https://github.com/aws-samples/aws-serverless-airline-booking/tree/archive/src/frontend/README.md)
**High level infrastructure architecture**
![Serverless Airline Architecture](./media/prototype-architecture.png)
## License Summary
This sample code is made available under the MIT-0 license. See the LICENSE file.