openclassify/README.md
2026-03-10 21:01:30 +03:00

150 lines
2.7 KiB
Markdown

# OpenClassify
OpenClassify is a modular classifieds marketplace built with Laravel 12 and Filament v5.
## Core Stack
- Laravel 12
- FilamentPHP v5
- `nwidart/laravel-modules`
- Blade + Tailwind + Vite
- Spatie Permission
- Laravel Reverb + Echo (realtime chat)
## Modules
All business features live in `Modules/*` (routes, services, models, resources, views, seeders).
Create a new module:
```bash
php artisan module:make ModuleName
```
Enable it in `modules_statuses.json`.
## Quick Start
### Docker
```bash
cp .env.example .env
docker compose up -d
```
App URLs:
- Frontend: `http://localhost:8000`
- Admin: `http://localhost:8000/admin`
- Panel: `http://localhost:8000/panel`
### Local
Requirements: PHP 8.2+, Composer, Node 18+, database server.
```bash
composer install
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed
composer run dev
```
## Seeded Accounts
| Role | Email | Password |
|------|-------|----------|
| Admin | `a@a.com` | `236330` |
| Member | `b@b.com` | `36330` |
## Demo Mode
Demo mode provisions a temporary, per-visitor marketplace schema.
Requirements:
- `DB_CONNECTION=pgsql`
- `DEMO=1`
Minimal `.env`:
```env
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:
```bash
php artisan demo:prepare
php artisan demo:cleanup
```
Notes:
- First guest homepage shows only `Prepare Demo`.
- `Prepare Demo` creates/reuses a private schema and logs in seeded admin.
- Expired demos are cleaned up automatically (hourly schedule).
## Realtime Chat (Reverb)
Set `.env`:
```env
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=app_id
REVERB_APP_KEY=app_key
REVERB_APP_SECRET=app_secret
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=http
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
```
Start:
```bash
composer run dev
```
Channel strategy:
- private channel: `users.{id}.inbox`
- events: `InboxMessageCreated`, `ConversationReadUpdated`
## Test and Build
```bash
php artisan test
php artisan optimize:clear
php artisan view:cache
```
## Production Checklist
```bash
php artisan migrate --force
php artisan db:seed --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache
```
## Contributors
- Website: [openclassify.com](https://openclassify.com)
- Package: [openclassify/openclassify](https://packagist.org/packages/openclassify/openclassify)
- Contributors: [GitHub graph](https://github.com/openclassify/openclassify/graphs/contributors)