Service
Custom PHP applications built around how you actually work
When an off-the-shelf plugin does not fit the business, I build the thing that does — booking systems, client portals, quote calculators, admin dashboards, and integrations with whatever API you already depend on.
- Starting from
- $200
- Timeline
- 10 days
- Proof
- 3 live sites
- Aftercare
- 30 days
What custom php applications actually means
Custom PHP development means building the application a business actually runs on, rather than bending an off-the-shelf product until it almost fits. Booking systems, client portals, quote calculators, admin dashboards, and integrations with whatever API the business already depends on.
The test for whether you need one is simple: if the process that makes you money currently lives in a spreadsheet that only one person understands, that spreadsheet is your application and it is a single point of failure.
Who this is for
- Businesses whose process does not fit any product they have tried
- Teams running critical operations from a spreadsheet nobody dares restructure
- Companies paying for several SaaS tools to approximate one workflow
- Anyone who needs customer logins, role-based access or an approval step
- Businesses with an existing system that needs extending rather than replacing
Who it is not for
Saying this out loud costs me some enquiries and saves both of us the ones that would have gone wrong. If you are on this list, I will tell you in the first reply rather than after a deposit.
- Native mobile applications — different platform, different skill set, and I will say so
- Anything needing real-time infrastructure at large scale
- Problems a well-configured off-the-shelf product already solves, where custom is an expensive way to be different
- Projects with no internal owner. Custom software needs someone who can decide
The problems it solves
- A process living in one spreadsheet
- Modelled into a documented schema with an interface built for whoever uses it daily.
- Double entry between systems
- API integration where one exists, scheduled import where it does not.
- No visibility for the people who need it
- Role-scoped views: the counter sees today, the owner sees the month.
- Manual work that repeats every day
- Automated where the rules can be written down, and left alone where judgement is genuinely required.
- Data nobody can get out
- Exports in formats your accountant and your next developer can both use.
What you get
- Database design and schema, documented rather than improvised
- Application build in PHP with a MySQL backend
- Admin interface built for the people who will use it daily
- Role-based access control where more than one person logs in
- Third-party REST API integrations
- Transactional email via PHPMailer with proper SPF/DKIM alignment
- Input validation, prepared statements and CSRF protection throughout
- Written handover documentation — you are not dependent on me to keep it running
What is included in the starting price
Everything below is in the $200 figure. Nothing here is quoted as an extra once the build is underway, which is the point of publishing it.
- Database design, documented rather than improvised
- Application build in PHP with MySQL
- Admin interface designed around the daily task, not the table structure
- Role-based access control where more than one person logs in
- Input validation, prepared statements and CSRF protection throughout
- Transactional email with proper authentication
- Written handover documentation aimed at whoever maintains it next
- 30 days of snag fixes after go-live
What costs extra, and why
A quote that omits these is not cheaper — it is less honest. Each one is real work that someone has to do, and pretending otherwise is how a fixed price becomes a negotiation in week two.
- Data migration from an existing system
- Depends entirely on the state of the current data, which is usually worse than remembered.
- Third-party API integrations
- Each is its own small project. Undocumented APIs cost more than documented ones.
- Bulk historical data entry
- If it cannot be imported, someone has to type it, and that time is real.
- Ongoing feature development
- Better handled as a small monthly block than as a series of one-off quotes.
How the work runs
- Map the process. I sit with how the business actually works today, including the spreadsheet everyone pretends is not load-bearing.
- Model the data. Schema first. Getting this wrong is what makes applications expensive to change later.
- Build in slices. One working feature at a time on a staging URL, so you can correct course early rather than at handover.
- Harden. Prepared statements, validation, access control and error handling — before launch, not after an incident.
- Hand over. Documentation, credentials and a walkthrough. You own everything.
Day by day
10 days from the day scope is signed off. Published as a schedule rather than a promise of speed — you should be able to tell on day three whether a build is on track.
| When | What happens |
|---|---|
| Days 1–2 | Process mapping and schema design. How the business works today, including the parts nobody documents. |
| Days 3–5 | Core application build on a staging URL, with the main workflow usable end to end. |
| Days 6–7 | Admin interface, roles and permissions, email. |
| Days 8–9 | Integrations, edge cases and QA — including what happens when someone does the wrong thing. |
| Day 10 | Deployment, handover documentation and a walkthrough with the people who will use it. |
The technology
Deliberately boring, and that is the feature. A stack another developer can pick up is worth more to you than one that impresses other developers.
- Language
- PHP 8 — because it runs on hosting you already pay for and any developer can pick it up
- Database
- MySQL with a documented schema and real foreign keys
- Front end
- Tailwind CSS with Alpine.js. Server-rendered, so it works on a slow connection
- PHPMailer over authenticated SMTP
- Deployment
- Git-based where your host supports it, documented either way
What it integrates with
- Any documented REST API
- Payment providers, including Stripe for one-off and recurring charges
- Accounting exports your bookkeeper will accept
- Email and notification delivery from your own domain
- Scheduled imports and exports where a live API does not exist
- Single sign-on where your team already has an identity provider
What I need from you
Short list, and the first item matters most. Projects do not usually slip because the code was hard — they slip because a decision waited a week.
- Someone who knows how the process actually works, including the exceptions
- Access to the current system or spreadsheet, with real data rather than a tidied sample
- API documentation and credentials for anything to be integrated
- A decision-maker for scope questions — custom work generates more of them than a website does
- Time from the people who will use it daily, at the point where it is testable
Content and photography
The requirement nobody writes down is the exception. Every business has a "well, except when…" case, and it is usually the one that decides whether the software gets used or quietly abandoned.
So the mapping stage asks for exceptions explicitly, in writing, before the schema is designed. Discovering one in week two is a change request; discovering it after launch is a rebuild.
Performance standards
Targets, not aspirations — measured before handover on a throttled mobile connection rather than on a fast laptop.
| Metric | Target |
|---|---|
| Largest Contentful Paint | Under 2.5s on a mid-range Android over 4G, measured in the field rather than on my laptop |
| Interaction to Next Paint | Under 200ms — which mostly means shipping less JavaScript rather than reordering it |
| Cumulative Layout Shift | Under 0.1: every image carries width and height, fonts have metric-matched fallbacks |
| Total page weight | Budgeted before the build, not discovered after it |
Accessibility standards
| Standard | WCAG 2.2 AA as the build target, tested rather than asserted |
|---|---|
| Keyboard | Every interactive element reachable and operable without a mouse, with visible focus |
| Contrast | Text at 4.5:1, interface elements and icons at 3:1, checked with a contrast tool not by eye |
| Motion | Anything animating over five seconds gets a pause control — WCAG 2.2.2 is a Level A requirement |
| Forms | Real labels, errors described in text next to the field, no colour-only signalling |
| Why it matters commercially | The European Accessibility Act has applied to consumer e-commerce since June 2025, and the obligation sits with the business selling, not the agency that built it |
This site is built to the same standard it sells, and the accessibility statement lists what is conformant and what is not — which is the part most statements leave out.
Security practices
| Transport | HTTPS enforced in a single redirect hop, HSTS enabled |
|---|---|
| Headers | CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy and COOP set |
| Database | Prepared statements everywhere. Not "mostly" — everywhere |
| Input | Validated server-side, because client-side validation is a convenience and not a control |
| Secrets | Environment variables, never in the repository, never in a JavaScript bundle |
| SPF, DKIM and DMARC aligned so your order confirmations reach inboxes |
The SEO included in every build
Not an upsell. A site that launches unindexed is a shop with the shutters down, and the work below is cheap during a build and expensive afterwards because the fixes are structural.
| Rendering | Content present in the HTML without JavaScript execution, so every crawler and answer engine can read it |
|---|---|
| Indexation | One canonical per page, generated XML sitemap, robots.txt that does not block what it should not |
| Structured data | A linked JSON-LD graph — Organization, WebSite, page type and the commercial type that fits |
| AI crawlers | Access verified per user-agent before launch, because a host can 403 GPTBot before robots.txt is read |
| Search Console | Verified and the sitemap submitted at launch, so the site goes live indexed rather than as a blank shell |
Ownership and handover
You own everything: the domain registered to you, hosting in your account, code in a repository you control, and the payment provider account in your business name. Credentials are handed over as they are created rather than at the end.
A supplier who resists this is protecting recurring revenue rather than your interests. If you want the reasoning in full, including how to check your current site, there is a guide on it.
Aftercare and what happens after launch
Thirty days of snag fixes are included. A snag is something that does not work as scoped — not a new feature, and the difference is written down before launch rather than argued about after it.
You also get written handover documentation aimed at whoever maintains the site next, which may well not be me. That is deliberate: the test of a good handover is whether another developer could take over without calling me, and on my projects they can.
Ongoing maintenance
Optional, monthly, cancellable. Nothing here is required to keep what you paid for.
| Retainer | From | Covers |
|---|---|---|
| Maintenance | $50/month | Software, plugin and dependency updates; Automated backups with restore tested quarterly; Uptime monitoring with alerting |
| SEO retainer | $80/month | Monthly technical crawl and fix cycle; Search Console monitoring and issue resolution; Content briefs based on your real query data |
Payment terms
| Working hours | Mon–Fri, 09:00–18:00 PKT (UTC+5). That overlaps 05:00–14:00 UK time and 00:00–09:00 US Eastern. |
|---|---|
| Response time | Within one business day, always. If I will be unreachable for longer, you know before it happens. |
| Meetings | Google Meet or Zoom, scheduled in your timezone. I will take an early or late call to reach you — that is my problem to solve, not yours. |
| Language | All work, documentation and communication in English. |
| Payment | 40% deposit, 60% on completion. Bank transfer or Wise. Invoices issued for your records. |
| Currency | Quoted in USD by default. GBP, CAD or EUR on request. |
How this compares to the alternatives
Including the routes that do not involve me, because a comparison that only flatters the author is not a comparison.
| Route | Cost | What you trade |
|---|---|---|
| Keep using the spreadsheet | Free | A single point of failure and no access control |
| Off-the-shelf SaaS | Monthly, forever | Fit. You adapt your process to the product |
| This build | Starting from $200 | An upfront build, in exchange for software shaped around how you work |
| Agency or dev shop | Substantially more | Budget, for a team, process and continuity |
What could go wrong, and how it is handled
- Scope grows once people see it working
- Expected, and handled with a written change process rather than silent absorption or an argument.
- The existing data is messy
- It always is. Assessed before quoting migration, because clean-up is often larger than the build.
- Key-person dependency on me
- Managed structurally: your repository, documented schema, boring stack, written handover. Another developer can take it over.
- Nobody uses it
- The real risk with custom software. Mitigated by involving daily users at the testable stage rather than at launch.
Live builds you can open
Every project below is live right now. Nothing here is a mockup, a concept piece or a template screenshot, and the build fails if any of these URLs stops responding.
Cheapest Proxies
Full-stack proxy e-commerce app with Stripe checkout and automated order + email handling via PHPMailer - built and deployed end to end.
cheapest-proxies.com ↗Cheapest Certificates
Site for a UK provider of landlord property-compliance certificates (EICR, gas, EPC) with fast online booking.
cheapest-certificates.co.uk ↗5 Star Rent A Car
Developed a vehicle-rental website for a Pakistan-based client.
5starrentacar.pk ↗Case studies
What the brief was, what I built and the decisions worth explaining. No invented traffic figures — every number on this site is one I can evidence.
Written for your trade
These exist only where a live client build proves the pairing. If your trade is not listed the work is the same — there is simply no page claiming otherwise.
What to measure after launch
A site with no measurement is a site nobody can improve. These are the numbers worth watching, in the order they matter.
- Time spent on the task before and after — the only number that justifies the build
- Error and rework rate on the process being replaced
- Adoption: is the spreadsheet still open?
- Support requests, which should trend down after the first fortnight
- Data quality, which usually improves the moment entry is validated
Common mistakes in this kind of project
Every one of these has been found on a real site, several of them on this one before it was rebuilt.
- Specifying the solution instead of the problem
- "I need a booking plugin" forecloses better answers. "Customers must reserve a slot and pay a deposit" does not.
- Building for the exception first
- The rare case gets designed for and the common case gets awkward.
- No admin interface for daily operators
- The people using it every day are not the people who commissioned it.
- Skipping documentation
- The build is finished and the knowledge lives in one head, which is the same risk you started with.
- No plan for data export
- Software you cannot get your data out of is a trap you built yourself.
Glossary
Terms that come up in quotes and get nodded at rather than asked about.
- Schema
- The structure of the database: tables, columns, relationships. Designing it well is most of the work.
- RBAC
- Role-based access control — permissions attached to roles rather than to individuals.
- Prepared statement
- The correct way to run a database query with user input. The absence of it is SQL injection.
- CSRF
- An attack that makes a logged-in user submit something they did not intend. Prevented with per-form tokens.
- Migration
- Both a schema change and a data move. Context tells you which is meant.
- Staging
- A working copy of the application you can use safely before it is live.
Guides on this subject
Free, ungated, and written from client work. If reading one convinces you I know what I am doing, the enquiry follows on its own.
Questions people ask before hiring
- Why PHP rather than a JavaScript framework?
- Because it runs on the shared hosting most small businesses already pay for, it is cheap to host, and any developer can maintain it after me. I use React and Astro where they genuinely help — this site is one of them — but I will not put your booking system on a stack that triples your hosting bill for no benefit.
- Will I be locked in to you?
- No. You get the source, the database and written documentation. I would rather you stay because the work is good than because leaving is painful.
- Can you take over an existing PHP application?
- Usually yes. I will review it first and give you an honest read — sometimes inheriting a codebase costs more than replacing it, and I will say so.
Every other question I get asked → · or just ask me directly
Custom PHP applications by location
Same fixed scope and the same $200 starting price, priced in the local currency with that country's tax and data-protection terms set out in full.
- Custom PHP applications London
- Custom PHP applications Dublin
- Custom PHP applications Toronto
- Custom PHP applications Baltimore
- Custom PHP applications Sydney
- Custom PHP applications Business Bay
- Custom PHP applications Jeddah
- Custom PHP applications Lahore
- Custom PHP applications Noida
- Custom PHP applications Singapore
- Custom PHP applications Durban
- Custom PHP applications Munich
- Custom PHP applications The Hague
- Custom PHP applications Nantes
Other services
Need custom php applications?
Send the brief and you get a reply within one business day — either questions, or a scoping call. If your project is not something I should take on, I will say so then.
- Response
- Replies within 1 business day
- Hours
- Mon–Fri, 09:00–18:00 PKT — overlaps 05:00–14:00 UK, 00:00–09:00 US Eastern
- Booking
- Booking projects from October 2026