PHPackages                             sandwicher/domain - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. sandwicher/domain

ActiveLibrary

sandwicher/domain
=================

A project to test some development concepts - Domain

1.0.1(5y ago)0491MITPHPPHP 8.0.0

Since Feb 23Pushed 5y ago1 watchersCompare

[ Source](https://github.com/rjcf18/sandwicher-domain)[ Packagist](https://packagist.org/packages/sandwicher/domain)[ RSS](/packages/sandwicher-domain/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (1)

Sandwicher Domain
=================

[](#sandwicher-domain)

[![CircleCI](https://camo.githubusercontent.com/35aa3a27fdd7359e6f5048061a285cd6b8a9a6e9f014e871883a6723de9f62ea/68747470733a2f2f636972636c6563692e636f6d2f67682f726a636631382f73616e647769636865722d646f6d61696e2e7376673f7374796c653d736869656c64)](https://circleci.com/gh/rjcf18/sandwicher-domain)[![Latest Stable Version](https://camo.githubusercontent.com/f26ab438635ab78259863bc5f22bfa182ffdc9adea2d87747da1da41f4d2618f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73616e647769636865722f646f6d61696e)](https://packagist.org/packages/sandwicher/domain)[![Total Downloads](https://camo.githubusercontent.com/8ba5edce4543cfe177e2cf411ed3539b761c2352514a465e751bde1c4aa9fbe6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73616e647769636865722f646f6d61696e)](https://packagist.org/packages/sandwicher/domain)[![License](https://camo.githubusercontent.com/c7b812f8b1e413b48e54efead8fccc99c29e1214631ec485eb554f6a66ad55b6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f73616e647769636865722f646f6d61696e)](https://packagist.org/packages/sandwicher/domain)

Index
-----

[](#index)

- [Summary](#summary)
- [Project Setup](#project-setup)
- [Business Logic Description / Requirements](#business-logic-description--requirements)
- [Tech Specifics](#tech-specifics)
    - [Architecture](#architecture)
    - [Composer](#composer)
    - [CI/CD](#cicd)

Summary
-------

[](#summary)

A proof of concept project to apply some engineering and development concepts.

This project consists in a simple app that will make any sandwich lover's live easier. Right now everybody that wants to have a sandwich from their favourite local sandwich shop needs to write down their preferred choice, and when you have a large group this app might come in handy to manage your group's meals and orders.

Project Setup
-------------

[](#project-setup)

- In order to setup/run the project it is required only to have [docker](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04) and [docker compose](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04) installed
- Laravel Sail script was included in the project to handle the docker environment and the execution of commands inside the containers so it will be you best friend to run anything inside the containers.
- To run any command simply run `./sail `. To get the project started run `./sail up -d`. This will setup the docker environment and put all containers running.
- Run `./sail composer install` to install all our PHP dependencies
- And that is all. You should be all setup now.
- In order to run all the application tests run `./sail composer test`

Business Logic Description / Requirements
-----------------------------------------

[](#business-logic-description--requirements)

- Right now everybody that wants to have a sandwich from their favourite local sandwich shop needs to write down their preferred choice
- We need an application backed by a database to manage this (very complex) process.
- An administrator should be able to add users (people that are going to eat the sandwich, lets call them consumers).
- The administrator should open up “registration” for a new meal. That stops people from ordering stuff separately all the time.
- A meal has a status that can be controlled by the admin (open and closed).
- Only one meal can be “open” at a single time. And only on an open meal users can register their choice.
- A meal also has a date (the date when the meal is eaten)
- A meal should also have a unique link. This link can be opened on a mobile device (without a password) to check what the current order is.
- Every user should have a unique code he can login with on a certain page. On that page the user can pick:

    - What bread (dropdown list, choices from database)
    - Size of the bread (dropdown, 15 or 30 cm)
    - If it should be oven baked or not
    - Taste of the sandwich (dropdown from database, for instance chicken fajita)
    - Extra’s (extra bacon, double meat or extra cheese)
    - What vegetables you want on the sandwich (dropdown, multiple possible values from the database)
    - What sauce (dropdown from the database)
    - Then the user can place his order (on the current open order).
- The user must be able to edit his order (but only when the order/meal is still open).
- The user should also be able to view his previous orders when he is “logged in” by his unique link.

Tech specifics
--------------

[](#tech-specifics)

### Architecture

[](#architecture)

This app domain is following [Screaming Architecture](https://blog.cleancoder.com/uncle-bob/2011/09/30/Screaming-Architecture.html), [SOLID](https://en.wikipedia.org/wiki/SOLID) and [DDD](https://en.wikipedia.org/wiki/Domain-driven_design) principles mainly.

This domain is going to be used (for now) in a [laravel app project](https://github.com/rjcf18/sandwicher-laravel-app)

The application is currently undergoing some refactoring to start using the domain for the application's business use cases.

### Composer

[](#composer)

This project is currently published to [Packagist](https://packagist.org/) so it can easily be imported via composer to any project.

### CI/CD

[](#cicd)

The project is integrated with CircleCI to run our tests pipeline (link above).

Currently it is only running the tests but as next steps, a release should be automatically created in the repository with the code after passing all tests to avoid doing this process manually.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

2

Last Release

1909d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cc7321559ed01221673f0b8d615f12e94e246e73057b083ac58adc387b6f9486?d=identicon)[rjcf47](/maintainers/rjcf47)

---

Top Contributors

[![rjcf18](https://avatars.githubusercontent.com/u/6710380?v=4)](https://github.com/rjcf18 "rjcf18 (16 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sandwicher-domain/health.svg)

```
[![Health](https://phpackages.com/badges/sandwicher-domain/health.svg)](https://phpackages.com/packages/sandwicher-domain)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
