Skip to main content

Getting Started with AquaGen API

This guide will help you set up your development environment and get the AquaGen API running on your local machine.

Prerequisites​

Before you begin, ensure you have the following installed:

  • Python 3.11
  • pip (Python package manager)
  • Git (for cloning the repository)
  • Azure Account (for cloud services)
  • Virtual Environment (recommended)
System Requirements
  • OS: macOS, Linux, or Windows with WSL2
  • RAM: Minimum 4GB (8GB recommended)
  • Disk Space: At least 2GB free space

Installation​

Step 1: Clone the Repository​

git clone https://github.com/Fluxgentech/aquagenapi.git
cd aquagenapi

Step 2: Create a Virtual Environment​

# Create virtual environment
python -m venv .venv

# Activate on macOS/Linux:
source .venv/bin/activate

# Activate on Windows:
.venv\Scripts\activate

Step 3: Install Dependencies​

pip install -r requirements.txt
macOS Users

If you encounter errors with PDF generation libraries, install these specific versions:

pip install xhtml2pdf==0.2.13
pip install reportlab==4.0.7

Step 4: Run the Application​

export FLASK_DEBUG=1 && export FLASK_ENV=dev && flask run --host localhost --port 5001

The application will start on http://localhost:5001.

API Documentation​

Once the application is running, access the interactive Swagger docs:

tip

The Swagger UI at each of these URLs lets you explore and test all available endpoints interactively without writing any code.

Authentication​

Getting Your First JWT Token​

Use Swagger UI

The easiest way to get a token is via the Swagger UI at http://localhost:5001/ — enter your username and password in the /api/user/login endpoint's header fields and execute directly.

If calling manually, pass credentials as HTTP headers:

curl -X GET http://localhost:5001/api/user/login \
-H "username: your-username" \
-H "password: your-password"

The response includes:

{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"industryId": "your-industry-id",
"userId": "your-user-id",
"permissions": ["REPORTS", "ALERTS", "..."],
"status": "Success"
}
Token Expiration

Access tokens expire after 4 hours. Refresh tokens last for 14 days.

Project Structure Overview​

aquagenapi/
├── app/
│ ├── __init__.py # Flask app initialization
│ ├── config.py # Configuration with Azure Key Vault
│ ├── apis/ # API blueprints
│ │ ├── user.py # User API (35 namespaces)
│ │ ├── admin.py # Admin API (24 namespaces)
│ │ ├── external.py # External integrations
│ │ └── qa.py # QA API
│ ├── routes/ # Route handlers (61 files)
│ ├── services/ # Business logic
│ ├── formatters/ # Data formatters
│ ├── database/ # Database abstraction layer
│ │ ├── database_config.py # Cosmos DB client and container setup
│ │ ├── database_supporter.py# Query methods (~200 methods)
│ │ └── queires_list.py # Centralized query strings
│ ├── models/ # Data models (35 files)
│ ├── data_class/ # Data classes & DTOs
│ ├── templates/ # HTML report templates (63 files)
│ └── util/ # Utility functions
├── scripts/
│ └── auto_reports.sh # Automated report generation script
├── requirements.txt # Python dependencies
└── app.py # Application entry point

Troubleshooting​

Port Already in Use​

# Find and kill the process using port 5001
lsof -ti:5001 | xargs kill -9

Package Installation Errors​

# Upgrade pip first
pip install --upgrade pip
pip install -r requirements.txt
tip

Always upgrade pip before installing dependencies to avoid resolver issues with older pip versions.

Next Steps​

  1. Architecture Overview - Understand the system design
  2. Report Generation Guide - Learn to generate reports
  3. API Reference - Explore all available endpoints
  4. Device Data Guide - Work with IoT device data
  5. Alert System - Set up notifications and alerts