{"id":19956549,"url":"https://github.com/tbreuss/mithril-slim-skeleton","last_synced_at":"2025-05-03T20:32:16.982Z","repository":{"id":44601541,"uuid":"449982054","full_name":"tbreuss/mithril-slim-skeleton","owner":"tbreuss","description":"A single-page application (SPA) skeleton based on Mithril.js and Slim Framework trying to use good practices","archived":false,"fork":false,"pushed_at":"2022-02-09T15:36:32.000Z","size":308,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-07T21:11:35.065Z","etag":null,"topics":["mithril-starter","mithriljs","slim-framework","slim4","slim4-skeleton","spa","typescript","webapplication"],"latest_commit_sha":null,"homepage":"https://mithril-slim-skeleton.tebe.ch","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/tbreuss.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":"2022-01-20T06:32:23.000Z","updated_at":"2025-03-21T05:06:20.000Z","dependencies_parsed_at":"2022-09-03T21:52:33.592Z","dependency_job_id":null,"html_url":"https://github.com/tbreuss/mithril-slim-skeleton","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbreuss%2Fmithril-slim-skeleton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbreuss%2Fmithril-slim-skeleton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbreuss%2Fmithril-slim-skeleton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbreuss%2Fmithril-slim-skeleton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tbreuss","download_url":"https://codeload.github.com/tbreuss/mithril-slim-skeleton/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252253151,"owners_count":21718770,"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":["mithril-starter","mithriljs","slim-framework","slim4","slim4-skeleton","spa","typescript","webapplication"],"created_at":"2024-11-13T01:34:48.212Z","updated_at":"2025-05-03T20:32:11.972Z","avatar_url":"https://github.com/tbreuss.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SPA Skeleton with Mithril.js and Slim Framework\n\nThis is a single-page application (SPA) skeleton based on [Mithril.js](https://mithril.js.org/) and [Slim Framework 4](https://www.slimframework.com/) trying to use good practices.\nThe application itself offers a frontend and backend, that allows you to view and manage some specific CRM data.\n\n## Demo\n\n\u003chttps://mithril-slim-skeleton.tebe.ch/\u003e\n\n\n## Features\n\n[JS frontend](https://github.com/tbreuss/mithril-slim-skeleton/tree/main/frontend)\n\n- [x] Single page application (SPA) using Mithril.js\n- [x] Mitosis pattern for simple state management\n- [x] Types without TypeScript using JSDoc\n- [x] Frontend Tooling with vite.js\n- [x] Minimal CSS with Pico.css\n- [x] ESLint JavaScript Linter\n- [ ] Testing\n\n[PHP backend](https://github.com/tbreuss/mithril-slim-skeleton/tree/main/backend)\n\n- [x] REST API using Slim Framework 4\n- [x] Autoloading (PSR-4)\n- [x] Code styles (PSR-12)\n- [x] Dependency injection container (PSR-11)\n- [x] HTTP message interfaces (PSR-7)\n- [x] HTTP Server Request Handlers and Middleware (PSR-15)\n- [x] HTTP factories (PSR-17)\n- [x] HTTP router and dispatcher (Slim)\n- [x] Logging (PSR-3)\n- [x] PHPDoc standard (PSR-5, PSR-19)\n- [x] PHPStan (Level: max)\n- [x] Single action controllers\n- [x] Domain Driven Design (DDD) partially\n- [x] JWT for (synchronous) authentication\n- [ ] Unit Tests\n- [ ] Integration Tests\n\n[Database](https://github.com/tbreuss/mithril-slim-skeleton/tree/main/database)\n\n- [x] Database Migrations using Phinx\n- [x] SQLite database (for the sake of simplicity)\n- [x] Migration scripts\n- [x] Seed scripts using Faker\n\n\n## Requirements\n\n- PHP \u003e= 8.0\n- Composer \u003e= 2.0\n- Node \u003e= 17.0\n- NPM \u003e= 8.0\n\n\n## Installation\n\n~~~bash\ngit clone https://github.com/tbreuss/mithril-slim-skeleton\ncd mithril-slim-skeleton\nsh setup.sh\n~~~\n\n\n## Development\n\nStart development environment\n\n~~~bash\nsh start.sh\n~~~\n\nOr start backend and frontend manually, see README files in own repos.\n\n\n## Scripts\n\nFrontend\n\n| Command | Description |\n| --- | --- |\neslint:check | eslint . --ext .js\neslint:fix | eslint . --ext .js --fix\nts:check | tsc --project jsconfig.json\nts:check:watch | tsc --watch --project jsconfig.json\n\nBackend\n\n| Command | Description |\n| --- | --- |\ncs:check | Runs the cs:check script as defined in composer.json.\ncs:fix | Runs the cs:fix script as defined in composer.json.\nlint:check | Runs the lint:check script as defined in composer.json.\nsniffer:check | Runs the sniffer:check script as defined in composer.json.\nsniffer:fix | Runs the sniffer:fix script as defined in composer.json.\nstan:check | Runs the stan:check script as defined in composer.json.\n\n\n## Links\n\nToolset used\n\n- https://mithril.js.org\n- https://vitejs.dev\n- https://picocss.com\n- https://www.slimframework.com\n- https://eslint.org\n- https://jsdoc.app\n- https://www.sqlite.org\n- https://phinx.org\n- https://fakerphp.github.io\n\nHelpful websites, articles, and blog posts\n\n- https://restfulapi.net/http-methods/\n- https://dev.to/t7yang/type-safety-in-javascript-with-jsdoc-and-vscode-1a28\n- https://depth-first.com/articles/2021/10/20/types-without-typescript/\n- https://odan.github.io/slim4-skeleton/\n- https://github.com/slimphp/Slim-Skeleton\n\n\n## Contributing\n\nPlease [create an issue](https://github.com/tbreuss/mithril-slim-skeleton/issues) before sending a pull reqest.\n\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbreuss%2Fmithril-slim-skeleton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftbreuss%2Fmithril-slim-skeleton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbreuss%2Fmithril-slim-skeleton/lists"}