What we look after month to month
It starts with a takeover audit
We do not put an application on a plan blind. The first step is an audit: framework release, PHP release, Composer packages and copied-in libraries, the state of backups, how deployments happen, what the error logs already say, and obvious security gaps such as debug output left on in production. You get the findings in writing, sorted by urgency. Critical items are fixed before routine maintenance begins, because there is little point monitoring a system with a known hole in it.
Patching with a staging step
Updates are applied to staging first. For CodeIgniter 4 that normally means a Composer update followed by a check of the upgrade notes for changed files in the app folder. For CodeIgniter 3 it means replacing the system folder with the current release and updating any packages. We run through a checklist of key screens after each round. Routine updates follow a monthly rhythm. A security release that affects you does not wait for it.
Reading the logs so you do not have to
CodeIgniter writes dated log files, and on a busy system they are too noisy to read by hand. We lower the noise by fixing recurring notices, set the logging threshold sensibly for production and send exceptions to an error tracker that groups them and shows which release introduced each one. Uptime checks and disk, memory and certificate expiry alerts cover the server side. The aim is that we know about a fault before your users do.
Performance is mostly queries
When a CodeIgniter application slows down, the framework is almost never the cause. We turn on the slow query log, use the profiler or debug toolbar on staging to see what each page runs, and usually find a handful of culprits: a missing index, a query inside a loop, a report loading whole tables into memory. After fixing those, we cache results that are expensive and rarely change, using file or Redis cache drivers. A larger server is the last resort.
Small changes without ceremony
Plans include time for minor work. Requests go into a shared list, we confirm what each involves, and completed items are reported monthly along with updates applied and incidents handled. Anything too large for the allowance is quoted separately. If your application is old enough that every change is slow and risky, we will raise CodeIgniter 3 support or modernization options with you openly instead of billing hours forever.