Skip to content

matiosfree/laravel_migration_ideas

 
 

Repository files navigation

Description

This is a demo of web-store's backend divided on independent modules. The design of application supposes to follow the SOLID principles regarding on common Laravel practises.

Business Requirements

The application's API should implement these methods:

  • return the list of products
  • return the list of currencies
  • update the currency sign($) by id

The application should perform in the background these actions:

  • sync currencies with third-party API
  • sync products with third-party API
  • notify web store administrator about new products and currencies added while sync

Application Architecture Requirements

  • Application should be divided into Modules
  • Modules must be completely decoupled, each Module should not know anything about other ones
  • all interactions between Modules must be performed via App Contracts (Contracts placed on App level)
  • App DTO classes (DTO placed on app level) must be used to transfer data between Modules
  • App Contracts could know only about other App Contracts and App DTO classes
  • App DTO classes could know only about the other App DTO Classes
  • none of the Module related parts should be placed in the App level
  • each Module must have one Main Service Provider extending Illuminate\Support\ServiceProvider
  • Module's Main Service Provider could include the other Module's Service Providers
  • Database Driver (Eloquent by default) should be replaceable

Define Modules

Encapsulates all work with the database. Implemented one provider (Eloquent) which could be replaced by another one

Implement CRUD functionality (create, read, update, all methods)

Implement search functionality

Implements api/Store Endpoint and sync products with third-party API

Implements api/MultiCurrencies Endpoint and sync currencies with third-party API

One place to send different notifications to store administrator

Common App resources

Database migrations

DTO Classes

Contracts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 99.4%
  • Shell 0.6%