Skip to content

stackge/stack-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

STACK Core ๐Ÿš€

Version PHP Version Database License Author

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒแƒœแƒแƒ‘แƒ”แƒญแƒ“แƒ˜

Dynamic CRUD Management System

แƒžแƒ แƒแƒคแƒ”แƒกแƒ˜แƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ

๐ŸŒ https://stack.ge/

DEMO: https://dcrudms.stack.ge/


๐Ÿ“‹ แƒกแƒแƒ แƒฉแƒ”แƒ•แƒ˜


๐ŸŽฏ แƒ แƒ แƒแƒ แƒ˜แƒก STACK Core

STACK Core แƒแƒ แƒ˜แƒก แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ”, แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ CRUD (Create, Read, Update, Delete) แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ PHP-แƒ–แƒ” แƒ“แƒ MySQL แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ”. แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ›แƒแƒ˜แƒชแƒœแƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

๐ŸŒŸ แƒ แƒแƒขแƒแƒ› STACK Core?

  • ๐Ÿ”„ 100% แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜: แƒงแƒ•แƒ”แƒšแƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ›แƒแƒ˜แƒชแƒœแƒแƒ‘แƒ
  • โšก แƒ–แƒ”แƒ แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ: แƒแƒ  แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ setup-แƒ˜
  • ๐Ÿ“ฑ Responsive Design: แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ–แƒ”
  • ๐Ÿ”’ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ: SQL Injection แƒ“แƒ CSRF แƒ“แƒแƒชแƒ•แƒ
  • ๐ŸŽจ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” UI: Bootstrap 5 + Font Awesome
  • ๐Ÿ‡ฌ๐Ÿ‡ช แƒฅแƒแƒ แƒ—แƒฃแƒšแƒ˜: แƒกแƒ แƒฃแƒšแƒ˜ แƒฅแƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒšแƒแƒ™แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ

โœจ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

๐Ÿ“Š CRUD แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜

  • โœ… Create - แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ
  • โœ… Read - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ pagination แƒ“แƒ filtering-แƒ˜แƒ—
  • โœ… Update - แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ
  • โœ… Delete - แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒฌแƒแƒจแƒšแƒ confirmation-แƒ˜แƒ—

๐Ÿ—„๏ธ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ

  • ๐Ÿ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ
  • ๐Ÿ“Š แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ
  • ๐Ÿ—๏ธ แƒแƒฎแƒแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ Visual Editor-แƒ˜แƒ—
  • ๐Ÿ”— Primary Key แƒ“แƒ Foreign Key แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ
  • ๐Ÿ“‹ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜

๐Ÿ” แƒซแƒ˜แƒ”แƒ‘แƒ แƒ“แƒ แƒคแƒ˜แƒšแƒขแƒ แƒแƒชแƒ˜แƒ

  • ๐Ÿ”Ž Global Search แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ”แƒšแƒจแƒ˜
  • ๐Ÿ“‘ Pagination แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • ๐Ÿ”„ Sorting แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ•แƒ”แƒขแƒ–แƒ”
  • ๐ŸŽฏ Advanced Filtering

๐ŸŽจ UI/UX

  • ๐Ÿ“ฑ Responsive Bootstrap 5 Design
  • ๐ŸŒ™ Professional Dark Theme
  • ๐ŸŽ‰ SweetAlert2 Notifications
  • ๐Ÿ“Š Interactive Dashboards
  • ๐Ÿš€ Fast Loading

๐Ÿ”ง แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜

แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜:

  • PHP: 7.4 แƒแƒœ แƒฃแƒคแƒ แƒ แƒแƒฎแƒแƒšแƒ˜
  • MySQL: 5.7 แƒแƒœ MariaDB 10.2+
  • Web Server: Apache/Nginx
  • Extensions: PDO, PDO_MySQL, mbstring, json

แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜:

  • PHP: 8.1+
  • MySQL: 8.0+
  • Memory: 128MB+
  • Disk Space: 50MB

๐Ÿ“ฆ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

1๏ธโƒฃ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒ

# Git Repository-แƒ“แƒแƒœ
git clone https://github.com/skryper/stack-core.git
cd stack-core

# แƒแƒœ ZIP แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—
wget https://github.com/skryper/stack-core/archive/main.zip
unzip main.zip

2๏ธโƒฃ Web Server-แƒ–แƒ” แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ

# Apache/Nginx document root-แƒจแƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ
sudo cp -r stack-core/* /var/www/html/

# แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒ
sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/

3๏ธโƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

-- MySQL-แƒจแƒ˜ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ‘แƒแƒ–แƒ
CREATE DATABASE stack_core CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ (แƒแƒ แƒแƒกแƒแƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ)
CREATE USER 'stack_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON stack_core.* TO 'stack_user'@'localhost';
FLUSH PRIVILEGES;

โš™๏ธ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ: config/db.php

<?php
// Database Configuration
define('DB_HOST', 'localhost');           // MySQL แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜
define('DB_NAME', 'stack_core');          // แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
define('DB_USER', 'stack_user');          // แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
define('DB_PASS', 'secure_password');     // แƒžแƒแƒ แƒแƒšแƒ˜
define('DB_CHARSET', 'utf8mb4');          // แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ

// Application Configuration
define('APP_NAME', 'STACK Core');         // แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
define('APP_VERSION', '1.0.0');           // แƒ•แƒ”แƒ แƒกแƒ˜แƒ
define('APP_AUTHOR', 'By Skryper');       // แƒแƒ•แƒขแƒแƒ แƒ˜
define('APP_WEBSITE', 'https://stack.ge/'); // แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜

// Security Configuration
define('SESSION_TIMEOUT', 3600);          // Session timeout (แƒฌแƒแƒ›แƒ”แƒ‘แƒจแƒ˜)
define('CSRF_TOKEN_NAME', '_token');      // CSRF token-แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜

// UI Configuration
define('RECORDS_PER_PAGE', 20);           // แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ
define('MAX_RECORDS_PER_PAGE', 100);      // แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ
?>

๐Ÿ”ง แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

Error Reporting (Development)

// Development Environment-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Production Environment-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
error_reporting(0);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/path/to/error.log');

๐Ÿš€ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

1๏ธโƒฃ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ

  1. แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ—: http://yourdomain.com/public/
  2. แƒ—แƒฃ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒกแƒฌแƒแƒ แƒ˜แƒ, แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ STACK Core แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜
  3. แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก "แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜"

2๏ธโƒฃ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ

แƒแƒฎแƒแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ:

  1. แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— "แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜" โ†’ "แƒแƒฎแƒแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜"
  2. แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
  3. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ—:
    • แƒกแƒแƒฎแƒ”แƒšแƒ˜ (แƒ›แƒแƒ’: username)
    • แƒขแƒ˜แƒžแƒ˜ (แƒ›แƒแƒ’: VARCHAR)
    • แƒกแƒ˜แƒ’แƒ แƒซแƒ” (แƒ›แƒแƒ’: 50)
    • แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜ (NULL, PRIMARY KEY, AUTO_INCREMENT)

แƒจแƒแƒ‘แƒšแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ:

  • ๐Ÿ‘ฅ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜: id, username, email, password, created_at
  • ๐Ÿ“ฆ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜: id, name, description, price, category, in_stock

3๏ธโƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ

แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ:

  1. แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜
  2. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ"
  3. แƒจแƒ”แƒแƒ•แƒกแƒ”แƒ— แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜
  4. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ"

แƒซแƒ˜แƒ”แƒ‘แƒ แƒ“แƒ แƒคแƒ˜แƒšแƒขแƒ แƒแƒชแƒ˜แƒ:

  • แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ Global Search-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ–แƒ” Sorting-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ

๐Ÿ“ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ

stack-core/
โ”œโ”€โ”€ ๐Ÿ“ config/
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ db.php                 # แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ
โ”œโ”€โ”€ ๐Ÿ“ core/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ DatabaseManager.php    # แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ UIHelper.php          # UI แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ actions.php           # CRUD แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜
โ”œโ”€โ”€ ๐Ÿ“ public/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.php             # แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ“แƒแƒจแƒ‘แƒแƒ แƒ“แƒ˜
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ tables.php            # แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ create.php            # แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ
โ”œโ”€โ”€ ๐Ÿ“ views/
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ view_table.php        # แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ/แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ
โ”œโ”€โ”€ ๐Ÿ“ includes/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ header.php            # แƒกแƒแƒ”แƒ แƒ—แƒ Header
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ footer.php            # แƒกแƒแƒ”แƒ แƒ—แƒ Footer
โ”œโ”€โ”€ ๐Ÿ“ auth/                     # Authentication (แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜)
โ”œโ”€โ”€ ๐Ÿ“ modules/                  # แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜
โ”œโ”€โ”€ ๐Ÿ“ templates/                # Custom แƒ—แƒ”แƒ›แƒ”แƒ‘แƒ˜
โ”œโ”€โ”€ ๐Ÿ“„ README.md                 # แƒ”แƒก แƒคแƒแƒ˜แƒšแƒ˜
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE                   # แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ
โ””โ”€โ”€ ๐Ÿ“„ .htaccess                # Apache แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

๐Ÿ” แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ

๐Ÿ›ก๏ธ แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜

SQL Injection แƒ“แƒแƒชแƒ•แƒ:

// โœ… แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ - PDO Prepared Statements
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);

// โŒ แƒแƒ แƒแƒกแƒแƒคแƒ แƒ—แƒฎแƒ - Direct Query
$query = "SELECT * FROM users WHERE id = " . $_GET['id'];

CSRF แƒ“แƒแƒชแƒ•แƒ:

// Token-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
$token = generateCSRFToken();

// Validation
if (!validateCSRFToken($_POST['_token'])) {
    die('CSRF Token Invalid');
}

Session Security:

// Session Timeout
if (isset($_SESSION['last_activity']) && 
    (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
    session_destroy();
}

๐Ÿ”’ แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜

  1. Strong Passwords: แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜
  2. HTTPS: Production-แƒ–แƒ” แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ HTTPS
  3. Regular Updates: แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ— PHP แƒ“แƒ MySQL
  4. Backup: แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ
  5. Access Control: แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ”แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ /config/ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒ–แƒ”

๐ŸŽจ UI/UX แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

๐ŸŽฏ Design System

แƒคแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ แƒ:

:root {
    --stack-primary: #667eea;     /* แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒคแƒ”แƒ แƒ˜ */
    --stack-secondary: #764ba2;   /* แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒคแƒ”แƒ แƒ˜ */
    --stack-success: #06d6a0;     /* แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ */
    --stack-info: #118ab2;        /* แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ */
    --stack-warning: #ffd166;     /* แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ */
    --stack-danger: #ef476f;      /* แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ */
    --stack-dark: #073b4c;        /* แƒ›แƒฃแƒฅแƒ˜ */
}

Responsive Breakpoints:

  • ๐Ÿ“ฑ Mobile: < 768px
  • ๐Ÿ“ฑ Tablet: 768px - 1024px
  • ๐Ÿ’ป Desktop: > 1024px

๐Ÿš€ JavaScript Features

SweetAlert2 Notifications:

// แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ
showSuccess('แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ!');

// แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ
showError('แƒ›แƒแƒฎแƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ!');

// แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ
confirmAction('แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ—?', function() {
    // Action callback
});

๐Ÿ“– API แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ

๐Ÿ”ง Core Classes

DatabaseManager Class

// แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ
$dbManager = new DatabaseManager($pdo);

// แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ
$tables = $dbManager->getTables();

// แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ
$info = $dbManager->getTableInfo('users');

// แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ
$result = $dbManager->getRecords('users', [
    'page' => 1,
    'limit' => 20,
    'search' => 'john',
    'order_by' => 'created_at',
    'order_dir' => 'DESC'
]);

// แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ
$result = $dbManager->insertRecord('users', [
    'username' => 'john_doe',
    'email' => 'john@example.com'
]);

// แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ
$result = $dbManager->updateRecord('users', $id, [
    'username' => 'john_updated'
]);

// แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ
$result = $dbManager->deleteRecord('users', $id);

UIHelper Class

// Header-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
echo UIHelper::getHeader('Page Title');

// Navigation-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
echo UIHelper::getNavbar('current_page');

// Alert-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
echo UIHelper::showAlert('Message', 'success');

// Pagination-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
echo UIHelper::getPagination($page, $totalPages, $baseUrl);

// Footer-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ
echo UIHelper::getFooter();

๐Ÿค แƒฌแƒ•แƒšแƒ˜แƒšแƒ˜

STACK Core แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ“แƒ แƒ•แƒ—แƒแƒœแƒฎแƒ›แƒแƒ‘แƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ•แƒšแƒ˜แƒšแƒก!

๐Ÿ”ง Development Setup

# Repository-แƒก แƒฉแƒแƒ›แƒแƒฌแƒ”แƒ แƒ
git clone https://github.com/skryper/stack-core.git
cd stack-core

# Development branch-แƒ–แƒ” แƒ’แƒแƒ“แƒแƒกแƒ•แƒšแƒ
git checkout -b feature/new-feature

# แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ
# ...

# Commit แƒ“แƒ Push
git add .
git commit -m "Add new feature"
git push origin feature/new-feature

# Pull Request-แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

๐Ÿ“‹ Contribution Guidelines

  1. Code Style: PSR-12 แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒก แƒ’แƒแƒงแƒแƒšแƒ
  2. Comments: แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒฅแƒแƒ แƒ—แƒฃแƒš แƒ”แƒœแƒแƒ–แƒ”
  3. Testing: แƒงแƒ•แƒ”แƒšแƒ แƒแƒฎแƒแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ
  4. Documentation: README.md-แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

๐Ÿ› Bug Reports

แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ›แƒแƒ’แƒ•แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ—: GitHub Issues

แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ แƒ”แƒžแƒแƒ แƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก:

  • แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ
  • PHP แƒ•แƒ”แƒ แƒกแƒ˜แƒ
  • แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒžแƒ แƒแƒ“แƒฃแƒฅแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒ“แƒ แƒคแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜
  • แƒกแƒ™แƒ แƒ˜แƒœแƒจแƒแƒขแƒ”แƒ‘แƒ˜ (แƒ—แƒฃ แƒกแƒแƒญแƒ˜แƒ แƒแƒ)

๐Ÿ“ แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ

MIT License

Copyright (c) 2025 Skryper (https://stack.ge/)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

๐Ÿ‘จโ€๐Ÿ’ป แƒแƒ•แƒขแƒแƒ แƒ˜

๐Ÿš€ Skryper

Website Email


๐Ÿ’ แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ

STACK Core-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ!

แƒ—แƒฃ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ›แƒแƒ’แƒ”แƒฌแƒแƒœแƒแƒ—, แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ›แƒ˜แƒกแƒชแƒ”แƒ— โญ GitHub-แƒ–แƒ”!


แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ โค๏ธ -แƒ˜แƒ— แƒกแƒแƒฅแƒแƒ แƒ—แƒ•แƒ”แƒšแƒแƒจแƒ˜ ๐Ÿ‡ฌ๐Ÿ‡ช

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published