Project Overview
The inventory management system follows a simple, functional file structure organized by feature modules. Each directory contains related PHP files that handle specific aspects of the application.Directory Tree
File Descriptions
Root Level
index.php - Main Dashboard
index.php - Main Dashboard
Purpose: Landing page after successful login, displays user information and session status.Location: Session Requirements:
/index.phpKey Features:- Session validation
- Redirects to login if not authenticated
- Displays username and role
- Logout link
$_SESSION['usuario']- User’s name$_SESSION['rol']- User’s role (admin/usuario)
config/
conexion.php - Database Connection
conexion.php - Database Connection
Purpose: Establishes MySQL database connection using MySQLi.Location: Usage Pattern:
Included at the top of every file that needs database access:Global Variable:
/config/conexion.phpConfiguration:$conn- MySQLi connection object used throughout the application
auth/
Authentication module handles user login and session management.login.php - User Authentication
login.php - User Authentication
Purpose: Handles user login form and authentication logic.Location: Session Creation:Error Messages:
/auth/login.phpFlow:- Display login form (GET request)
- Process credentials (POST request)
- Query usuarios table by email
- Validate password (plain text comparison)
- Create session variables
- Redirect to main page
correo(email) - User’s email addresspassword- User’s passwordlogin(submit button)
- “Usuario no encontrado” - Email doesn’t exist
- “Contraseña incorrecta” - Wrong password
logout.php - Session Termination
logout.php - Session Termination
Purpose: Destroys user session and redirects to login.Location: Accessed From:
/auth/logout.phpImplementation:- Main dashboard logout link
- Manual navigation
productos/
Product management module implements full CRUD operations.listar.php - Product List & Navigation Hub
listar.php - Product List & Navigation Hub
crear.php - Create New Product
crear.php - Create New Product
Purpose: Form and logic for creating new products.Location: Note: Initial stock is set to 0 by database default. Stock is managed through movimientos.
/productos/crear.phpForm Fields:nombre- Product name (text, required)codigo- Product code/SKU (text, required)precio- Price (number, decimal, required)
editar.php - Edit Existing Product
editar.php - Edit Existing Product
Purpose: Form and logic for updating product information.Location: Update Query:Editable Fields:
/productos/editar.phpURL Parameter:id- Product ID to edit (GET parameter)
- nombre
- codigo
- precio
eliminar.php - Delete Product
eliminar.php - Delete Product
Purpose: Deletes a product from the database.Location: Cascade Effect:
Due to foreign key constraint, all related movimientos records are automatically deleted (ON DELETE CASCADE).Confirmation:
Handled by JavaScript confirm dialog in listar.php:
/productos/eliminar.phpURL Parameter:id- Product ID to delete (GET parameter)
movimientos/
Inventory movement module handles stock entries and exits.entrada.php - Stock Entry Registration
entrada.php - Stock Entry Registration
Purpose: Register incoming inventory and increase stock.Location: Step 2: Update StockFlow:
/movimientos/entrada.phpForm Fields:producto_id- Product selection dropdown (from productos table)cantidad- Quantity to add (number, min=1)
- Display form with product dropdown
- User selects product and enters quantity
- Insert movement record
- Increment product stock
- Redirect to product list
salida.php - Stock Exit Registration
salida.php - Stock Exit Registration
Purpose: Register outgoing inventory and decrease stock with validation.Location: Step 2: Record MovementStep 3: Update StockValidation:
Prevents negative stock by checking available quantity before processing.
/movimientos/salida.phpForm Fields:producto_id- Product selection dropdowncantidad- Quantity to remove (number, min=1)
Common Patterns
Session Management
Every protected page follows this pattern:Form Processing
All forms use POST method with named submit buttons:Database Operations
Query Execution:Navigation Structure
Module Dependencies
File Naming Conventions
- Module directories: lowercase, plural (productos, movimientos)
- PHP files: lowercase, descriptive verbs (crear, editar, eliminar, listar)
- Action files: verb-based naming (entrada, salida, login, logout)
- Config files: descriptive nouns (conexion)
HTTP Methods
- GET: Display forms, list data, navigation
- POST: Submit forms, create/update/delete operations
- URL Parameters: Pass entity IDs (e.g.,
?id=5)
Next Steps
Database Schema
Explore the complete database structure
Contributing
Learn how to contribute to the project