Download the PHP package mahdi-bagheri/blog without Composer
On this page you can find all versions of the php package mahdi-bagheri/blog. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mahdi-bagheri/blog
More information about mahdi-bagheri/blog
Files in mahdi-bagheri/blog
Informations about the package blog
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
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 & 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 & RTL-First
- Three languages out of the box: Persian (fa), English (en), Arabic (ar)
- RTL/LTR auto-switching —
dirandlangHTML 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
- 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
- Filament 5 — modern, fast, accessible admin UI at
/admin - Post & 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
- Laravel 13 slim bootstrap — no legacy
Kernel.phporRouteServiceProvider - 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 —
Languagebacked enum drives all locale logic (labels, direction, enablement)
Tech Stack
| Layer | Technology |
|---|---|
| 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) |
| SMTP (configurable) | |
| Storage | Local / AWS S3 |
Getting Started
Requirements
- PHP 8.4+
- Composer 2
- Node.js 20+ and pnpm
- MySQL 8+ or PostgreSQL 14+
Installation
Set Your Default Language
Open config/app.php and set the locale you want as the no-prefix default:
All other enabled languages are accessible via /{locale}/... URLs automatically.
Create an Admin User
Then visit /admin to access the dashboard.
Project Structure
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.
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:
- URL prefix — explicit, SEO-friendly, takes priority
- User database column (
users.locale) — persisted for logged-in users - Cookie (
locale, 1-year) — persisted for guests app.locale— the configured default
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
Pull requests are welcome. For major changes, open an issue first to discuss what you'd like to change.
License
MIT — free to use with attribution.
All versions of blog with dependencies
fideloper/proxy Version ~3.3
laravel/framework Version 5.5.*
laravel/tinker Version ~1.0