Skip to content

diskyer/oridecon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oridecon — SkyShell Oridecon

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.

Features

  • 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.

Tech Stack

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

Requirements

  • PHP 8.4+
  • Composer 2.x
  • Node.js 18+ / npm
  • MySQL 8.0+ or SQLite
  • (Optional) Telegram Bot Token for Telegram auth & notifications

Installation

1. Clone & Install Dependencies

git clone https://github.com/diskyer/oridecon.git oridecon
cd oridecon

composer install
npm install

2. Environment Setup

cp .env.example .env
php artisan key:generate

Edit .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-key

3. Database

php artisan migrate --seed

4. Build Frontend

npm run build

For development with hot-reload:

npm run dev

5. Start the Application

# Production
php artisan serve

# Development (server + queue + logs + vite)
composer run dev

Visit http://localhost:8000 (or your configured APP_URL).

Development Data

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_meta fully populated (colors, categories, themes, sort options)
# Fresh database + base seed + dev data
php artisan migrate:fresh --seed
php artisan db:seed --class=DevDataSeeder

Dev Users

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: DevDataSeeder is for development only. Do not run it in production.

Cron Jobs

Oridecon requires scheduled tasks for daily stats collection and Telegram notifications. These are exposed as API endpoints protected by a secret key.

Configure Laravel Scheduler

Add to your crontab (crontab -e):

* * * * * cd /path/to/oridecon && php artisan schedule:run >> /dev/null 2>&1

The scheduler is defined in routes/console.php:

Schedule::command('cron:notify')->dailyAt('10:00');
Schedule::command('cron:stats')->dailyAt('23:59');

Manual Execution via HTTP

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/stats

Manual Execution via Artisan

You 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());'

Queue Worker

Since the queue driver is database, you need a worker running to process background jobs:

php artisan queue:work --tries=3

For production, use a process manager (Supervisor, systemd) to keep the worker alive.

Testing

# 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 --coverage

License

This project is open-source software licensed under the MIT License.


SkyShell Studiohttps://skyshell.net/

About

Oriented Decoded Context (Oridecon) - Textual analysis application utilizing oriented numerical mapping methods to decode hidden patterns in data context.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors