PHPackages                             xxperez/codeigniter4modular - 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. [Framework](/categories/framework)
4. /
5. xxperez/codeigniter4modular

ActiveProject[Framework](/categories/framework)

xxperez/codeigniter4modular
===========================

CodeIgniter4 modular starter app

1.1.6(4y ago)4049618[1 issues](https://github.com/XXPerez/Codeigniter4Modular/issues)[1 PRs](https://github.com/XXPerez/Codeigniter4Modular/pulls)MITPHPPHP &gt;=7.2

Since Oct 5Pushed 3y ago2 watchersCompare

[ Source](https://github.com/XXPerez/Codeigniter4Modular)[ Packagist](https://packagist.org/packages/xxperez/codeigniter4modular)[ Docs](https://github.com/XXPerez/Codeigniter4Modular)[ RSS](/packages/xxperez-codeigniter4modular/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (17)Used By (0)

CodeIgniter 4 Modular Structure Application Starter
===================================================

[](#codeigniter-4-modular-structure-application-starter)

What is CodeIgniter Modular ?
-----------------------------

[](#what-is-codeigniter-modular-)

CodeIgniter is a PHP full-stack web framework that is light, fast, flexible, and secure. More information can be found at the [official site](http://codeigniter.com).

The "Modular Structure" allows to separate each module from other, having each one, controllers, database, filters, libraries, languages, models, routes, validations and views.

ModulesModuleStructureModules/Home/ConfigControllersLanguageViewsModules/Users/ConfigControllersDatabaseFiltersLanguageLibrariesModelsValidationViewsModules/Utils/ConfigControllersLanguageLibrariesThis repository holds a composer-installable app starter, with jQuery, Bootstrap4, and Login/Register fully working module examples It has been built from the [development repository](https://github.com/codeigniter4/CodeIgniter4).

More information about the plans for version 4 can be found in [the announcement](http://forum.codeigniter.com/thread-62615.html) on the forums.

The user guide corresponding to this version of the framework can be found [here](https://codeigniter4.github.io/userguide/).

Installation &amp; updates
--------------------------

[](#installation--updates)

Go to a browsable directory (Example: c:\\xampp\\htdocs)

```
composer create-project xxperez/codeigniter4modular
```

then

```
cd codeigniter4modular
```

Updates
-------

[](#updates)

Whenever there is a new release of the framework:

```
composer update
```

When updating, check the release notes to see if there are any changes you might need to apply to your `app` folder. The affected files can be copied or merged from `vendor/codeigniter4/framework/app`.

Setup
-----

[](#setup)

Go to Codeigniter4Modular directory.

```
cd codeigniter4modular
```

Copy `env` to `.env`:

```
copy env .env
```

Edit .env, and tailor for your app, specifically the baseURL and default database settings:

```
app.baseURL = 'http://localhost/codeigniter4modular/public'

database.default.hostname = localhost
database.default.database = database
database.default.username = username
database.default.password = password
database.default.DBDriver = MySQLi
database.default.port = 3306
```

After database configuration, run migrate to ensure the table users are created:

```
php spark migrate -all
```

Modular configuration
---------------------

[](#modular-configuration)

Add this lines to your .env, and adapt as necessary. The example files have english and spanish translations:

```
#--------------------------------------------------------------------
# LANGUAGE
#--------------------------------------------------------------------
app.defaultLocale = 'en'
app.supportedLocales = ['en','es','fr','de']
app.negotiateLocale = true
app.appTimezone = 'America/Chicago'
```

Now, you can test the app, browse your installed directory, click on "Login" in the main page.

### More about modular configuration

[](#more-about-modular-configuration)

All modules will reside under /Modules, but can be allocated elsewhere. When your create a module, edit /app/Config/Autoload.php and add your module to the PSR4, to be able to be found.

```
	public $psr4 = [
            APP_NAMESPACE => APPPATH, // For custom app namespace
            'Config'      => APPPATH . 'Config',
            APP_NAMESPACE.'\Controllers' => APPPATH.'Controllers',
            'Dashboard' => APPPATH . '../Modules\Dashboard' ,
            'Users' => APPPATH . '../Modules\Users' ,
	];
```

Each filter you declare inside a module, must to be aliased in app/Config/Filters.php to be able to be used inside a rule.

```
	public $aliases = [
		'csrf'     => \CodeIgniter\Filters\CSRF::class,
		'toolbar'  => \CodeIgniter\Filters\DebugToolbar::class,
		'honeypot' => \CodeIgniter\Filters\Honeypot::class,
		'auth' => \Users\Filters\AuthFilter::class,
		'noauth' => \Users\Filters\NoAuthFilter::class,
	];
```

Each validation you declare inside a module, must to be set in the ruleSets variable in app/Config/Validation.php.

```
	public $ruleSets = [
		\CodeIgniter\Validation\Rules::class,
		\CodeIgniter\Validation\FormatRules::class,
		\CodeIgniter\Validation\FileRules::class,
		\CodeIgniter\Validation\CreditCardRules::class,
		\Users\Validation\UserRules::class,
	];
```

### Modular libraries

[](#modular-libraries)

Libraries within a module are used to define functions that lightweight the controllers. If you prefer to use validations inside a module library, you will need to access requests and validation objects directly:

```
        $request = \Config\Services::request();
        $validation = \Config\Services::validation();
        $validation->setRules($rules, $errors);
        $validation->withRequest($request)->run();
        $validationErrors = $validation->getErrors();
```

### Modular creation

[](#modular-creation)

To create new modules, you can use spark module:create option, from base directory. For example, to create a module named 'Customers':

```
php spark module:create Customers
```

Module create options: -f ModuleDir (other than App/Modules) -c FCLMVO (Create only con\[F\]ig, \[C\]ontroller, \[L\]ibrary, \[M\]odel, \[V\]iew, \[O\]ther dirs)

```
php spark module:create Customers -c FCMV
```

Important Change with index.php
-------------------------------

[](#important-change-with-indexphp)

`index.php` is no longer in the root of the project! It has been moved inside the *public* folder, for better security and separation of components.

This means that you should configure your web server to "point" to your project's *public* folder, and not to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter *public/...*, as the rest of your logic and the framework are exposed.

**Please** read the user guide for a better explanation of how CI4 works! The user guide updating and deployment is a bit awkward at the moment, but we are working on it!

Repository Management
---------------------

[](#repository-management)

We use Github issues, in our main repository, to track **BUGS** and to track approved **DEVELOPMENT** work packages. We use our [forum](http://forum.codeigniter.com) to provide SUPPORT and to discuss FEATURE REQUESTS.

This repository is a "distribution" one, built by our release preparation script. Problems with it can be raised on our forum, or as issues in the main repository.

Server Requirements
-------------------

[](#server-requirements)

PHP version 7.2 or higher is required, with the following extensions installed:

- [intl](http://php.net/manual/en/intl.requirements.php)
- [libcurl](http://php.net/manual/en/curl.requirements.php) if you plan to use the HTTP\\CURLRequest library

Additionally, make sure that the following extensions are enabled in your PHP:

- json (enabled by default - don't turn it off)
- [mbstring](http://php.net/manual/en/mbstring.installation.php)
- [mysqlnd](http://php.net/manual/en/mysqlnd.install.php)
- xml (enabled by default - don't turn it off)

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity57

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 ~36 days

Recently: every ~132 days

Total

16

Last Release

1512d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/42c334040584926e2b7f1eb0a96d9fc4ba8175c179216c5b306b7c05961926aa?d=identicon)[XMadMax](/maintainers/XMadMax)

---

Top Contributors

[![XXPerez](https://avatars.githubusercontent.com/u/348064?v=4)](https://github.com/XXPerez "XXPerez (47 commits)")

---

Tags

codeigniter4php

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/xxperez-codeigniter4modular/health.svg)

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

###  Alternatives

[codeigniter4/appstarter

CodeIgniter4 starter app

1891.8M](/packages/codeigniter4-appstarter)[abydahana/aksara

Aksara is a CodeIgniter based CRUD Toolkit you can use to build complex applications become shorter, secure and more reliable just in a few lines of code. Serving both CMS or Framework, produce both HEADLESS (RESTful API) or TRADITIONAL (Browser Based), just by writing single controller. Yet it's reusable, scalable and ready to use!

1101.2k](/packages/abydahana-aksara)[irsyadulibad/codeigniter4-datatables

Server side DataTables library for CodeIgniter4 framework

702.4k](/packages/irsyadulibad-codeigniter4-datatables)[mufidjamaluddin/codeigniter4-hmvc

CodeIgniter4 HMVC starter app

672.0k](/packages/mufidjamaluddin-codeigniter4-hmvc)

PHPackages © 2026

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