119 lines
3.8 KiB
Markdown
Executable File
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).
|