All Projects β†’ lechatquidanse β†’ Bicing Api

lechatquidanse / Bicing Api

Get statistics and locations of bicycle stations through REST API

Projects that are alternatives of or similar to Bicing Api

Php Ddd Example
🐘🎯 Hexagonal Architecture + DDD + CQRS in PHP using Symfony 5
Stars: ✭ 1,960 (+1215.44%)
Mutual labels:  symfony, ddd, cqrs, behat
Symfonyextension
🎼 Extension integrating Behat with Symfony.
Stars: ✭ 376 (+152.35%)
Mutual labels:  symfony, bdd, gherkin, behat
Messagebus
A MessageBus (CommandBus, EventBus and QueryBus) implementation in PHP7
Stars: ✭ 178 (+19.46%)
Mutual labels:  message-bus, ddd, cqrs
Kreta
Modern project management solution
Stars: ✭ 177 (+18.79%)
Mutual labels:  symfony, ddd, cqrs
Go Api Boilerplate
Go Server/API boilerplate using best practices DDD CQRS ES gRPC
Stars: ✭ 373 (+150.34%)
Mutual labels:  api, ddd, cqrs
OpenSleigh
OpenSleigh is a Saga management library for .NET Core.
Stars: ✭ 198 (+32.89%)
Mutual labels:  cqrs, ddd, message-bus
Behat
BDD in PHP
Stars: ✭ 3,696 (+2380.54%)
Mutual labels:  bdd, gherkin, behat
Bdd Experiment
An experiment on BDD in Symfony2 using Behat, Mink and Zombie.js
Stars: ✭ 12 (-91.95%)
Mutual labels:  symfony, bdd, behat
Symfony 5 Es Cqrs Boilerplate
Symfony 5 DDD ES CQRS backend boilerplate
Stars: ✭ 759 (+409.4%)
Mutual labels:  symfony, ddd, cqrs
Open Loyalty
Open Loyalty is technology for loyalty solutions for starting new loyalty projects.
Stars: ✭ 476 (+219.46%)
Mutual labels:  symfony, ddd, cqrs
Event Store Symfony Bundle
Event Store Symfony Bundle
Stars: ✭ 93 (-37.58%)
Mutual labels:  symfony, ddd, cqrs
Behapi
Behat extension for those who want to write acceptances tests for apis
Stars: ✭ 29 (-80.54%)
Mutual labels:  api, bdd, behat
Interviews
A list of fancy questions I've been asked during the interviews I had. Some of them I ask when interviewing people.
Stars: ✭ 140 (-6.04%)
Mutual labels:  database, ddd, cqrs
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (-15.44%)
Mutual labels:  ddd, cqrs
Directus
Open-Source Data Platform 🐰 β€” Directus wraps any SQL database with a real-time GraphQL+REST API and an intuitive app for non-technical users.
Stars: ✭ 13,190 (+8752.35%)
Mutual labels:  api, database
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (-13.42%)
Mutual labels:  api, database
Todomvc Ddd Cqrs Eventsourcing
Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design
Stars: ✭ 134 (-10.07%)
Mutual labels:  ddd, cqrs
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (-12.08%)
Mutual labels:  ddd, cqrs
Toolkit
Collection of useful patterns
Stars: ✭ 137 (-8.05%)
Mutual labels:  api, message-bus
Postman Bdd
A BDD test framework for Postman and Newman
Stars: ✭ 139 (-6.71%)
Mutual labels:  api, bdd

Bicing Log

Bicing Statistics API

Symfony 4 REST API applying CQRS and DDD patterns, built with CI, driven by BDD.

PHP 7.2 reference build coverage insight Contributions welcome License

Get statistics and locations of bicycle stations.

The goal of this REST API is to ease customer's usage of large-scale public bicycle sharing system.
By collecting data from different providers (Bicing, Velib, ...) it gives powerful information (location to pick or return a bike, best time for picking up a bike, ...).
Here is an example of a user interface project calling the API /lechatquidanse/bicing-user-interface-app

Getting Started β€’ Features β€’ Built With β€’ Development β€’ Coding Standard β€’ CI and Deployment

Bicing API RESTs examples

Getting Started

Prerequisites

To install and run the API you need Docker Compose and... that's all. Please follow the official documentation to install it on your environment.

Installing

Clone the project and run the default installation:

git clone https://github.com/lechatquidanse/bicing-api.git && cd bicing-api && make install

Your docker containers should have been successfully built and run.

Features

Multiple features are proposed across 2 user interfaces, a REST API and command-line commands:

REST API:

Bicing API RESTs features

You can find the concrete user stories written in Gherkin in features folder. These behaviour requirements are tested with Behat.

CLI:

Bicing API CLI features

To run the project once installed:

Built with

Development

The Makefile contains useful command for development purpose

Makefile helpul commands

Coding standard

Domain Driven Design

Code and folder structure follow Domain Driven Design (DDD).

src
    \
        |\ Application     `Contains the Use Cases and the Processes of the domain system, commands, handlers and subscribers`
        |
        |\ Domain          `The system business logic layer (Models, Events, Exceptions...)`
        |
        |\ Infrastructure  `Its the implementation of the system outside the model. I.E: Persistence, Query, etc`
        |
        |\ UserInterface   `It contains all the interfaces allowed for a user of the API (Cli, HTTP, Rest, etc)`

Command Query Responsibility Segregation

In this project, a use case is a command or a query with a single responsibility. This use case is then handled by a handler for a command or a data provider for a query.

Commands are handled by a message bus (SimpleBus) where a command is link to one handler.
For example, to create a station in database:

CQRS command handler

If you want to learn more and look for other DDD and CQRS implementation, here is a great Symfony4 boilerplate from jorge07.

CI and Deployment

CI and deployment can be handled through Gitlab and Docker thanks to .gitlab-ci.yml It contains 3 different stages.

Test

Environment 'test' is triggered when a 'feature/*' branch is pushed to the repository. It will then install project and launch qa tools.

Build

Environment 'build' is triggered when a 'release/*' branch is pushed to the repository. It will then install project, launch qa tools and then build and push a docker image on a registry if no error occurred.

Production

This manual action, will pull the image build by the previous step and update the specific container.

Continuous Integration

License

MIT

StΓ©phane EL MANOUNI  Β·  Linkedin

Pascal Borreli  Β·  GitHub

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].