{"id":15527148,"url":"https://github.com/stof/framework","last_synced_at":"2025-09-03T18:37:39.916Z","repository":{"id":27316962,"uuid":"30791235","full_name":"stof/framework","owner":"stof","description":"A new PHP Framework whose goal it is to be as invisible to your application as it can be!","archived":false,"fork":false,"pushed_at":"2015-02-15T16:29:17.000Z","size":139,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T23:51:12.244Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://somos.github.io","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"somos/framework","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stof.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-14T08:22:23.000Z","updated_at":"2023-05-12T15:00:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"66794b46-ba2c-470f-9018-7b9c1139d440","html_url":"https://github.com/stof/framework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stof/framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stof%2Fframework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stof%2Fframework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stof%2Fframework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stof%2Fframework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stof","download_url":"https://codeload.github.com/stof/framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stof%2Fframework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262697256,"owners_count":23349891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T11:04:42.118Z","updated_at":"2025-06-30T02:05:31.574Z","avatar_url":"https://github.com/stof.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Somos\n=====\n\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/somos/framework/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/somos/framework/?branch=master)\n[![Build Status](https://travis-ci.org/somos/framework.svg)](https://travis-ci.org/somos/framework)\n\n\u003e **Important**: I have only started working on this framework recently; this means that some of the features mentioned\n\u003e in this README or other documents may not have been (fully) implemented yet. This will change over time and I will\n\u003e change this message accordingly.\n\nSomos is a framework based on renewed insights and trends within the PHP Community. It intends to be as free of magic\nas is possible but at the same time gets out of the way of your application.\n\nDid you ever experience this?\n\n* Ever felt that you need to write a ton of boilerplate code for your framework just to get your app running?\n* Ever wondered why only 1 out of 10 folders in your project actually contains your code and the other ones are all for \n  your framework.\n* You write workarounds to get your framework to do what you want to do?\n\nWith Somos I have started a journey to create a framework where all you do is write the code that you need to write for\nyour application and not to satisfy Somos.\n\nThe buzzwords (a.k.a. features)\n-------------------------------\n\nSomos is at heart a **micro-framework** that sports a **Message Bus** internally and that comes with a series of \ncommands to transform it into a **full-stack** framework for your needs. It is flexible, and small, enough to be an \nexcellent choice for command line tools but also for enterprise web applications that have to be able to scale.\n\nBy leveraging the **[Action-Domain-Responder](https://github.com/pmjones/adr)** design pattern as a first-class citizen \nSomos completely decouples the business logic from the presentation. Actions are blissfully unaware of how their data \nis returned, which in turn enables you to reuse that same action both from the **command line** option, in a \n**REST API** or normal **web application**.\n\nSomos cares about **playing nice** with libraries that can be used. Somos leverages PHP-DI's **auto-wiring** \ncapabilities to automatically inject dependencies that are needed to construct objects, meaning that _you_ don't have \nto write lengthy service definitions to add a single service.\n\nIn addition Somos leverages all the goodness brought to us by the **PHP-FIG** by adhering to **PSR-0, PSR-2, PSR-4, \nPSR-5 (in draft) and PSR-7 (in draft)**. This means that when you want to replace one component with another that you\nonly have to point Somos in the right direction and it integrates it as if it had always been there.\n\nInstallation\n------------\n\n\u003e **Important**: because we are still under development not all examples will work yet; I use the examples as a goal\n\u003e to work towards. This framework is intended to be as simple and out-of-your-way as is possible and using those\n\u003e examples I can challenge myself to work towards that goal.\n\nIn the (examples repository)[http://github.com/somos/examples] you can find various ways to use Somos, ranging from a\nCommand Line application, a blog and a REST API. Anything is possible!\n\nThe easiest way to use Somos is by installing it using composer and run the 'init' command to create a skeleton \ndirectory structure.\n\n    composer require somos/framework\n    ./vendor/bin/somos init\n    \n\u003e By default Somos will create a skeleton for a web application with all bells and whistles (such as Doctrine for ORM).\n\u003e Somos is also capable of creating skeletons when you want to use it as a micro-framework or cli application; please\n\u003e run `/vendor/bin/somos list init` to see a list of possibilities.\n\nWhy another framework?\n----------------------\n\nIn the last few years we have seen new ideas and concepts emerge in the PHP community; among those is the Action\nDomain Responder pattern, Domain Driven Design, the creation of PSR-7 and auto-wiring dependency injection containers. \nCombine this with several years of experience with various frameworks and I wanted to at least try and see if I could \nuse those concepts and my experience to create a unique framework experience.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstof%2Fframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstof%2Fframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstof%2Fframework/lists"}