2026-01-26 10:24:59 +05:00
2026-01-25 22:51:13 +05:00
2026-01-26 10:01:16 +05:00
2026-01-09 19:07:51 +05:00
2026-01-22 14:27:12 +05:00
2026-01-26 10:24:59 +05:00
2024-09-19 16:06:49 +05:00
2025-08-11 22:55:58 +05:00
2024-09-19 16:06:49 +05:00
2024-09-19 16:06:49 +05:00
2024-09-19 16:06:49 +05:00
2025-12-15 21:32:37 +05:00
2025-05-15 15:59:12 +05:00


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

git clone https://github.com/F4ilji/ntspi-app.git
cd ntspi-app

2. Configure Environment

Create the environment file from the example.

cp example.env .env

3. Create Directories & Set Permissions

Ensure Laravel storage directories exist and have write permissions.

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.

docker compose up --build -d

5. Install Dependencies

Enter the PHP container to run setup commands:

docker exec -it ntspi-php bash

Inside the container, run:

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

# 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).
S
Description
No description provided
Readme
14 MiB
Languages
PHP 49.7%
Vue 44.1%
JavaScript 4.6%
Blade 0.9%
CSS 0.6%