F4ilji a372f725cd fix(ssr): embed Ziggy routes as fallback for SSR context
ZiggyVue needs routes in its config, but page.props.ziggy from the
server may not carry them in the SSR worker. Importing the static
Ziggy config ensures routes are always available.
2026-07-05 21:56:51 +05:00
2026-03-20 21:47:02 +05:00
2026-03-20 21:47:02 +05:00
2026-03-20 21:47:02 +05:00
2026-07-02 17:11:38 +05:00
2026-03-20 21:47:02 +05:00
2024-09-19 16:06:49 +05:00
2026-03-20 21:47:02 +05:00
2026-03-20 21:47:02 +05:00
2026-04-07 17:54:26 +05:00
2026-04-07 17:54:26 +05:00
2026-03-20 21:47:02 +05:00
2026-03-20 21:47:02 +05:00
2026-03-20 21:47:02 +05:00
2026-04-07 17:54:26 +05:00
2026-03-20 21:47:02 +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%