Version: 0.7.0-beta
License: MIT
Author: SkyShell Studio
Oriented Decoded Context — Textual analysis application utilizing oriented numerical mapping methods to decode hidden patterns in data context.
- Word Analysis — Enter words and search the Knowledge Base for matches with numerical parameters and color tags
- Set Saving & Bonuses — Save word sets and earn Ori bonuses based on pattern matching
- Level Progression — Level up from 1 to 20 with chance-based refinement; unlock privileges at each level
- Insight Discovery — Get random word insights or search the Knowledge Base by numerical parameters
- Statistics — View aggregated app stats and top 30 user rankings
- Dual Authentication — Telegram bot (HMAC-SHA256) or Web login/password
- Multi-language UI — Flux UI components with dark/light theme support
- Economy System — Two currencies (Ori, Ore) with transaction safety
- Public Search Category — A system category (id=1) available to all users from level 1; default selection on Home screen. If no categories are selected, search is scoped to this category only.
| Component | Technology |
|---|---|
| Backend | Laravel 13 (PHP 8.4) |
| Auth | Laravel Fortify (customized) |
| Frontend State | Livewire 4 |
| UI Kit | Flux UI 2 (free edition) |
| Styling | Tailwind CSS 4 |
| Telegram | laravel-notification-channels/telegram |
| Cache | Database driver |
| Queue | Database driver |
| Testing | PHPUnit 12 |
- PHP 8.4+
- Composer 2.x
- Node.js 18+ / npm
- MySQL 8.0+ or SQLite
- (Optional) Telegram Bot Token for Telegram auth & notifications
git clone https://github.com/diskyer/oridecon.git oridecon
cd oridecon
composer install
npm installcp .env.example .env
php artisan key:generateEdit .env and configure:
APP_NAME=Oridecon
APP_URL=http://oridecon.loc
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=oridecon
DB_USERNAME=root
DB_PASSWORD=
# Telegram (optional)
TELEGRAM_BOT_TOKEN=your-bot-token
CRON_SECRET=your-secret-keyphp artisan migrate --seednpm run buildFor development with hot-reload:
npm run dev# Production
php artisan serve
# Development (server + queue + logs + vite)
composer run devVisit http://localhost:8000 (or your configured APP_URL).
For local development and testing, Oridecon includes a DevDataSeeder that populates the database with realistic sample data:
- 7 categories (Tester, Dune, Nature, Emotions, Abstract, Ancient, Cosmic)
- 56 Knowledge Base entries with varied parameters (smp, jvi, ext, color)
- 5 users at different levels with different auth types (Web, Telegram)
app_metafully populated (colors, categories, themes, sort options)
# Fresh database + base seed + dev data
php artisan migrate:fresh --seed
php artisan db:seed --class=DevDataSeeder| Login | Password | Auth Type | Level | Ori |
|---|---|---|---|---|
webuser |
password |
Web | 1 | 10 |
level5 |
password |
Web | 5 | 500 |
level10 |
password |
Web | 10 | 2000 |
tg_user |
telegram |
Telegram | 3 | 150 |
api_user |
apipass |
Web | 7 | 800 |
Note:
DevDataSeederis for development only. Do not run it in production.
Oridecon requires scheduled tasks for daily stats collection and Telegram notifications. These are exposed as API endpoints protected by a secret key.
Add to your crontab (crontab -e):
* * * * * cd /path/to/oridecon && php artisan schedule:run >> /dev/null 2>&1The scheduler is defined in routes/console.php:
Schedule::command('cron:notify')->dailyAt('10:00');
Schedule::command('cron:stats')->dailyAt('23:59');If you need to trigger the cron jobs manually (e.g., from an external scheduler or for testing):
# Send Telegram notifications
curl -H "X-Cron-Secret: YOUR_CRON_SECRET" https://oridecon.loc/api/v1/cron/notify
# Calculate daily stats + sync app_meta
curl -H "X-Cron-Secret: YOUR_CRON_SECRET" https://oridecon.loc/api/v1/cron/statsYou can also run the underlying logic directly from the console:
# Sync available colors and categories to app_meta
php artisan tinker --execute 'app(\App\Services\AppMetaService::class)->syncAll();'
# Dispatch stats calculation job (synchronous)
php artisan tinker --execute 'dispatch_sync(new \App\Jobs\CalculateDailyStats);'
# Dispatch notification job (synchronous)
php artisan tinker --execute 'dispatch_sync(new \App\Jobs\SendTelegramNotifications);'
# Full stats + meta sync (equivalent to /api/v1/cron/stats)
php artisan tinker --execute 'dispatch_sync(new \App\Jobs\CalculateDailyStats); $m = app(\App\Services\AppMetaService::class); $m->syncAll(); $m->set("kb_last_update_date", now()->toDateTimeString());'Since the queue driver is database, you need a worker running to process background jobs:
php artisan queue:work --tries=3For production, use a process manager (Supervisor, systemd) to keep the worker alive.
# Run all tests
php artisan test
# Run specific test file
php artisan test tests/Feature/Auth/AuthenticationTest.php
# Run with coverage (if configured)
php artisan test --coverageThis project is open-source software licensed under the MIT License.
SkyShell Studio — https://skyshell.net/