PHPackages                             mahdi-bagheri/blog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. mahdi-bagheri/blog

ActiveProject[Framework](/categories/framework)

mahdi-bagheri/blog
==================

The Laravel Framework.

v1.0(8y ago)162207[1 issues](https://github.com/mb-programmer/startpoint/issues)[2 PRs](https://github.com/mb-programmer/startpoint/pulls)MITPHPPHP &gt;=7.0.0CI failing

Since Jan 3Pushed 4d ago4 watchersCompare

[ Source](https://github.com/mb-programmer/startpoint)[ Packagist](https://packagist.org/packages/mahdi-bagheri/blog)[ RSS](/packages/mahdi-bagheri-blog/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (3)Dependencies (7)Versions (14)Used By (0)

Startpoint
==========

[](#startpoint)

**A multilingual blog platform and support system built for the modern web.**

[![Laravel](https://camo.githubusercontent.com/9522347b9d5391961659c8c2749dabf2056511ff9d91732ad68246e41c5fd35a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31332d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com)[![PHP](https://camo.githubusercontent.com/d072d1f17b6a8dc799e782e39d676d25cab3e73854efe49206d6ffcb6473abd4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e342d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://php.net)[![Filament](https://camo.githubusercontent.com/ea1f2514d7078d6c7771c381c667e615bb7a3a999cebf39f31f12d9f9f6a01cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696c616d656e742d352d4635394530423f7374796c653d666c61742d737175617265)](https://filamentphp.com)[![Tailwind CSS](https://camo.githubusercontent.com/5f0ba03a569c74adb622f1a6ed9cb4f51f7a65694659d5da19aa7955df3ef657/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e645f4353532d342d3036423644343f7374796c653d666c61742d737175617265266c6f676f3d7461696c77696e64637373266c6f676f436f6c6f723d7768697465)](https://tailwindcss.com)[![License](https://camo.githubusercontent.com/8e016b16e4a3d13fa9fc00c210f17cfa49f93f0c4731b47c24155d4729e6b31e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d3232433535453f7374796c653d666c61742d737175617265)](LICENSE)

*Publish in Farsi. Reach readers in Arabic. Welcome the world in English.*

---

What Is Startpoint?
-------------------

[](#what-is-startpoint)

Startpoint is a **production-ready, multilingual content platform** that combines a full-featured blog engine with a built-in customer support ticketing system. It was designed from the ground up to serve audiences that read right-to-left — Persian and Arabic — while remaining equally polished in left-to-right languages like English.

Unlike generic CMS solutions bolted together from plugins, every layer of Startpoint — routing, UI, admin panel, language switching — was architected as a cohesive whole. You get SEO-friendly localized URLs (`/en/posts/...`, `/ar/posts/...`), automatic RTL/LTR layout switching, a cookie-and-database-backed language preference system, and a beautiful Filament 5 admin panel, all without a single line of client-side JavaScript in the public frontend.

---

Key Features
------------

[](#key-features)

### Content &amp; Publishing

[](#content--publishing)

- **Blog engine** with rich post editor, categories, and meta fields (title, description, keywords)
- **Reading time** estimates automatically calculated from post content
- **Visit counter** per post with lightweight tracking
- **Related posts** surfaced by category
- **XML sitemap** auto-generated for all published posts
- **Soft deletes** across all content — nothing is permanently lost

### Community &amp; Engagement

[](#community--engagement)

- **Comment system** with moderation queue — comments go live only after admin approval
- **Newsletter** — subscribe, manage members, compose and send campaigns
- **Full-text search** across post titles and body content

### Multilingual &amp; RTL-First

[](#multilingual--rtl-first)

- **Three languages out of the box**: Persian (fa), English (en), Arabic (ar)
- **RTL/LTR auto-switching** — `dir` and `lang` HTML attributes set dynamically per locale
- **SEO-friendly locale URLs** — `/en/...` and `/ar/...` prefixes for non-default locales; the default locale has no prefix
- **Language switcher** — zero JavaScript, pure link-based navigation
- **Layered locale resolution**: URL prefix → user preference (database) → cookie → app default
- **Configurable default locale** — set once in `config/app.php`, everything follows

### Support System

[](#support-system)

- **Ticket management** — users submit support requests; admins triage and respond
- **Ticket categories** — organize requests by topic (billing, technical, general, etc.)
- **Status tracking** — open / pending / closed with color-coded badges in the admin

### Admin Panel

[](#admin-panel)

- **Filament 5** — modern, fast, accessible admin UI at `/admin`
- **Post &amp; category management** with rich text editor
- **Comment moderation** — approve or reject with one click
- **User management** — promote to admin, disable accounts
- **Newsletter composer** — write, preview, and track sends
- **Ticket inbox** — full support queue with filtering by status and category

### Developer Experience

[](#developer-experience)

- **Laravel 13** slim bootstrap — no legacy `Kernel.php` or `RouteServiceProvider`
- **Tailwind CSS v4** — utility-first, zero-config CSS
- **No JavaScript on the frontend** — server-rendered Blade, instant page loads, no hydration overhead
- **Anonymous migrations** — conflict-free across teams and forks
- **PHP 8.4 enums** — `Language` backed enum drives all locale logic (labels, direction, enablement)

---

Tech Stack
----------

[](#tech-stack)

LayerTechnology**Framework**Laravel 13**Language**PHP 8.4**Admin Panel**Filament 5**Frontend**Blade + Tailwind CSS v4**Build Tool**Vite 6**Database**MySQL / PostgreSQL**Auth**Laravel built-in (sessions)**Queue**Sync (upgradeable to Redis)**Cache / Session**File (upgradeable to Redis)**Mail**SMTP (configurable)**Storage**Local / AWS S3---

Getting Started
---------------

[](#getting-started)

### Requirements

[](#requirements)

- PHP 8.4+
- Composer 2
- Node.js 20+ and pnpm
- MySQL 8+ or PostgreSQL 14+

### Installation

[](#installation)

```
# 1. Clone and install dependencies
git clone https://github.com/mbpcoder/startpoint.git
cd startpoint
composer install
pnpm install

# 2. Environment setup
cp .env.example .env
php artisan key:generate

# 3. Configure your database in .env, then run migrations
php artisan migrate

# 4. Build frontend assets
pnpm run build

# 5. Start the development server
php artisan serve
```

### Set Your Default Language

[](#set-your-default-language)

Open `config/app.php` and set the locale you want as the no-prefix default:

```
'locale' => 'fa',    // Persian — no URL prefix, RTL layout
// 'locale' => 'en', // English — no URL prefix, LTR layout
// 'locale' => 'ar', // Arabic  — no URL prefix, RTL layout
```

All other enabled languages are accessible via `/{locale}/...` URLs automatically.

### Create an Admin User

[](#create-an-admin-user)

```
php artisan tinker
>>> \App\Models\User::create([
...     'name'     => 'Admin',
...     'username' => 'admin',
...     'email'    => 'admin@example.com',
...     'password' => bcrypt('your-password'),
...     'is_admin' => true,
... ]);
```

Then visit `/admin` to access the dashboard.

---

Project Structure
-----------------

[](#project-structure)

```
app/
├── Enums/
│   ├── Language.php             # Backed enum — FA, EN, AR; RTL logic; labels
│   └── EnumOperationsTrait.php
├── Filament/Resources/          # Filament 5 admin resources (8 resources)
├── Helpers/helpers.php          # lroute(), locale_path(), clean_path()
├── Http/
│   ├── Controllers/             # Blog + auth + support controllers
│   └── Middleware/SetLocale.php
└── Models/                      # User, Post, Category, Comment,
                                 # Newsletter, NewsletterMember, Ticket, TicketCategory

lang/
├── fa.json / en.json / ar.json  # UI string translations
└── {locale}/enums.php           # Enum label translations per locale

routes/
├── web.php      # Auth routes + locale-grouped public route registration
└── public.php   # Shared public route definitions (included once per locale)

resources/views/
├── layouts/     # main.blade.php (public), app.blade.php (auth)
├── components/  # language-switcher, category-sidebar, post-card, ...
├── posts/
├── auth/
└── index.blade.php

```

---

Multilingual Architecture
-------------------------

[](#multilingual-architecture)

Startpoint uses a **route-group-per-locale** strategy. The file `routes/public.php` is a single shared route definition included once per enabled locale. The default locale group carries no URL prefix; all others get `/{locale}` prefix and a matching route name prefix.

```
GET /                     → home (default locale, e.g. fa)
GET /posts/my-article     → posts.show (default locale)
GET /en                   → en.home
GET /en/posts/my-article  → en.posts.show
GET /ar/posts/my-article  → ar.posts.show

```

The `lroute('posts.show', $id)` helper automatically picks the right named route based on the active locale — no manual locale-checking needed in views.

**Language preference is resolved in this order on every request:**

1. **URL prefix** — explicit, SEO-friendly, takes priority
2. **User database column** (`users.locale`) — persisted for logged-in users
3. **Cookie** (`locale`, 1-year) — persisted for guests
4. **`app.locale`** — the configured default

---

Roadmap
-------

[](#roadmap)

- Tag-based filtering and tag pages
- Post scheduling (future `published_at`)
- RSS / Atom feed
- Email notifications for new comments
- API endpoints for headless / mobile clients
- Dark mode
- More locales (Urdu, Turkish, Kurdish)

---

Contributing
------------

[](#contributing)

Pull requests are welcome. For major changes, open an issue first to discuss what you'd like to change.

---

License
-------

[](#license)

MIT — free to use with attribution.

###  Health Score

44

—

FairBetter than 91% of packages

Maintenance63

Regular maintenance activity

Popularity21

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 73% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~418 days

Total

3

Last Release

2992d ago

Major Versions

v0.9.2 → v1.02018-04-17

PHP version history (2 changes)v0.9.2PHP &gt;=5.5.9

v1.0PHP &gt;=7.0.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/55791471?v=4)[mb-programmer](/maintainers/mb-programmer)[@mb-programmer](https://github.com/mb-programmer)

---

Top Contributors

[![mbpcoder](https://avatars.githubusercontent.com/u/3877538?v=4)](https://github.com/mbpcoder "mbpcoder (116 commits)")[![claude](https://avatars.githubusercontent.com/u/81847?v=4)](https://github.com/claude "claude (11 commits)")[![jbidad](https://avatars.githubusercontent.com/u/51882296?v=4)](https://github.com/jbidad "jbidad (10 commits)")[![abbas980301](https://avatars.githubusercontent.com/u/17107543?v=4)](https://github.com/abbas980301 "abbas980301 (8 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (6 commits)")[![fhedayat](https://avatars.githubusercontent.com/u/6542982?v=4)](https://github.com/fhedayat "fhedayat (5 commits)")[![afshintalebi](https://avatars.githubusercontent.com/u/6622809?v=4)](https://github.com/afshintalebi "afshintalebi (3 commits)")

---

Tags

bloglaravelnewsletterphpticketframeworklaravel

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mahdi-bagheri-blog/health.svg)

```
[![Health](https://phpackages.com/badges/mahdi-bagheri-blog/health.svg)](https://phpackages.com/packages/mahdi-bagheri-blog)
```

###  Alternatives

[laravel/laravel

The skeleton application for the Laravel framework.

84.5k62.4M1.0k](/packages/laravel-laravel)[unopim/unopim

UnoPim Laravel PIM

10.3k2.2k](/packages/unopim-unopim)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3861.7k](/packages/codewithdennis-larament)[ercogx/laravel-filament-starter-kit

This is a Filament v5 Starter Kit for Laravel 13, designed to accelerate the development of Filament-powered applications.

461.7k](/packages/ercogx-laravel-filament-starter-kit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
