omegamvc/omega

Omega is a lightweight PHP framework designed for building modern web applications using the MVC architecture. Compatible with PHP 8.2+.

Installs: 10

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:project

pkg:composer/omegamvc/omega

2.0.0 2025-10-17 16:29 UTC

This package is auto-updated.

Last update: 2025-10-17 16:31:20 UTC


README

Omega Logo

Documentation | Changelog | Contributing | Code Of Conduct | License

Omega Starter Application

Welcome to omega, a minimal MVC framework designed to streamline your PHP development process. This lightweight framework offers essential features for building web applications while maintaining simplicity and ease of use.

🪐 Feature

  • MVC structure
  • Application Container (power with php-di)
  • Router Support
  • Models builder
  • Query builder
  • CLI command
  • Service Provider and Middleware
  • Templator (template engine)

Quick Start (4 Steps)

1 Create Your Project

composer create-project omegamvc/omega project-name

2️ Jump In

cd project-name

3️ Build Assets

npm install
npm run build

4️ Launch!

php omega serve

That's it! Your app is now running. Let's build something awesome.

Building Your First Feature

We'll create a user profile feature from scratch.

Step 1: Create Database Schema

php omega make:migration profiles
php omega db:create  # Only if database doesn't exist yet

Define your table structure:

// database/migration/<timestamp>_profiles.php
Schema::table('profiles', function (Create $column) {
    $column('user')->varChar(32);
    $column('real_name')->varChar(100);
    $column->primaryKey('user');
})

Run the migration:

php omega migrate

Step 2: Generate Your Model

php omega make:model Profile --table-name profiles

Step 3: Create a Controller

php omega make:controller Profile

Add your logic:

// app/Controller/ProfileController.php
public function handle(MyPDO $pdo): Response
{
    return view('profile', [
        'name' => Profile::find('omegamvc', $pdo)->real_name
    ]);
}

Step 4: Design Your View

php omega make:view profile
// resources/views/profile.template.php
{% extend('base/base.template.php') %}
{% section('title', 'Welcome {{ $name }}') %}

{% section('content') %}
    <h1>Hello, {{ $name }}! 👋</h1>
{% endsection %}

Step 5: Register Your Route

// route/web.php
Router::get('/profile', [ProfileController::class, 'index']);

Done! Visit /profile and see your work in action.

🔥 Pro Move: API with Attributes

Skip the route files entirely. Use attributes for clean, self-documented APIs:

php omega make:services Profile
// app/Services/ProfileServices.php
#[Get('/api/v1/profile')]
#[Name('api.v1.profile')]
#[Middleware([AuthMiddleware::class])]
public function index(MyPDO $pdo): array
{
    $data = Cache::remember('profile', 3600, fn () => [
        'name'   => Profile::find('omegamvc', $pdo)->real_name,
        'status' => 200,
    ]);

    return JsonResponse($data);
}

then register this route attribute.

Router::register([
    ProfileServices::class,
    // add more class
]);

This automatically creates your route with middleware—no extra configuration needed!

Equivalent traditional route:

Route::get('/api/v1/profile', [ProfileServices::class, 'index'])
    ->name('api.v1.profile')
    ->middleware([AuthMiddleware::class]);

⚡ Performance Optimization

Ready for production? Cache everything:

php omegamvc view:cache    # Cache compiled templates
php omegamvc config:cache  # Cache configuration
php omegamvc route:cache   # Cache all routes

Official Documentation

The official documentation for Omega is available here

Contributing

If you'd like to contribute to the Omega example application package, please follow our contribution guidelines.

License

This project is open-source software licensed under the GNU General Public License v3.0.