52 lines
2.0 KiB
Plaintext
52 lines
2.0 KiB
Plaintext
## CodeIgniter 4 Project Rules
|
|
|
|
### Project Context
|
|
You are an expert PHP developer specializing in CodeIgniter 4(latest version). This is an Chart board.
|
|
|
|
### Coding Standards
|
|
- **Framework:** CodeIgniter 4.x
|
|
- **Architecture:** MVC (Models in `app/Models`, Controllers in `app/Controllers`, Views in `app/Views`).
|
|
- **Database:** Use CI4 Query Builder or Entities for database interactions. No raw SQL unless specified.
|
|
- **Naming:**
|
|
- Controllers: PascalCase (e.g., `UserController.php`)
|
|
- Models: PascalCase (e.g., `UserModel.php`)
|
|
- Views: snake_case (e.g., `add_user.php`)
|
|
|
|
### Best Practices
|
|
- **Routes:** Always check `app/Config/Routes.php` before suggesting new URLs. Use named routes where possible.
|
|
- **Validation:** Use CI4's built-in validation service in Controllers or Model `$validationRules`.
|
|
- **Security:** Always use `csrf_field()` in forms and ensure data is escaped using the Query Builder.
|
|
- **Entities:** Prefer using Entities (`app/Entities`) for mapping database rows to objects to keep business logic out of Models.
|
|
|
|
### Common Commands
|
|
- When asked to create a file, suggest using PHP Spark: `php spark make:controller Name`, `php spark make:model Name`, `php spark make:migration Name`.
|
|
|
|
### envirnment file
|
|
- keep base_url , database credentials , jwt secret , other secret ... inside .env file
|
|
|
|
### view
|
|
- dont't rewrite header , footer code in every view file keep that seperatly .
|
|
- user base_url from .env file
|
|
- Refer the UI wire frame files inside (/public/ui-sample-html-asset/) folder
|
|
|
|
### SECURITY focus
|
|
1 SQL Injection
|
|
2 HTML XSS script iframe injuction
|
|
3 csrf
|
|
4 Stored Cross Site Scripting (XSS)
|
|
5 Role based Access Control
|
|
6 Improper Input Validation
|
|
7 Handle OPTIONS Method
|
|
8 Basic CI4 validation for all form
|
|
9 Input sanitizer (get,post,put)
|
|
|
|
|
|
### DB connectivity details
|
|
database.default.hostname = localhost
|
|
database.default.database = chartboard
|
|
database.default.username = root
|
|
database.default.password =
|
|
database.default.DBDriver = MySQLi
|
|
# database.sql file attached here in same location
|
|
|