OpenClassify is modular and most advanced open source classified platform build with Laravel 8.1 & PHP 8.2 Supported. Included Pyrocms
Go to file
2026-03-08 23:42:52 +03:00
.agents/skills Implement realtime listing chat 2026-03-08 21:49:26 +03:00
.ai/mcp Refactor ListingResource 2026-03-04 23:27:19 +03:00
.chatgpt beta 2026-03-03 12:49:08 +03:00
.codex Fix modal chat toggling issue 2026-03-08 22:29:11 +03:00
.devcontainer feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
.gemini Fix modal chat toggling issue 2026-03-08 22:29:11 +03:00
.github/skills Implement realtime listing chat 2026-03-08 21:49:26 +03:00
app Refactor home layout and seed data 2026-03-08 20:18:56 +03:00
bootstrap Implement realtime listing chat 2026-03-08 21:49:26 +03:00
config Implement realtime listing chat 2026-03-08 21:49:26 +03:00
database Refactor home layout and seed data 2026-03-08 20:18:56 +03:00
docker feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
lang Düzelt konum ve ilan sayısı 2026-03-07 03:08:00 +03:00
Modules Fix chat modal flicker 2026-03-08 23:17:02 +03:00
public Add animations and fix publish 2026-03-08 16:11:09 +03:00
resources Refactor home mobile layout 2026-03-08 23:42:52 +03:00
routes Implement realtime listing chat 2026-03-08 21:49:26 +03:00
storage Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
stubs/nwidart-stubs Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
.editorconfig Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
.env.example Implement realtime listing chat 2026-03-08 21:49:26 +03:00
.gitattributes Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
.gitignore Add animations and fix publish 2026-03-08 16:11:09 +03:00
.styleci.yml Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
AGENTS.md Implement realtime listing chat 2026-03-08 21:49:26 +03:00
artisan Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
boost.json Implement realtime listing chat 2026-03-08 21:49:26 +03:00
composer.json Implement realtime listing chat 2026-03-08 21:49:26 +03:00
docker-compose.dev.yml feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
docker-compose.yml feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
Dockerfile feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
Dockerfile.dev feat: Install FilamentPHP v5, add Admin/Partner modules, Docker support 2026-03-03 08:07:28 +00:00
GEMINI.md Fix modal chat toggling issue 2026-03-08 22:29:11 +03:00
modules_statuses.json Improve partner panel UX 2026-03-07 20:19:00 +03:00
package.json Implement realtime listing chat 2026-03-08 21:49:26 +03:00
postcss.config.js Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
README.md Fix modal chat toggling issue 2026-03-08 22:29:11 +03:00
tailwind.config.js Unify fonts and fix category seed 2026-03-06 02:15:13 +03:00
vite-module-loader.js Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00
vite.config.js Rewrite as Laravel 12 classified ads site (OpenClassify) 2026-03-02 23:34:07 +00:00

OpenClassify

A modern classified ads platform built with Laravel 12, FilamentPHP v5, and Laravel Modules — similar to Letgo and Sahibinden.

Features

  • 🛍️ Classified Listings — Browse, search, and post ads across categories
  • 🗂️ Categories — Hierarchical categories with icons
  • 📍 Locations — Country and city management
  • 👤 User Profiles — Manage your listings and account
  • 🔐 Admin Panel — Full control via FilamentPHP v5 at /admin
  • 🧭 Frontend Panel — Authenticated users manage listings, profile, videos, favorites, and inbox at /panel
  • 🧪 Demo Mode — Per-visitor PostgreSQL schema provisioning with seeded data and automatic cleanup
  • 🌍 10 Languages — English, Turkish, Arabic, German, French, Spanish, Portuguese, Russian, Chinese, Japanese
  • 🐳 Docker Ready — One-command production and development setup
  • ☁️ GitHub Codespaces — Zero-config cloud development

Tech Stack

Layer Technology
Framework Laravel 12
Admin UI FilamentPHP v5
Modules nWidart/laravel-modules v11
Auth/Roles Spatie Laravel Permission
Frontend Blade + TailwindCSS + Vite
Database PostgreSQL (required for demo mode)
Cache/Queue Database or Redis

Quick Start (Docker)

# Clone the repository
git clone https://github.com/openclassify/openclassify.git
cd openclassify

# Copy environment file
cp .env.example .env

# Start with Docker Compose (production-like)
docker compose up -d

# The application will be available at http://localhost:8000

Default Accounts

Role Email Password
Admin a@a.com 236330
Member b@b.com 36330

These accounts are seeded by Modules\User\Database\Seeders\AuthUserSeeder. In demo mode, demo preparation still auto-logs the visitor into the schema-local admin account.

Admin Panel: http://localhost:8000/admin Frontend Panel: http://localhost:8000/panel


Development Setup

Option 1: GitHub Codespaces (Zero Config)

  1. Click Code → Codespaces → New codespace on GitHub
  2. Wait for the environment to build (~2 minutes)
  3. The app starts automatically at port 8000

Option 2: Docker Development

# Start development environment with hot reload
docker compose -f docker-compose.dev.yml up -d

# View logs
docker compose -f docker-compose.dev.yml logs -f app

Option 3: Local (PHP + Node)

Requirements: PHP 8.2+, Composer, Node 18+, PostgreSQL for demo mode

# Install dependencies
composer install
npm install

# Setup environment
cp .env.example .env
php artisan key:generate

# Database (SQLite for quick start)
touch database/database.sqlite
php artisan migrate
php artisan db:seed

# Start all services (server + queue + vite)
composer run dev

Demo Mode

Demo mode is designed for isolated visitor sessions. When enabled, each visitor can provision a private temporary marketplace backed by its own PostgreSQL schema.

Requirements

  • DB_CONNECTION=pgsql
  • DEMO=1
  • database-backed session / cache / queue drivers are supported and will stay on the public schema via pgsql_public

If DEMO=1 is set while the app is not using PostgreSQL, the application fails fast during boot.

Runtime Behavior

  • On the first guest homepage visit, the primary visible CTA is a single large Prepare Demo button.
  • The homepage shows how long the temporary demo will live before automatic deletion.
  • Clicking Prepare Demo provisions a visitor-specific schema, runs migrate and db:seed, and logs the visitor into the seeded admin account.
  • The same browser reuses its active demo instead of creating duplicate schemas.
  • Demo lifetime defaults to 360 minutes from explicit prepare / reopen time.
  • Expired demos are removed by demo:cleanup, which is scheduled hourly.

Environment

DB_CONNECTION=pgsql
DEMO=1
DEMO_TTL_MINUTES=360
DEMO_SCHEMA_PREFIX=demo_
DEMO_COOKIE_NAME=oc2_demo
DEMO_LOGIN_EMAIL=a@a.com
DEMO_PUBLIC_SCHEMA=public

Commands

php artisan migrate --force
php artisan db:seed --force
php artisan demo:prepare
php artisan demo:cleanup

Panels

Panel URL Access
Admin /admin Users with admin role
Frontend Panel /panel All authenticated users

Roles (Spatie Permission)

Role Access
admin Full admin panel access

Code Contributors

OpenClassify Logo

OpenClassify is a modular open source classified platform built with Laravel.

This project is maintained and improved by its contributors.

OpenClassify Contributors

Creating a New Module

php artisan module:make ModuleName

Then add to modules_statuses.json:

{
    "ModuleName": true
}

Adding a Filament Resource to Admin Panel

Resources are auto-discovered from Modules/Admin/Filament/Resources/.


Language Support

Languages are in lang/{locale}/messages.php. To add a new language:

  1. Create lang/{locale}/messages.php
  2. Switch language via: GET /lang/{locale}

Supported locales: en, tr, ar, de, fr, es, pt, ru, zh, ja


Running Tests

php artisan test

Production Deployment

Environment Variables

APP_ENV=production
APP_DEBUG=false
APP_URL=https://yourdomain.com

DB_CONNECTION=mysql
DB_HOST=your-db-host
DB_DATABASE=openclassify
DB_USERNAME=openclassify
DB_PASSWORD=your-secure-password

REDIS_HOST=your-redis-host
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

Post-Deploy Commands

php artisan migrate --force
php artisan db:seed --force    # Only on first deploy
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan storage:link