{"id":33988351,"url":"https://github.com/codemonster-ru/annabel","last_synced_at":"2025-12-13T05:56:05.195Z","repository":{"id":314507193,"uuid":"1055669193","full_name":"codemonster-ru/annabel","owner":"codemonster-ru","description":"Elegant and lightweight PHP framework for modern web applications","archived":false,"fork":false,"pushed_at":"2025-11-15T17:37:55.000Z","size":84,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-15T18:09:56.581Z","etag":null,"topics":["annabel","codemonster","container","framework","mvc","php","router","view"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codemonster-ru.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-12T16:02:56.000Z","updated_at":"2025-11-15T17:30:27.000Z","dependencies_parsed_at":"2025-09-12T22:46:05.708Z","dependency_job_id":"e8bfdbb6-2321-464b-9cc5-45e31d2a12c8","html_url":"https://github.com/codemonster-ru/annabel","commit_stats":null,"previous_names":["codemonster-ru/annabel"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/codemonster-ru/annabel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codemonster-ru%2Fannabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codemonster-ru%2Fannabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codemonster-ru%2Fannabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codemonster-ru%2Fannabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codemonster-ru","download_url":"https://codeload.github.com/codemonster-ru/annabel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codemonster-ru%2Fannabel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27701220,"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","status":"online","status_checked_at":"2025-12-13T02:00:09.769Z","response_time":147,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["annabel","codemonster","container","framework","mvc","php","router","view"],"created_at":"2025-12-13T05:56:04.653Z","updated_at":"2025-12-13T05:56:05.186Z","avatar_url":"https://github.com/codemonster-ru.png","language":"PHP","readme":"# Annabel\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/codemonster-ru/annabel.svg?style=flat-square)](https://packagist.org/packages/codemonster-ru/annabel)\n[![Total Downloads](https://img.shields.io/packagist/dt/codemonster-ru/annabel.svg?style=flat-square)](https://packagist.org/packages/codemonster-ru/annabel)\n[![License](https://img.shields.io/packagist/l/codemonster-ru/annabel.svg?style=flat-square)](https://packagist.org/packages/codemonster-ru/annabel)\n[![Tests](https://github.com/codemonster-ru/annabel/actions/workflows/tests.yml/badge.svg)](https://github.com/codemonster-ru/annabel/actions/workflows/tests.yml)\n\nElegant and lightweight PHP framework for modern web applications.\n\n## Installation\n\n```bash\ncomposer require codemonster-ru/annabel\n```\n\n## Quick Start\n\n```php\n// public/index.php\nrequire __DIR__ . '/../vendor/autoload.php';\n\n$app = require __DIR__ . '/../bootstrap/app.php';\n$app-\u003erun();\n\n// bootstrap/app.php\nuse Codemonster\\Annabel\\Application;\n\n$baseDir = __DIR__ . '/..';\n\n$app = new Application($baseDir);\n\nrequire \"$baseDir/routes/web.php\";\n\nreturn $app;\n\n// routes/web.php\nrouter()-\u003eget('/', fn() =\u003e view('home', ['title' =\u003e 'Welcome to Annabel']));\n```\n\n## CLI\n\nAnnabel ships with a lightweight CLI similar to Laravel's `artisan`. It already supports:\n\n- `about` — show version, base path, and loaded providers\n- `route:list` — list registered routes\n- `config:get key` — read a config value\n- `container:list` — show container bindings/instances\n- `serve` — run PHP built-in server (default 127.0.0.1:8000)\n- With `codemonster-ru/database` installed: `make:migration`, `migrate`, `migrate:rollback`, `migrate:status` (appear in `annabel list`; connection is checked when commands run)\n\n```bash\nphp vendor/bin/annabel\nphp vendor/bin/annabel help\nphp vendor/bin/annabel help list\n```\n\n## Database Integration\n\nAnnabel ships with first‑class integration for  \n[`codemonster-ru/database`](https://github.com/codemonster-ru/database).\n\n### 1. Create `config/database.php`\n\n```php\nreturn [\n    'default' =\u003e 'mysql',\n\n    'connections' =\u003e [\n        'mysql' =\u003e [\n            'driver'   =\u003e 'mysql',\n            'host'     =\u003e '127.0.0.1',\n            'port'     =\u003e 3306,\n            'database' =\u003e env('DB_NAME'),\n            'username' =\u003e env('DB_USER'),\n            'password' =\u003e env('DB_PASS'),\n            'charset'  =\u003e 'utf8mb4',\n        ],\n\n        'sqlite' =\u003e [\n            'driver'   =\u003e 'sqlite',\n            'database' =\u003e base_path('database/database.sqlite'),\n        ],\n    ],\n];\n```\n\n### 2. Usage\n\n```php\n// Query builder\n$users = db()-\u003etable('users')-\u003ewhere('active', 1)-\u003eget();\n\n// Schema builder\nschema()-\u003ecreate('posts', function ($table) {\n    $table-\u003eid();\n    $table-\u003estring('title');\n});\n\n// Transactions\ntransaction(function () {\n    db()-\u003etable('logs')-\u003einsert(['type' =\u003e 'created']);\n});\n```\n\n## Helpers\n\n| Function                | Description                        |\n| ----------------------- | ---------------------------------- |\n| `app()`                 | Access the application container   |\n| `base_path()`           | Resolve base project paths         |\n| `config()`              | Get or set configuration values    |\n| `env()`                 | Read environment variables         |\n| `dump()` / `dd()`       | Debugging utilities                |\n| `request()`             | Get current HTTP request           |\n| `response()` / `json()` | Create HTTP response               |\n| `router()` / `route()`  | Access router instance             |\n| `view()`                | Render or return view instance     |\n| `session()`             | Access session store               |\n| `db()`                  | Get the active database connection |\n| `schema()`              | Get the schema builder             |\n| `transaction()`         | Execute a DB transaction           |\n\nAll helpers are autoloaded automatically.\n\n## Testing\n\n```bash\ncomposer test\n```\n\n## Author\n\n[**Kirill Kolesnikov**](https://github.com/KolesnikovKirill)\n\n## License\n\n[MIT](https://github.com/codemonster-ru/annabel/blob/main/LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodemonster-ru%2Fannabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodemonster-ru%2Fannabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodemonster-ru%2Fannabel/lists"}