Files
2026-03-20 21:47:02 +05:00

119 lines
3.8 KiB
Markdown
Executable File

***
# Corporate Digital University System (NTSPI)
A comprehensive web platform designed for the **Nizhny Tagil State Social Pedagogical Institute (NTSPI)**. This system serves as a full-featured replacement for the legacy website, providing tools for content management, educational program administration, admission campaigns, and institutional structure management.
## 🚀 Tech Stack
### Frontend
* **Framework:** Vue.js 3 (Composition API)
* **Adapter:** Inertia.js (Monolith structure with SPA feel)
* **Styling:** Tailwind CSS
* **Build Tool:** Vite
### Backend
* **Core:** PHP 8.2 / Laravel
* **Admin Panel:** Filament PHP (CMS & Resource Management)
* **Database:** MySQL 8.0
* **Caching & Queues:** Redis
* **Server:** Nginx + PHP-FPM
### Infrastructure
* **Containerization:** Docker & Docker Compose
* **SSL:** Certbot (Let's Encrypt)
---
## 🏗 Architecture
The backend follows the **Porto Architecture Pattern**, organizing code into logical modular units to ensure scalability and maintainability.
* **Ship Layer:** Low-level code, parent classes, and configuration.
* **Containers Layer:** Encapsulates business logic into modular containers (e.g., `AdditionalEducation`, `Article`, `Event`, `User`, `Schedule`, etc.).
* **Request Lifecycle:** Route -> Controller -> Action -> Task -> UI.
---
## ✨ Key Features
* **Content Management (CMS):** Advanced management of News, Articles, and Events with media galleries and status workflows (Draft, Published, Archived).
* **Institute Structure:** Hierarchical management of Faculties, Departments (Kafedras), Divisions, and Staff profiles.
* **Educational Programs:** Catalog of study programs, admission plans, and entrance exam requirements.
* **Admissions Management:** Tools to manage "Admission Campaigns" (Priemnaya Kampaniya), enabling dynamic updates to student intake numbers and rules.
* **Role-Based Access Control (RBAC):** Powered by **Filament Shield**. Granular permissions allowing different departments (Deans, Press Service, HR) to manage their specific sections independently.
* **Dynamic Routing:** Custom pages and navigation structures managed directly via the Database.
* **Cross-Model Search:** Unified global search across News, Pages, Events, and Programs using standard Eloquent models.
---
## 🛠 Installation & Local Development
The project includes a Docker environment for easy deployment.
### 1. Clone the Repository
```bash
git clone https://github.com/F4ilji/ntspi-app.git
cd ntspi-app
```
### 2. Configure Environment
Create the environment file from the example.
```bash
cp example.env .env
```
### 3. Create Directories & Set Permissions
Ensure Laravel storage directories exist and have write permissions.
```bash
mkdir -p storage/{app,logs,framework/{cache,sessions,views}}
sudo chown -R www-data:www-data storage
sudo chmod -R 775 storage
```
### 4. Start Docker Containers
Launch Nginx, MySQL, Redis, and the App container.
```bash
docker compose up --build -d
```
### 5. Install Dependencies
Enter the PHP container to run setup commands:
```bash
docker exec -it ntspi-php bash
```
Inside the container, run:
```bash
# Backend dependencies
composer install
# Database migrations
php artisan migrate
# Frontend dependencies
npm i
# Build assets
npm run build
```
### 6. Initialize System Data
Set up user roles and seed the database with initial data.
```bash
# Initialize permissions/roles (Critical for Filament Shield)
php artisan roles:init-roles
# Seed dummy data (Optional)
php artisan db:seed
```
---
## 📂 Project Structure Overview
* `_docker/`: Docker configuration files (Nginx, PHP, MySQL).
* `app/Containers/`: Business logic modules (Porto pattern).
* `resources/js/`: Vue.js components, Pages, and shared UI assets.
* `routes/`: Web and API routes (including dynamic DB-based routing logic).