{"id":13462181,"url":"https://github.com/TypiCMS/Base","last_synced_at":"2025-03-25T01:31:46.852Z","repository":{"id":25091610,"uuid":"28512514","full_name":"TypiCMS/Base","owner":"TypiCMS","description":"Multilingual CMS built with Laravel.","archived":false,"fork":false,"pushed_at":"2024-10-27T12:02:12.000Z","size":23380,"stargazers_count":1388,"open_issues_count":7,"forks_count":404,"subscribers_count":72,"default_branch":"master","last_synced_at":"2024-10-29T11:10:46.653Z","etag":null,"topics":["cms","laravel","multilingual","php","website","website-builder"],"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/TypiCMS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"typicms"}},"created_at":"2014-12-26T14:15:30.000Z","updated_at":"2024-10-28T18:13:35.000Z","dependencies_parsed_at":"2023-09-21T22:10:36.705Z","dependency_job_id":"6c04fa11-cd63-4890-8ec5-af72ef714b23","html_url":"https://github.com/TypiCMS/Base","commit_stats":{"total_commits":1877,"total_committers":12,"mean_commits":"156.41666666666666","dds":"0.011188066062866264","last_synced_commit":"2ba7d240090b3b5d2f1547ee28ea161cf20163a0"},"previous_names":[],"tags_count":568,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypiCMS%2FBase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypiCMS%2FBase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypiCMS%2FBase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypiCMS%2FBase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TypiCMS","download_url":"https://codeload.github.com/TypiCMS/Base/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245381932,"owners_count":20606126,"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":["cms","laravel","multilingual","php","website","website-builder"],"created_at":"2024-07-31T12:00:41.504Z","updated_at":"2025-03-25T01:31:46.819Z","avatar_url":"https://github.com/TypiCMS.png","language":"PHP","readme":"# TypiCMS\n\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)\n[![Larastan](https://img.shields.io/badge/PHPStan-level%205-brightgreen.svg?style=flat-square)](https://github.com/nunomaduro/larastan)\n\nTypiCMS is a modular multilingual content management system built with [Laravel](https://laravel.com). Out of the box you can manage pages, events, news, places, menus, translations, etc.\n\n![TypiCMS screenshot](https://typicms.org/uploads/files/typicms-screenshot.png?2)\n\n## Table of contents\n\n-   [Features](#features)\n-   [Requirements](#requirements)\n-   [Installation](#installation)\n    -   [Assets](#assets)\n    -   [Locales configuration](#locales-configuration)\n    -   [Installation of a module](#installation-of-a-module)\n-   [Available modules](#available-modules)\n    -   [Pages](#pages)\n    -   [Menus](#menus)\n    -   [Projects](#projects)\n    -   [Categories](#categories)\n    -   [Tags](#tags)\n    -   [Events](#events)\n    -   [News](#news)\n    -   [Contacts](#contacts)\n    -   [Partners](#partners)\n    -   [Files](#files)\n    -   [Users and roles](#users-and-roles)\n    -   [Blocks](#blocks)\n    -   [Translations](#translations)\n    -   [Sitemap](#sitemap)\n    -   [Settings](#settings)\n    -   [History](#history)\n-   [Facades](#facades)\n-   [Artisan commands](#artisan-commands)\n-   [Roadmap](#roadmap)\n-   [Change log](#change-log)\n-   [Contributing](#contributing)\n-   [Credits](#credits)\n-   [Licence](#licence)\n\n## Features\n\n### URLs\n\nThese kind of URLs are managed by the CMS:\n\n**Modules:**\n\n-   /en/events/slug-in-english\n-   /fr/evenements/slug-en-francais\n\n**Pages:**\n\n-   /en/parent-pages-slug-en/subpage-slug-en/page-slug-en\n-   /fr/parent-pages-slug-fr/subpage-slug-fr/page-slug-fr\n\n## Requirements\n\n-   PHP \u003e= 7.2\n-   MySQL 5.7.8\n-   BCMath PHP Extension\n-   Ctype PHP Extension\n-   JSON PHP Extension\n-   Mbstring PHP Extension\n-   OpenSSL PHP Extension\n-   PDO PHP Extension\n-   Tokenizer PHP Extension\n-   XML PHP Extension\n\n## Installation\n\nFirst install [Composer](https://getcomposer.org)\n\n1. Create a new project\n\n    ```\n    composer create-project typicms/base mywebsite\n    ```\n\n2. Enter the newly created folder\n\n    ```\n    cd mywebsite\n    ```\n\n3. Migration of the database, seeding, user creation, npm installation and directory rights\n\n    ```\n    php artisan typicms:install\n    ```\n\nNote: if you use MariaDB, set 'mariadb' to true in config/typicms.php\n\nGo to http://mywebsite.test/admin and log in.\n\n### Assets\n\nAssets are managed with [Laravel Mix](https://github.com/JeffreyWay/laravel-mix).\nIn order to work on assets, you need to install [Node.js](http://nodejs.org), then go to your website folder and run these commands:\n\n1. Install npm packages (in directory **node_modules**)\n\n    ```\n    npm install\n    ```\n\n2. Compile admin and public assets\n\n    ```\n    npm run dev\n    ```\n\n### Locales configuration\n\n1. Set the locales in config/typicms.php, the first key of this array is the main locale and should be the same as the locale defined in config/app.php.\n2. Set main_locale_in_url in config/typicms.php to true or false.\n\n### Installation of a module\n\nThis example is for the News module. After these steps, the module will appear in the sidebar of the back office.\nIf you need to customize it, you can [publish it](#publish-a-module)!\n\n1. Install a module with Composer\n\n    ```\n    composer require typicms/news\n    ```\n\n2. Add `TypiCMS\\Modules\\News\\Providers\\ModuleServiceProvider::class,` to **config/app.php**, before `TypiCMS\\Modules\\Core\\Providers\\ModuleServiceProvider::class,`\n3. Publish the views and migrations\n\n    ```\n    php artisan vendor:publish\n    ```\n\n4. Migrate the database\n\n    ```\n    php artisan migrate\n    ```\n\n### Module scaffolding\n\nLet’s create a module called Cats.\n\n1. Create the module with artisan:\n\n    ```\n    php artisan typicms:create cats\n    ```\n\n2. The module is in **/Modules/Cats**, you can customize it\n3. Add `TypiCMS\\Modules\\Cats\\Providers\\ModuleServiceProvider::class,` to **config/app.php**, before `TypiCMS\\Modules\\Core\\Providers\\ModuleServiceProvider::class,`\n4. Migrate the database\n\n    ```\n    php artisan migrate\n    ```\n\n## Available modules\n\nEach module can be [published](#publish-a-module).\n\n### Pages\n\nPages are nestable with a drag and drop, on drop, URIs are generated and saved in the database.\nEach translation of a page has its own route.\nA page can be linked to a module.\nA page can have multiple sections.\n\n### Menus\n\nEach menu has nestable entries. One entry can be linked to a page or URL.\nYou can return a HTML formated menu with `Menus::render('menuname')` or `@menu('menuname')`.\n\n### Projects\n\nProjects have categories, projects URLs follows this pattern: /en/projects/category-slug/project-slug\n\n### Tags\n\nTags are linked to projects and use the [Selectize](https://brianreavis.github.io/selectize.js/) plugin.\nThe tags module has many to many polymorphic relations so a tag can be easily linked to any module.\n\n### Events\n\nEvents have starting and ending dates.\n\n### News\n\nNews module.\n\n### Contacts\n\nFrontend contact form and admin side records management.\n\n### Partners\n\nA partner has a logo, website URL, title and body content.\n\n### Files\n\nThe files module allows you to upload and organize images, documents and folders. It works with [DropzoneJS](http://www.dropzonejs.com) for the uploading proccess.\nThumbnails are generated on the fly thanks to [Croppa](https://github.com/BKWLD/croppa).\n\nIf you want to store the original images on a storage service such as Amazon s3 and your cropped images on the local disk, set `FILESYSTEM_DRIVER=s3` in your **.env** file and in **config/croppa.php** set `'src_dir' =\u003e 'filesystem.default.driver'` and `'crops_dir' =\u003e storage_path('app/public')`.\n\n### Users and roles\n\nUser registration can be enabled through the settings panel (/admin/settings).\nRoles and Permissions are managed with [spatie/laravel-permission](https://github.com/spatie/laravel-permission).\n\n### Blocks\n\nBlocks are useful to display custom content in your views.\nYou can display the content of a block with `Blocks::render('blockname')` or `@block('blockname')`.\n\n### Translations\n\nTranslations can be stored in the database through the admin panel (/admin/translations).\n\nYou can get a translation from the database with the standard Laravel functions: `__('Key')`, `trans('Key')` or `@lang('Key')`.\n\n### Sitemap\n\nA sitemap is generated by reading all pages available in your project. The URL is /sitemap.xml.\n\n### Settings\n\nChange the website title, logo, and other options in the settings panel.\n\n### History\n\n_created_, _updated_, _deleted_, _online_ and _offline_ actions are logged in database.\nLatest records are displayed in the back office’s dashboard.\n\n## Facades\n\nEach module has a facade that gives you access to the repository, you can call for example `News::latest(3)` to get the three latest news.\nCheck available methods in each module’s repository.\n\n## Artisan commands\n\nCommands are located in **/vendor/typicms/core/src/Commands**\n\n### Installation of TypiCMS\n\n```\nphp artisan typicms:install\n```\n\n### Initial migration and seed\n\n```\nphp artisan typicms:database\n```\n\nThis command is triggered by `typicms:install`\n\n### Publish a module\n\nIf you want to modify a module, for example to add some fields or a relation, you have to publish it by running:\n\n```\nphp artisan typicms:publish \u003cmodulename\u003e\n```\n\nThe module is now located in the **/Modules** directory.\n\nThese steps will be executed:\n\n1. Publishing of views and migrations for Pages module.\n2. Copying of everything excepted views and migrations from **/vendor/typicms/pages/src** to **/Modules/Pages**.\n3. Running `composer remove typicms/pages`.\n\nWhen a module is published, it will be tracked by git and you will be able to make changes in **/Modules/Modulename** directory without loosing changes when running `composer update`.\n\n## Changelog\n\nPlease see [CHANGELOG](https://github.com/TypiCMS/Base/blob/master/CHANGELOG.md) for more information on what has changed.\n\n## Contributing\n\nPlease see [CONTRIBUTING](https://github.com/TypiCMS/Base/blob/master/CONTRIBUTING.md) for details.\n\n## Credits\n\n-   [Samuel De Backer](https://github.com/sdebacker)\n-   [All contributors](https://github.com/TypiCMS/Base/graphs/contributors)\n\n## License\n\nTypiCMS is an open-source software licensed under the [MIT license](http://opensource.org/licenses/MIT).\n","funding_links":["https://github.com/sponsors/typicms"],"categories":["Laravel","PHP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTypiCMS%2FBase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTypiCMS%2FBase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTypiCMS%2FBase/lists"}