A comprehensive web application for managing computer setup configurations and tracking technician assignments. Config Matrix streamlines the process of deploying and managing multiple computer configurations across different user profiles with multi-technician support.
This software is provided "as is" without warranty of any kind. Use at your own risk.
- Overview
- Features
- Technology Stack
- Installation
- Usage
- Application Workflow
- Database Schema
- API Endpoints
- License
- Deployment
- Future Enhancements
Config Matrix is designed for IT departments and system administrators who need to manage multiple computer setups efficiently. The application provides a centralized platform to:
- Create and manage configuration profiles for different use cases (Developer, Creative Professional, Business User, etc.)
- Track setup progress across multiple computers
- Assign multiple technicians to computer configurations
- Monitor completion status and deadlines
- Manage setup steps with download links and documentation
- Multi-Technician Support: Assign multiple technicians to each computer with many-to-many relationships
- Profile Management: Create custom setup profiles with specific software and configuration steps
- Progress Tracking: Real-time tracking of setup completion across all computers
- Step Management: Create, edit, and organize setup steps with download links
- Deadline Management: Set and track setup deadlines for each computer
- Notes System: Add custom notes to computers for special instructions or tracking
- Modern Dark Theme: Professional dark UI with responsive design
- Interactive Dashboard: Overview of all computers, profiles, and system status
- Real-time Filtering: Filter computers by technician, completion status, and search terms
- Drag-and-Drop Interface: Easy profile editing with step management
- Modal-based Workflows: Streamlined user experience for complex operations
- Secure Authentication: BCrypt password hashing with salt
- Session Management: Secure session handling with CSRF protection
- Input Validation: Comprehensive form validation and sanitization
- Password Requirements: Enforced password complexity rules
- Robust Database Design: SQLAlchemy ORM with proper relationships
- Session Management: Context managers for proper database session handling
- Data Integrity: Foreign key constraints and relationship validation
- Sample Data Generator: Built-in script to populate the database with realistic test data
- Python 3.8+: Core programming language
- Flask 2.3.3: Web framework
- SQLAlchemy 2.0.21: ORM and database toolkit
- Flask-Login 0.6.3: User session management
- Flask-WTF 1.1.1: Form handling and CSRF protection
- BCrypt 4.0.1: Password hashing and security
- HTML5/CSS3: Modern web standards
- Bootstrap 5.1.3: UI framework and responsive design
- Bootstrap Icons: Comprehensive icon library
- Vanilla JavaScript: Dynamic frontend interactions
- Modern CSS Variables: Theming and design system
- SQLite: Lightweight database for development and small deployments
- Configurable: Easy to switch to PostgreSQL, MySQL, or other databases
- Python 3.8 or higher
- pip (Python package manager)
- Git (for cloning the repository)
-
Clone the Repository
git clone https://github.com/mitzCanCode/Config-matrix.git cd Config-matrix
-
Create a Virtual Environment
# On macOS/Linux python3 -m venv venv source venv/bin/activate # On Windows python -m venv venv venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Initialize the Database
python create_sample_db.py
This will create a SQLite database with sample data including:
- 6 sample technicians (including a 'user' account)
- 35+ setup steps with real download links
- 5 pre-configured profiles (Developer, Creative Professional, Business User, etc.)
- 50+ sample computers with varied progress levels
- Realistic test data for development and testing
-
Run the Application
python app.py
The application will be available at:
http://localhost:9999
-
Access the Application
- Open your web browser and navigate to
http://localhost:9999
- Use the sample credentials:
- Username:
user
- Password:
Password123@
- Username:
- Or register a new account
- Open your web browser and navigate to
- Login/Register: Access the application through the authentication system
- Dashboard: Get an overview of the system status and navigate to different sections
- Computers: View and manage all computers in the system
- Profiles: Create and manage configuration profiles
- Setup Process: Track individual computer setup progress
The sample database includes several pre-configured technician accounts:
Username | Password | Role |
---|---|---|
user | Password123@ | Standard User |
Alice Johnson | SecurePass2024! | Technician |
Robert Chen | TechSupport#789 | Technician |
Maria Rodriguez | ITAdmin$456 | Technician |
James Wilson | ConfigMaster@123 | Technician |
Sarah Kim | SystemSetup@321 | Technician |
Dashboard โ Profiles โ Add Profile โ Configure Steps โ Save
- Create profiles for different use cases (Developer, Creative, Business)
- Add relevant setup steps with download links
- Organize steps in logical order
Dashboard โ Computers โ Add Computer โ Assign Profile & Technicians โ Track Progress
- Add new computers to the system
- Assign appropriate profiles and technicians
- Set deadlines and add notes
- Monitor setup progress
Computers โ Select Computer โ Setup Interface โ Toggle Steps โ Complete Setup
- Access individual computer setup pages
- Mark steps as complete/incomplete
- Edit computer details (name, deadline, technicians, notes)
- Track overall progress
Computer โ Edit โ Select Multiple Technicians โ Save
- Assign multiple technicians to a single computer
- Track who is working on what
- Collaborative setup management
Technicians
id
(Primary Key)name
(String, Required)password
(String, Hashed)
Profiles
id
(Primary Key)name
(String, Required)
SetupSteps
id
(Primary Key)name
(String, Required)download_link
(String, Optional)
Computers
id
(Primary Key)name
(String, Required)deadline
(DateTime, Optional)profile_id
(Foreign Key)notes
(String, Optional)
computer_technician_association
- Many-to-many relationship between Computers and Technicians
profile_step_association
- Many-to-many relationship between Profiles and SetupSteps
computer_step_association
- Many-to-many relationship between Computers and SetupSteps (completed steps)
GET /
- Landing pageGET /login
- Login pagePOST /login
- AuthenticationGET /register
- Registration pagePOST /register
- User registrationGET /logout
- User logout
GET /api/computers
- List all computersPOST /api/add_computer
- Create new computerGET /api/computer_info/<name>
- Get computer detailsGET /api/computer_setup/<name>
- Get setup informationPOST /api/edit_computer
- Edit computer detailsPOST /api/delete_computer
- Delete computerPOST /api/toggle_step
- Toggle step completion
GET /api/profiles
- List all profilesPOST /api/add_profile
- Create new profileGET /api/profile/<id>
- Get profile detailsPOST /api/profile/<id>/steps
- Add step to profileDELETE /api/profile/<id>/steps/<step_id>
- Remove step from profileDELETE /api/profile/<id>/delete
- Delete profile
POST /api/steps
- Create new stepPUT /api/steps/<id>
- Edit stepPOST /api/steps/create-and-add
- Create step and add to profilePOST /api/steps/<id>/delete
- Delete step
GET /api/technicians
- List all technicians
The main dashboard provides an overview of the system with navigation to computers and profiles.
- List View: Grid of computer cards showing progress, deadlines, and assignments
- Filters: Search by name, filter by technician, completion status toggles
- Multi-select: Assign multiple technicians to computers
- Profile List: Overview of all configuration profiles
- Profile Editor: Drag-and-drop interface for managing setup steps
- Step Management: Create, edit, and organize setup steps
- Progress Tracking: Visual representation of completed/remaining steps
- Step Details: Download links and instructions for each step
- Computer Info: Edit computer details directly from setup page
- Follow the installation instructions above
- Run the application in debug mode:
python app.py
- The application will reload automatically when you make changes
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Environment Variables: Set up proper environment variables for production
- Database: Switch to PostgreSQL or MySQL for production use
- Security: Enable HTTPS and secure session cookies
- Authentication: Consider implementing OAuth or LDAP integration
- Logging: Set up proper logging and monitoring
- Backup: Implement regular database backups
A Dockerfile and docker-compose configuration will be added in future releases for easy deployment.
- Email Notifications: Automated deadline reminders
Config Matrix - Streamlining computer setup management for IT professionals.