openclassify/openclassify

The skeleton application for the Laravel framework.

Maintainers

Package info

github.com/openclassify/openclassify

Type:project

pkg:composer/openclassify/openclassify

Statistics

Installs: 2 515

Dependents: 0

Suggesters: 0

Stars: 299

Open Issues: 3


README

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