https://github.com/akondas/flighthub
Flight ticket booking system implemented with CQRS and ES.
https://github.com/akondas/flighthub
cqrs cqrs-es event-machine event-sourcing event-storming
Last synced: 11 months ago
JSON representation
Flight ticket booking system implemented with CQRS and ES.
- Host: GitHub
- URL: https://github.com/akondas/flighthub
- Owner: akondas
- License: mit
- Created: 2018-11-14T06:48:57.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-25T21:50:20.000Z (over 7 years ago)
- Last Synced: 2025-02-28T19:21:21.336Z (over 1 year ago)
- Topics: cqrs, cqrs-es, event-machine, event-sourcing, event-storming
- Language: PHP
- Homepage:
- Size: 4.67 MB
- Stars: 26
- Watchers: 10
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FlightHub
[](https://php.net/)
[](https://travis-ci.org/akondas/flighthub)
[](https://opensource.org/licenses/MIT)
Flight ticket booking system implemented with CQRS and ES.

> Graph generated from `eventstorming.md` using webeventstorming.com
## Features
### Commands
- [x] Add new flight
- [x] Reserve ticket
- [x] Block seat (with Optimistic Offline Lock)
- [ ] Confirm reservation (with Pessimistic Offline Lock)
- [ ] Cancel reservation (with Implicit Lock)
- [ ] Register customer
- [ ] Add customer address
- [ ] Change customer email (with Coarse-Grained Lock)
> Offline Concurrency Patterns presentation showcase
### Queries
- [x] Health check
- [x] Show flight (by id)
- [x] Search flight by number
- [ ] Show customer (by id)
- [ ] Search customers
- [ ] Show confirmed reservations (by flightId)
### Other
- [x] Frameworkless domain (with EventMachine new **Flavour** feature)
- [ ] Custom projections
- [ ] Integration tests
## Installation
```
docker-compose up -d
docker-compose run php php scripts/create_event_stream.php
```
## Swagger UI
```
http://localhost:8080/swagger/index.html
```
## Testing
```
docker-compose run php php vendor/bin/phpunit
```
## License
FlightHub is released under the MIT Licence. See the bundled LICENSE file for details.
## Author
Arkadiusz Kondas (@ArkadiuszKondas)