v1.1.4 — Free for beginners Star on GitHub

Learn PHP the right way —
before you touch Laravel.

A beginner-friendly PHP MVC starter kit that teaches you how routing, controllers, models, and views actually work — so Laravel feels natural when you get there.

...

GitHub Stars

Laravel-ready

MVC Patterns

Zero Frameworks

Pure PHP 8+

Beginner Friendly PHP MVC Starter Kit v1.1.4 Laravel Preparation Tailwind CSS + Alpine.js Session Auth built-in Full Admin Panel AJAX Ready Fully Responsive Open Source & Free Composer Ready PHP 8+ Understand MVC First Beginner Friendly PHP MVC Starter Kit v1.1.4 Laravel Preparation Tailwind CSS + Alpine.js Session Auth built-in Full Admin Panel AJAX Ready Fully Responsive Open Source & Free Composer Ready PHP 8+ Understand MVC First

Features

Everything a beginner needs,
nothing to overwhelm you.

Learn the patterns Laravel uses — routing, MVC, auth, env config — without the magic hiding how it works.

MVC Architecture

Understand Controllers, Models, and Views hands-on — the same pattern Laravel is built on.

Session Auth

Build login, register, and logout from scratch — so you know what Laravel Auth does under the hood.

Admin Dashboard

A real-world admin panel with sidebar, topbar, and data tables — not just a tutorial toy.

Routing from Scratch

See exactly how URL routing works before Laravel's Route::get() abstracts it away.

REST API & JSON

Build pure RESTful JSON endpoints for decoupled applications or choose full-stack templates.

Laravel-Ready Patterns

Every pattern here — models, controllers, env config — maps directly to how Laravel works.

How it works

From zero to Laravel-ready in 3 steps.

01

Composer install

Install using composer create-project mardev/starter-kit to trigger the setup wizard.

02

Read the code

Every file is readable and commented. No magic, no black boxes — just PHP.

03

Graduate to Laravel

Once you understand MVC from scratch, Laravel's conventions will click immediately.

Frontend Layer

AJAX, API, Alpine.js & jQuery interactions — all wired up.

No build pipeline. No bundler. Just clean, readable JavaScript files and preset frontend bundles that show you exactly how the frontend talks to the backend.

Ajax.js / jquery_ajax.js

Clean wrappers around Fetch API or jQuery $.ajax. Every form submission — login, register, profile update — is automatically wired through them.

js/ajax.js or jquery_ajax.js

App.js — Global Utilities

Shared helpers used everywhere: App.toast() for notifications, App.alert() for inline errors, App.setLoading() for button spinners.

js/app.js

Auth.js — Form Handlers

Handles login, register, forgot password, and reset password form submissions via AJAX — including a live password strength meter on the reset form.

js/auth.js

Avatar.js — Upload & Preview

Drag-and-drop or click-to-upload avatar with instant local preview, XHR upload progress bar, and live DOM update across topbar, sidebar, and profile card.

js/avatar.js

Alpine.js or jQuery Stack

Pick Alpine.js for modern reactive attributes or jQuery for traditional AJAX stack monolith flows — both come fully ready out of the box.

Alpine.js CDN or js/jquery.min.js

Theme.js + Sidebar.js

Dark/light mode toggle persisted to localStorage. Sidebar open/close bound to frontend state with a Ctrl+B keyboard shortcut.

js/theme.js · js/sidebar.js
AJAX Request Flow

How a request travels end-to-end

User Action 01

Form submit or button click triggers the flow

Ajax.post() 02

Fetch POST with FormData + X-Requested-With header

// js/ajax.js
Ajax.post('ajax/login', formData).then(res => {
  App.toast(res.message);
});
PHP Route 03

ajax/* route matched → Controller method dispatched

// routes/web/auth/ajax.php
$router->post('ajax/login', [AuthController::class, 'login']);
JSON Response 04

{ success, message, data } returned to the client

{
  "success": true,
  "message": "Logged in",
  "data": { ... }
}
App.toast() 05

UI updates instantly — zero page reload

Start learning today

Understand PHP before the framework does it for you.

Most beginners jump straight into Laravel without knowing what's happening underneath. Start here — build real features in vanilla PHP, then Laravel will make complete sense.