Skip to main content

๐Ÿ“Š JJF Survey Analytics Platform

A comprehensive survey data management and analytics platform that reads data directly from Google Sheets into memory and provides powerful analytics dashboards with real-time data processing capabilities.

๐ŸŽฏ Project Intent

This platform is designed to:

  • Load survey data directly from multiple Google Sheets sources
  • Process data in-memory for fast access and analysis
  • Analyze survey responses with statistical insights and visualizations
  • Monitor response activity and respondent patterns
  • Refresh automatically when the application restarts
  • Provide a beautiful, responsive web interface for data exploration

โœจ Key Features

  • ๐Ÿ“Š Survey Analytics Dashboard - Comprehensive statistics and visualizations
  • โšก In-Memory Processing - Fast data access with no database overhead
  • ๐Ÿ“ˆ Response Activity Monitoring - Track who responded and when
  • ๐Ÿฅ Health Check System - Monitor API connectivity and system health
  • ๐Ÿ” Authentication - Secure access with password protection
  • ๐Ÿ“ฑ Responsive Design - Beautiful Tailwind CSS interface for all devices
  • ๐Ÿš€ Production Ready - Deployable to Railway as lightweight application
  • ๐Ÿ”’ Single Source of Truth - Google Sheets as authoritative data source, in-memory processing

๐Ÿš€ Performance Features

  • TTL-Based Report Caching (v1.2.6)
    • Configurable cache TTL via REPORT_CACHE_TTL environment variable
    • Default: 300 seconds (5 minutes)
    • 2,400x performance improvement: 120 seconds โ†’ 50ms (cached)
    • Automatic cache invalidation on data changes or TTL expiration

๐Ÿ” Data Integrity

  • Calculation Checksums (v1.2.3)
    • SHA-256 checksums for all dimension calculations
    • Verifies calculation consistency across API responses
    • Enables audit trail and debugging

๐Ÿ“Š JSON API Endpoints (v1.2.4)

  • GET /api/reports/organizations - List all organizations with metadata
  • GET /api/reports/organization/<name>/json - Full report with checksums
  • GET /api/reports/organization/<name>/verification - Verification data only
  • GET /api/docs - Interactive API documentation with examples
  • CORS enabled for cross-origin requests

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)
  • Internet connection (for Google Sheets access)

1. Install Dependencies

pip install -r requirements.txt

2. Start the Web Application

python app.py

5. Open in Browser

Navigate to: http://localhost:8080

Authentication:

  • Local Development: No password required (disabled by default)
  • Production: Set REQUIRE_AUTH=true and APP_PASSWORD=your-password

๐Ÿ“ Project Structure

jjf-survey-analytics/
โ”œโ”€โ”€ app.py                          # Main Flask web application
โ”œโ”€โ”€ railway_app.py                  # Railway-specific deployment app
โ”œโ”€โ”€ survey_analytics.py             # Survey analytics engine
โ”œโ”€โ”€ survey_normalizer.py            # Data normalization service
โ”œโ”€โ”€ auto_sync_service.py            # Background auto-sync service
โ”œโ”€โ”€ improved_extractor.py           # Google Sheets data extractor
โ”œโ”€โ”€ healthcheck.py                  # Health check entry point
โ”‚
โ”œโ”€โ”€ healthcheck/                    # Health check system
โ”‚   โ”œโ”€โ”€ api_validators.py          # API key validation
โ”‚   โ”œโ”€โ”€ dependency_checker.py      # External dependency checks
โ”‚   โ”œโ”€โ”€ e2e_tests.py               # End-to-end tests
โ”‚   โ”œโ”€โ”€ monitoring.py              # Continuous monitoring
โ”‚   โ””โ”€โ”€ config_validator.py        # Configuration validation
โ”‚
โ”œโ”€โ”€ templates/                      # HTML templates
โ”‚   โ”œโ”€โ”€ base.html                  # Base template with navigation
โ”‚   โ”œโ”€โ”€ dashboard.html             # Main dashboard
โ”‚   โ”œโ”€โ”€ survey_analytics.html      # Survey analytics dashboard
โ”‚   โ”œโ”€โ”€ survey_dashboard.html      # Survey overview
โ”‚   โ”œโ”€โ”€ survey_responses.html      # Response activity monitor
โ”‚   โ”œโ”€โ”€ sync_dashboard.html        # Auto-sync management
โ”‚   โ”œโ”€โ”€ health_dashboard.html      # Health check dashboard
โ”‚   โ”œโ”€โ”€ spreadsheets.html          # Spreadsheets listing
โ”‚   โ”œโ”€โ”€ spreadsheet_detail.html    # Individual spreadsheet view
โ”‚   โ”œโ”€โ”€ jobs.html                  # Extraction jobs history
โ”‚   โ”œโ”€โ”€ login.html                 # Authentication page
โ”‚   โ””โ”€โ”€ error.html                 # Error page
โ”‚
โ”œโ”€โ”€ hybrid_surveyor/                # Advanced CLI tool (optional)
โ”‚   โ”œโ”€โ”€ src/                       # Source code
โ”‚   โ”œโ”€โ”€ tests/                     # Test suite
โ”‚   โ””โ”€โ”€ docs/                      # Additional documentation
โ”‚
โ”œโ”€โ”€ docs/                           # Project documentation
โ”‚   โ”œโ”€โ”€ PROGRESS.md                # Development progress
โ”‚   โ””โ”€โ”€ work-logs/                 # Work session logs
โ”‚
โ”œโ”€โ”€ tests/                          # Test suite
โ”‚   โ”œโ”€โ”€ unit/                      # Unit tests
โ”‚   โ””โ”€โ”€ integration/               # Integration tests
โ”‚
โ”œโ”€โ”€ surveyor_data_improved.db       # Raw spreadsheet data (SQLite)
โ”œโ”€โ”€ survey_normalized.db            # Normalized survey data (SQLite)
โ”œโ”€โ”€ requirements.txt                # Python dependencies
โ”œโ”€โ”€ pyproject.toml                  # Project configuration
โ”œโ”€โ”€ Makefile                        # Development commands
โ”œโ”€โ”€ Procfile                        # Railway deployment config
โ”œโ”€โ”€ railway.toml                    # Railway configuration
โ””โ”€โ”€ README.md                       # This file

๐ŸŽฏ Core Features

๐Ÿ“Š Survey Analytics Dashboard (/surveys)

  • Overview Statistics - Total surveys, responses, respondents, response rates
  • Survey Breakdown - Performance by survey type and name
  • Completion Statistics - Visual completion rates with progress bars
  • Respondent Analysis - Browser, device, and response frequency patterns
  • Beautiful Visualizations - Color-coded charts and progress indicators

๐Ÿ“ˆ Detailed Analytics (/surveys/analytics)

  • Question-Level Analysis - Response rates and answer distributions
  • Statistical Insights - Numeric averages, boolean counts, unique answers
  • Time Series Charts - Response trends over time
  • Survey Filtering - Focus on specific surveys
  • Export Capabilities - CSV download and API access

โฐ Response Activity Monitor (/surveys/responses)

  • Timeline View - When and who responded with detailed logs
  • Technology Analysis - Browser and device usage patterns
  • Response Patterns - Frequency analysis and daily activity
  • Real-time Updates - Auto-refresh for live monitoring
  • Responsive Design - Works on all devices

๐Ÿ”„ Auto-Sync Management (/sync)

  • Intelligent Change Detection - Automatically finds new/updated data
  • Service Management - Start/stop/configure sync service
  • Real-time Monitoring - Live status and performance metrics
  • Manual Triggers - Force immediate sync when needed
  • Activity Logging - Detailed sync history and troubleshooting

๐Ÿฅ Health Check System (/health/dashboard)

  • API Key Validation - Verify Google Sheets API access
  • Dependency Monitoring - Check external service availability
  • End-to-End Tests - Validate complete data flow
  • Configuration Validation - Ensure proper setup
  • Continuous Monitoring - Background health checks

๐Ÿ“‹ Spreadsheets Management (/spreadsheets)

  • Grid View - All imported spreadsheets
  • Search and Filter - By title and type
  • Type Categorization - Color-coded badges (Survey, Assessment, Inventory)
  • Row Count - Last sync information
  • Direct Links - To Google Sheets sources

โš™๏ธ Job Monitoring (/jobs)

  • Extraction Job History - Detailed progress tracking
  • Success/Failure Rates - Error reporting
  • Real-time Status Updates - For running jobs
  • Job Duration - Performance metrics

๐ŸŽจ User Interface

Design System

  • Tailwind CSS for modern, responsive design
  • Font Awesome icons for visual clarity
  • Color-coded categories:
    • ๐Ÿ”ต Survey - Blue theme
    • ๐ŸŸข Assessment - Green theme
    • ๐ŸŸฃ Inventory - Purple theme
  • Mobile-first responsive design

Interactive Features

  • Hover effects and smooth transitions
  • Copy-to-clipboard functionality
  • Modal dialogs for detailed views
  • Auto-refresh for live data updates

๐Ÿ—„๏ธ Database Architecture

Raw Data Database (surveyor_data_improved.db)

  1. spreadsheets - Metadata about each Google Sheet
  2. raw_data - Actual spreadsheet data stored as JSON
  3. extraction_jobs - Job tracking and history

Normalized Survey Database (survey_normalized.db)

  1. surveys - Survey metadata and configuration
  2. survey_questions - Normalized question definitions
  3. survey_responses - Individual response records
  4. survey_answers - Detailed answer data with type parsing
  5. respondents - Unique respondent tracking
  6. sync_tracking - Auto-sync history and status
  7. normalization_jobs - Process tracking and auditing

Key Features

  • Relational Structure - Proper foreign key relationships
  • Type Safety - Automatic type detection and parsing
  • JSON Storage - Flexible data structure for raw data
  • SHA256 Hashing - Deduplication and change detection
  • Optimized Indexes - Fast queries on all search fields
  • Data Integrity - Foreign key constraints throughout

๐Ÿ—๏ธ Architecture

MVC Pattern (v1.2.2+)

The application follows a Model-View-Controller architecture for clean separation of concerns:

  • Model (src/analytics/report_generator.py): All calculation logic and dimension scoring
  • View (templates/): Pure presentation layer with no business logic
  • Controller (app.py): Request handling, caching, and routing

Calculation Checksums (v1.2.3)

All dimension calculations include SHA-256 checksums for verification:

  • Ensures calculation consistency across requests
  • Enables result verification via API endpoints
  • Provides audit trail for debugging and compliance
  • Validates formula: adjusted_score = max(0, min(5, base_score + total_modifier))

Caching Strategy (v1.2.6)

Multi-criteria cache validation ensures optimal performance while maintaining data freshness:

  1. Cache exists for organization
  2. Response count matches current data
  3. Cache age within TTL (configurable, default 5 minutes)

Cache invalidation triggers:

  • New survey responses added
  • Admin edits applied to reports
  • TTL expiration (configurable via REPORT_CACHE_TTL)

Performance impact:

  • First request: ~120 seconds (with AI analysis)
  • Cached requests: ~50ms (2,400x improvement)
  • Cost reduction: Minimizes API calls for repeated report views

๐Ÿ“ˆ Supported Google Sheets

The system currently supports 6 JJF Technology Assessment spreadsheets:

Type Count Description
Survey 2 Survey questions and response collection
Assessment 3 Technology maturity assessments (CEO, Staff, Tech Lead)
Inventory 1 Software systems inventory

๐Ÿ› ๏ธ Development Setup

Requirements

  • Python 3.8+ (Python 3.13 recommended)
  • pip - Python package manager
  • SQLite3 - Database (built into Python)
  • Internet connection - For Google Sheets access

Installation

Option 1: Quick Install

# Install all dependencies
pip install -r requirements.txt

Option 2: Development Setup with Virtual Environment

# Create virtual environment
python -m venv venv

# Activate virtual environment
source venv/bin/activate  # On Linux/Mac
# OR
venv\Scripts\activate     # On Windows

# Install dependencies
pip install -r requirements.txt

Option 3: Using Make

# Set up development environment
make setup

# Activate virtual environment
source venv/bin/activate

# Install dependencies
make install

Initial Data Setup

# 1. Extract data from Google Sheets
python improved_extractor.py

# 2. Normalize survey data
python survey_normalizer.py --auto

# 3. (Optional) Initialize health checks
python healthcheck.py

Running the Application

# Start the web server
python app.py

# Access at http://localhost:8080
# No password required for local development

Environment Variables

Create a .env file in the project root:

# Application Configuration
PORT=8080
SECRET_KEY=your-secret-key-here

# Authentication (disabled by default for local development)
REQUIRE_AUTH=false  # Set to 'true' for production
APP_PASSWORD=survey2025!  # Only used when REQUIRE_AUTH=true

# Cache Configuration (v1.2.6+)
REPORT_CACHE_TTL=300  # Cache TTL in seconds (default: 300 = 5 minutes)

# Database (for Railway deployment)
DATABASE_URL=postgresql://...  # Optional, uses SQLite if not set

# Logging
LOG_LEVEL=INFO

# Auto-Sync Configuration
AUTO_SYNC_INTERVAL=300  # seconds

Environment Variable Reference:

Variable Description Default Required
PORT Web server port 8080 No
SECRET_KEY Flask session secret Auto-generated No
REQUIRE_AUTH Enable password protection false No
APP_PASSWORD Login password survey2025! No
REPORT_CACHE_TTL Report cache TTL (seconds) 300 No
DATABASE_URL PostgreSQL URL (Railway) SQLite fallback No
LOG_LEVEL Logging level INFO No
AUTO_SYNC_INTERVAL Auto-sync interval (seconds) 300 No

Version Management

The project includes a comprehensive Make-based version management system:

# Display current version information
make version

# Bump patch version (1.0.0 โ†’ 1.0.1) - bug fixes
make version-patch

# Bump minor version (1.0.0 โ†’ 1.1.0) - new features
make version-minor

# Bump major version (1.0.0 โ†’ 2.0.0) - breaking changes
make version-major

# Update build metadata only (no version bump)
make version-build

Features:

  • Semantic versioning (major.minor.patch)
  • Automatic git metadata extraction (commit hash, branch name)
  • Build date and build number tracking
  • Version displayed at application startup

Workflow:

  1. Make changes to the codebase
  2. Run make version-patch (or minor/major as appropriate)
  3. Review changes: git diff version.py
  4. Commit: git add version.py && git commit -m "chore: bump version"
  5. Push: git push origin main

๐Ÿ“Š API Endpoints

Web Routes

  • GET / - Main dashboard
  • GET /login - Authentication page
  • GET /logout - Logout
  • GET /spreadsheets - Spreadsheets listing
  • GET /spreadsheet/<id> - Individual spreadsheet view
  • GET /jobs - Extraction jobs history
  • GET /surveys - Survey analytics dashboard
  • GET /surveys/analytics - Detailed question analysis
  • GET /surveys/responses - Response activity monitor
  • GET /sync - Auto-sync management dashboard
  • GET /health/dashboard - Health check dashboard
  • GET /health/test - Run health checks

API Routes

Core API

  • GET /api/stats - Dashboard statistics (JSON)
  • GET /api/spreadsheet/<id>/data - Spreadsheet data (JSON)
  • GET /api/sync/status - Auto-sync service status
  • POST /api/sync/start - Start auto-sync service
  • POST /api/sync/stop - Stop auto-sync service
  • POST /api/sync/force - Force immediate sync
  • GET /api/survey/search - Search survey responses
  • GET /api/survey/<id>/export - Export survey data (CSV)
  • GET /health/status - Health check status (JSON)
  • POST /health/check - Run specific health checks

JSON Report API (v1.2.4+)

  • GET /api/reports/organizations - List all organizations with metadata
  • GET /api/reports/organization/<name>/json - Full organization report with checksums
  • GET /api/reports/organization/<name>/verification - Verification data only (lightweight)
  • GET /api/docs - Interactive API documentation with usage examples
  • Features: CORS enabled, calculation checksums included, cache metadata exposed

๐Ÿ” Troubleshooting

Common Issues

  1. Database not found

    # Run the extractor first
    python improved_extractor.py
    
    # Then normalize the data
    python survey_normalizer.py --auto
    
  2. Port already in use

    # Change port via environment variable
    export PORT=8080
    
    # Or kill existing process
    lsof -ti:5001 | xargs kill -9  # Mac/Linux
    
  3. Google Sheets access denied

    • Check if sheets are publicly accessible
    • Verify URLs are correct in the extractor
    • Check internet connection
    • Review API key configuration
  4. Authentication issues

    # Disable authentication for testing
    export REQUIRE_AUTH=false
    
    # Or set custom password
    export APP_PASSWORD=your-password
    
  5. Auto-sync not working

    • Check sync dashboard at /sync
    • Verify sync service is started
    • Review logs for errors
    • Ensure source data has changed
  6. Health checks failing

    # Run health checks manually
    python healthcheck.py
    
    # Check specific components
    python healthcheck.py --api-only
    python healthcheck.py --deps-only
    

Debug Mode

The web application runs in debug mode by default in development:

  • Auto-reload on code changes
  • Detailed error messages in browser
  • Interactive debugger for exceptions
  • Verbose logging to console

To disable debug mode (production):

export RAILWAY_ENVIRONMENT=production

๐Ÿ“ Data Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Google Sheets      โ”‚
โ”‚  (Source Data)      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  improved_extractor โ”‚
โ”‚  (Data Extraction)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  surveyor_data_     โ”‚
โ”‚  improved.db        โ”‚
โ”‚  (Raw Data)         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  survey_normalizer  โ”‚
โ”‚  (Normalization)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  survey_normalized  โ”‚
โ”‚  .db (Relational)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Flask Application  โ”‚
โ”‚  (Web Interface)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚
           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  User Browser       โ”‚
โ”‚  (Dashboards)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Deployment

Local Development

# Start the application
python app.py

# Access at http://localhost:8080
# No password required

Railway Deployment

  1. Connect Repository

    • Link your GitHub repository to Railway
    • Railway will auto-detect the Python project
  2. Configure Environment Variables

    APP_PASSWORD=your-secure-password
    SECRET_KEY=your-secret-key
    REQUIRE_AUTH=true
    
  3. Deploy

    • Railway will automatically build and deploy
    • Health checks at /health/status
    • PostgreSQL database automatically provisioned
  4. Access

    • Your app will be available at https://your-app.railway.app

See RAILWAY_DEPLOYMENT.md for detailed deployment instructions.

๐Ÿ“š Additional Documentation

๐Ÿงช Testing

# Run all tests
make test

# Run with coverage
make test-cov

# Run specific test suite
python -m pytest tests/unit -v
python -m pytest tests/integration -v

# Run health checks
python healthcheck.py

๐ŸŽฏ Use Cases

Survey Analysis

  • Analyze response patterns across multiple surveys
  • Track completion rates and respondent engagement
  • Identify trends in survey responses over time
  • Export data for external analysis

Data Management

  • Centralized view of all survey data
  • Automatic synchronization with Google Sheets
  • Historical tracking of data changes
  • Audit trail for all operations

Monitoring

  • Real-time health checks of system components
  • API key validation and dependency monitoring
  • Response activity tracking
  • System performance metrics

๐Ÿ† Current Status

Production Ready Features

  • โœ… 22 survey responses processed across 5 surveys
  • โœ… 240 questions normalized with proper typing
  • โœ… 585 answers analyzed with statistical insights
  • โœ… 13 unique respondents tracked
  • โœ… Auto-sync service with intelligent change detection
  • โœ… Health check system with comprehensive monitoring
  • โœ… Authentication with password protection
  • โœ… Railway deployment ready with PostgreSQL support
  • โœ… Responsive design for all devices
  • โœ… REST API for programmatic access

Supported Survey Types

Type Count Description
Survey 2 Survey questions and response collection
Assessment 3 Technology maturity assessments (CEO, Staff, Tech Lead)
Inventory 1 Software systems inventory

๐ŸŒ Access Points

Local Development:

  • Main Application: http://localhost:8080
  • Survey Analytics: http://localhost:8080/surveys
  • Auto-Sync Dashboard: http://localhost:8080/sync
  • Health Dashboard: http://localhost:8080/health/dashboard

Authentication:

  • Local: No password required (disabled by default)
  • Production: Set REQUIRE_AUTH=true and configure APP_PASSWORD

๐Ÿ“ž Support

For issues, questions, or contributions:

  1. Check the troubleshooting section
  2. Review the additional documentation
  3. Run health checks: python healthcheck.py
  4. Check application logs for detailed error messages

Built with โค๏ธ using Flask, SQLite, and Tailwind CSS

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jjf_survey_analytics-1.5.3.tar.gz (268.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jjf_survey_analytics-1.5.3-py3-none-any.whl (252.7 kB view details)

Uploaded Python 3

File details

Details for the file jjf_survey_analytics-1.5.3.tar.gz.

File metadata

  • Download URL: jjf_survey_analytics-1.5.3.tar.gz
  • Upload date:
  • Size: 268.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for jjf_survey_analytics-1.5.3.tar.gz
Algorithm Hash digest
SHA256 670ab16c5e89de0dd61ba9e179fd8d38f3f44559361ee511354096ccb584733d
MD5 493893f06964955601add414ece94bb5
BLAKE2b-256 965262230a9cd6000871cf16656ab77026090995c04bcf7dd83da1feb61aa862

See more details on using hashes here.

File details

Details for the file jjf_survey_analytics-1.5.3-py3-none-any.whl.

File metadata

File hashes

Hashes for jjf_survey_analytics-1.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eea8a530341cc8de45d8498c846d8baf9b61142522723581e4ba75e381ce831c
MD5 77c8de8423086ca8bfffb102fc074cc3
BLAKE2b-256 9477620fedd0e50e668be8df0e3556c812cafd447f9b19eee943506dc5bbe79c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.5.3 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page