A Flask-based web application that helps organizations find the right security vendor for their projects based on various requirements including project type, budget, compliance needs, and technical specifications.
- Interactive form with comprehensive project assessment
- Real-time progress tracking during vendor analysis
- Responsive web interface with modern styling
- Support for various project types, industries, and compliance requirements
- Budget and timeline considerations
- Technology stack compatibility assessment
- Multi-language support: English, Spanish (Español), and French (Français)
- Python 3.11 or higher
- uv package manager
-
Install uv (if not already installed):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Clone the repository:
git clone <repository-url> cd <repository-name>
-
Install dependencies:
uv sync
Start the Flask development server:
uv run python app.pyThe application will be available at http://localhost:5000
For production deployment, you can use a WSGI server like Gunicorn:
# Run with gunicorn
uv run gunicorn -w 4 -b 0.0.0.0:8000 app:app- Open your browser and navigate to
http://localhost:5000 - Select your preferred language from the dropdown in the top-right corner (English, Spanish, or French)
- Fill out the comprehensive security vendor selection form:
- Project Information: Name, type, and company size
- Security Requirements: Assessment types, priority level, budget, and timeline
- Technical Requirements: Technology stack, complexity, and codebase size
- Compliance & Industry: Industry type, compliance requirements, and data sensitivity
- Click "Find My Security Vendor" to get a recommendation
- The system will analyze your requirements and recommend an appropriate security vendor
To add new Python packages:
uv add package-nameThe application runs in debug mode by default when using uv run python app.py. This enables:
- Automatic reloading on code changes
- Detailed error messages
- Debug toolbar (if installed)
You can set environment variables for configuration:
export FLASK_ENV=development
export FLASK_DEBUG=1
uv run python app.pyGET /- Main application pageGET /set-language/<language>- Set the user's language preference (en, es, or fr)POST /api/recommend- Vendor recommendation endpoint (accepts form data and returns JSON)
The application supports three languages:
- English (en) - Default
- Spanish (es) - Español
- French (fr) - Français
To add support for a new language:
-
Extract translatable strings:
uv run pybabel extract -F babel.cfg -o messages.pot . -
Initialize a new language catalog (e.g., German):
uv run pybabel init -i messages.pot -d translations -l de
-
Edit the translation file at
translations/de/LC_MESSAGES/messages.po -
Compile the translations:
uv run pybabel compile -d translations
-
Add the language code to
BABEL_SUPPORTED_LOCALESinapp.py
After modifying translatable strings in the code:
-
Update the translation files:
uv run pybabel update -i messages.pot -d translations
-
Edit the updated
.pofiles to add new translations -
Compile the translations:
uv run pybabel compile -d translations