nthinspectiontool/README.md

82 lines
No EOL
2.3 KiB
Markdown

# Inspection Reporting and Management Application
A production-ready web application for managing inspection reports, built with Python Flask.
## Features
- User authentication and authorization
- Admin panel for user management
- Inspection creation, editing, and viewing
- Photo uploads with captions and action requirements
- PDF export of inspection reports (A4 format)
- Role-based access control (admin vs regular users)
- Responsive design with Tailwind CSS
## Technology Stack
- **Language**: Python 3.11+
- **Web Framework**: Flask (with Flask-Login, Flask-WTF, Flask-SQLAlchemy)
- **Database**: SQLite via SQLAlchemy ORM
- **PDF Generation**: WeasyPrint
- **TLS/HTTPS**: Self-signed certificate
- **Frontend**: Jinja2 templates + Tailwind CSS (via CDN) + vanilla JS
- **Authentication**: Bcrypt password hashing, session-based login
- **File Storage**: Local filesystem under `/uploads/`
## Setup
> **Note**: After running the setup script, an admin user is created with username `admin` and password `admin`. You can change these credentials after logging in.
1. Clone the repository
2. Run the setup script:
```bash
python setup.py
```
3. The setup script will:
- Install dependencies
- Generate SSL certificates
- Create the database and run migrations
- Prompt for admin account details
4. Start the application:
```bash
python run.py
```
5. Access the application at https://localhost:5000
## Project Structure
```
inspection-app/
├── app/
│ ├── __init__.py
│ ├── models.py
│ ├── routes/
│ │ ├── auth.py
│ │ ├── admin.py
│ │ ├── inspections.py
│ │ └── export.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── login.html
│ │ ├── dashboard.html
│ │ ├── inspection_form.html
│ │ ├── inspection_view.html
│ │ └── admin/
│ │ ├── users.html
│ │ └── user_form.html
│ ├── utils/
│ │ ├── pdf_generator.py
│ │ └── security.py
│ └── static/
│ ├── css/
│ └── js/
├── uploads/
├── certs/
├── setup.py
├── run.py
├── requirements.txt
└── .gitignore
```
## License
This project is licensed under the MIT License.