A Flask web application that displays and manages an interactive catalog of AI tools for healthcare professionals (General Practitioners / Huisartsen).
- π Interactive DataTable interface with search, sort, and filter capabilities
- π Automatic Excel file parsing with smart header detection
- π± Responsive design with Bootstrap
- π Search across all fields
- π€ Export functionality (Excel, CSV, PDF)
- π¨ Modern dark-themed UI
- π Automatic grouping of tools with multiple modules
- Python 3.8 or higher
- pip (Python package manager)
git clone https://github.com/Nootski/huisartsenai.git
cd huisartsenaipython -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r requirements.txtCopy the example environment file and edit it:
cp .env.example .envEdit .env to set your configuration:
CATALOG_FILE_PATH: Path to your Excel catalog file (optional, defaults togp_ai_tool_catalog-2.xlsxin project root)PORT: Port to run the application on (default: 5173)SECRET_KEY: Set a secure secret key for production
python app.pyThe application will be available at http://127.0.0.1:5173
gunicorn --bind 0.0.0.0:5173 --workers 4 wsgi:appThe application expects an Excel file with the following structure:
- First column should contain the tool name
- Subsequent columns can include: modules, wijze (method), functies (functions), integraties (integrations), etc.
- Tools with multiple modules can span multiple rows (with empty name cells for subsequent rows - they will be automatically grouped)
Example:
name | modules | wijze | functies
Tool Name | Module 1 | Method 1 | Function 1
| Module 2 | Method 2 | Function 2
Another Tool | Module A | Method A | Function A
sudo apt update
sudo apt install python3 python3-pip python3-venv nginxscp -r ./* user@your-vps-ip:/var/www/ai-huisarts/Or use Git:
ssh user@your-vps-ip
cd /var/www
git clone <your-repository-url> ai-huisarts
cd ai-huisartspython3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtcp .env.example .env
nano .env # Edit configurationCopy the provided service file:
sudo cp deployment/ai-huisarts.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable ai-huisarts
sudo systemctl start ai-huisartsCheck status:
sudo systemctl status ai-huisartsCopy the provided Nginx configuration:
sudo cp deployment/nginx.conf /etc/nginx/sites-available/ai-huisarts
sudo ln -s /etc/nginx/sites-available/ai-huisarts /etc/nginx/sites-enabled/
sudo nginx -t # Test configuration
sudo systemctl restart nginxsudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com.
βββ app.py # Main Flask application
βββ wsgi.py # WSGI entry point for production
βββ requirements.txt # Python dependencies
βββ gp_ai_tool_catalog-2.xlsx # Excel catalog file
βββ templates/
β βββ index.html # Main HTML template
βββ static/
β βββ vendor/ # JavaScript and CSS libraries
β βββ bootstrap.min.css
β βββ bootstrap.bundle.min.js
β βββ datatables.min.css
β βββ datatables.min.js
β βββ jquery-3.7.1.min.js
β βββ jszip.min.js
βββ deployment/
β βββ ai-huisarts.service # Systemd service file
β βββ nginx.conf # Nginx configuration
βββ README.md # This file
GET /- Main application interfaceGET /api/data- JSON API endpoint returning catalog data
The application uses:
- Flask for the web framework
- Pandas for Excel file processing
- DataTables for the interactive table interface
- Bootstrap for responsive design
- Smart Excel Parsing: Automatically detects header rows and handles various Excel formats
- Tool Grouping: Automatically groups multiple rows of the same tool (for tools with multiple modules)
- Caching: File modification time-based caching for better performance
- Error Handling: Graceful handling of missing or malformed Excel files
If port 5173 is already in use, you can change it via environment variable:
export PORT=8080
python app.pyEnsure the CATALOG_FILE_PATH in your .env file points to the correct location, or place the Excel file in the project root directory.
Make sure your application has read permissions for the Excel file:
chmod 644 gp_ai_tool_catalog-2.xlsx[Your License Here]
Contributions are welcome! Please feel free to submit a Pull Request.
For issues and questions, please open an issue on the GitHub repository.