cc3411d6eb8d827d802cf6ab3a45a44f59895eda
Romanoff Fire Alarm Management System
A web-based application for managing fire alarm installation projects. Track jobs, budgets, schedules, phases, and materials with an intuitive dashboard interface.
Features
- Dashboard - Overview with charts showing job status, budgets, completion rates, and team assignments
- Job Management - Create, edit, and track fire alarm installation projects with comprehensive details
- Schedule Tracking - Manage project phases (rough-in, trim, commissioning, final, turnover)
- Materials Inventory - Track material procurement, ordering, receipt, and delivery
- Data Import - Import project data from Excel spreadsheets
- REST API - Full API for programmatic access to all data
Tech Stack
- Backend: Python 3, Flask, SQLAlchemy
- Database: SQLite (default)
- Frontend: Bootstrap 5, Chart.js, Vanilla JavaScript
- Data Processing: Pandas, OpenPyXL
Installation
Prerequisites
- Python 3.8 or higher
- pip (Python package manager)
Setup
-
Clone the repository:
git clone <repository-url> cd romanoff -
Create and activate a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt -
Run the application:
python run.py -
Open your browser and navigate to
http://localhost:5000
Configuration
The application can be configured using environment variables:
| Variable | Description | Default |
|---|---|---|
SECRET_KEY |
Flask secret key for sessions | dev-secret-key-change-in-production |
DATABASE_URL |
Database connection string | sqlite:///romanoff.db |
Usage
Dashboard
The main dashboard provides an at-a-glance view of all projects:
- Summary cards showing total jobs, budget, average completion, and estimates
- Charts for job status distribution, budget by vendor, and completion progress
- Recent jobs table with progress indicators
Managing Jobs
- Navigate to Jobs in the navigation bar
- Click Add New Job to create a project
- Fill in project details including budget, team assignments, and milestones
- View job details by clicking on a job row
- Edit or delete jobs from the detail view
Schedule Management
- Navigate to Schedule to view all project phases
- Filter by job, phase type, or completion status
- Track mobilization dates, due dates, and men on site
- Monitor which phases have met their due dates
Materials Tracking
- Navigate to Materials to view inventory across all jobs
- Filter by part number, job, or status (pending/ordered/received)
- Track ordering, receipt, and delivery of materials
- Update material status inline
Importing Data
To import data from Excel files:
python import_data.py
This imports from:
Raleigh jobs FIRE ALARM INFORMATION.xlsx- Job recordsschedule_updated.xlsm- Schedule/phase data
Project Structure
romanoff/
├── run.py # Application entry point
├── import_data.py # Excel data import utility
├── requirements.txt # Python dependencies
├── README.md # This file
├── API.md # API documentation
├── DEVELOPMENT.md # Developer guide
├── app/
│ ├── __init__.py # Flask app factory
│ ├── models.py # Database models
│ ├── routes.py # Routes and API endpoints
│ ├── templates/ # Jinja2 HTML templates
│ │ ├── base.html
│ │ ├── dashboard.html
│ │ ├── jobs.html
│ │ ├── job_detail.html
│ │ ├── job_form.html
│ │ ├── schedule.html
│ │ └── materials.html
│ └── static/
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── app.js
└── instance/ # Instance-specific data (database)
API
See API.md for complete REST API documentation.
Quick Reference
| Endpoint | Method | Description |
|---|---|---|
/api/stats |
GET | Dashboard statistics |
/api/jobs |
GET, POST | List/create jobs |
/api/jobs/<id> |
GET, PUT, DELETE | Get/update/delete job |
/api/jobs/<id>/phases |
GET, POST | List/create phases for job |
/api/phases/<id> |
PUT, DELETE | Update/delete phase |
/api/materials |
GET | List all materials |
/api/jobs/<id>/materials |
GET, POST | List/create materials for job |
/api/materials/<id> |
PUT, DELETE | Update/delete material |
Development
See DEVELOPMENT.md for architecture details and contribution guidelines.
License
[Add license information here]
Description
Languages
HTML
67.4%
Python
28.1%
JavaScript
3%
CSS
1.5%