Skip to main content

No project description provided

Project description

๐Ÿš€ CFS - Common Folder Structure Generator

Python Version License Framework

A powerful, manifest-driven project scaffold generator that creates production-ready applications with consistent, well-organized folder structures.

CFS automatically generates complete project structures for multiple frameworks, handling everything from initial project setup to dependency installation. Say goodbye to repetitive project configuration and hello to instant, production-ready codebases! โœจ


๐Ÿ“‘ Table of Contents


โœจ Features

โœ… Multi-Framework Support - Spring Boot, Flutter, Django (more coming soon!)
โœ… Manifest-Driven - Configure your project structure with simple YAML files
โœ… Production-Ready - Generated projects follow industry best practices
โœ… Automated Setup - From project creation to dependency installation
โœ… Modular Architecture - Clean separation of concerns in all templates
โœ… Customizable - Flexible variable system for personalized projects
โœ… Interactive CLI - User-friendly command-line interface with colored output
โœ… Dry Run Mode - Preview changes before generating files
โœ… Comprehensive Validation - Strict checks for template files and configurations


๐ŸŽฏ Supported Frameworks

Framework Status Backend/Frontend Database API Support
๐Ÿƒ Spring Boot โœ… Available Backend (JVM) PostgreSQL, MySQL, SQLite REST, GraphQL, WebSocket
๐Ÿ“ฑ Flutter โœ… Available Mobile/Web Frontend N/A REST, GraphQL, WebSocket
๐Ÿ Django โœ… Available Backend (Python) PostgreSQL, MySQL, SQLite REST, GraphQL
โš›๏ธ React ๐Ÿ”„ Coming Soon Frontend N/A REST, GraphQL
โšก Next.js ๐Ÿ”„ Coming Soon Full-stack Any REST, GraphQL
๐Ÿ”ฅ FastAPI ๐Ÿ”„ Coming Soon Backend (Python) Any REST, GraphQL

๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.9+ installed
  • Git installed
  • Framework-specific requirements:
    • Spring Boot: Java 11+ and Maven/Gradle
    • Flutter: Flutter SDK 3.0+
    • Django: Python 3.9+

Install from Source

# Clone the repository
git clone https://github.com/yourusername/cfs-generator.git
cd cfs-generator

# Install dependencies
pip install -r requirements.txt

# Install CFS globally
pip install -e .

# Verify installation
cfs --version

Quick Install (Coming Soon)

pip install cfs-generator

๐Ÿš€ Quick Start

Generate Your First Project

# List available templates
cfs list

# Generate a Spring Boot project
cfs init springboot -p my-api -l java -a rest

# Generate a Flutter app
cfs init flutter -p my_mobile_app -a graphql

# Generate a Django backend
cfs init django -p my_backend --package-name myapp -d postgresql --use-graphql

Interactive Mode

Simply run without options to use interactive prompts:

cfs init springboot

The CLI will guide you through:

  • Project name
  • Package name
  • Language selection
  • API protocol
  • Database engine (where applicable)
  • Additional features

๐Ÿ“š Framework Guides


๐Ÿƒ Spring Boot

Create enterprise-grade Java/Kotlin REST, GraphQL, or WebSocket APIs with Spring Boot.

Features

โœ… Java 11-21 or Kotlin support
โœ… REST, GraphQL, WebSocket APIs
โœ… PostgreSQL, MySQL, SQLite database support
โœ… Modular architecture with controllers, services, repositories
โœ… JPA/Hibernate ORM integration
โœ… Exception handling and validation
โœ… Docker configuration included

Usage

# Basic REST API with Java
cfs init springboot \
  --project-name user-service \
  --package-name com.company.users \
  --language java \
  --api-protocol rest

# GraphQL API with Kotlin
cfs init springboot \
  -p product-api \
  --package-name io.shop.products \
  -l kt \
  -a graphql

# WebSocket server
cfs init springboot \
  -p chat-server \
  --package-name com.chat.server \
  -l java \
  -a websocket

Project Structure

my-spring-api/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main/
โ”‚   โ”‚   โ”œโ”€โ”€ java/com/company/myapi/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ controllers/        # REST/GraphQL controllers
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ models/             # JPA entities
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ services/           # Business logic
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ repositories/       # Data access layer
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ dtos/               # Data transfer objects
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ exceptions/         # Custom exceptions
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ MyApiApplication.java
โ”‚   โ”‚   โ””โ”€โ”€ resources/
โ”‚   โ”‚       โ””โ”€โ”€ application.properties
โ”‚   โ””โ”€โ”€ test/
โ”œโ”€โ”€ pom.xml                         # Maven dependencies
โ”œโ”€โ”€ Dockerfile
โ””โ”€โ”€ README.md

What You Get

  • โœ… User CRUD operations (Create, Read, Update, Delete)
  • โœ… Global exception handler
  • โœ… Input validation with DTOs
  • โœ… Database configuration (H2 for dev, production DB)
  • โœ… Mapper pattern for entity โ†” DTO conversion
  • โœ… Service layer with business logic
  • โœ… Repository layer with JPA

Next Steps

cd my-spring-api
./mvnw spring-boot:run

# API available at: http://localhost:8080
# GraphQL playground: http://localhost:8080/graphql

๐Ÿ“ฑ Flutter

Build beautiful, natively compiled mobile, web, and desktop applications with Flutter.

Features

โœ… Modular clean architecture (data/presentation/routes)
โœ… GraphQL, REST, WebSocket API clients
โœ… go_router for declarative navigation
โœ… Provider for state management
โœ… Authentication & Onboarding modules included
โœ… Theming with dark mode support
โœ… Custom widgets library
โœ… Secure storage for sensitive data

Usage

# GraphQL mobile app
cfs init flutter \
  --project-name shopping_app \
  --package-name com.mycompany.shopping \
  --api-protocol graphql

# REST API app
cfs init flutter \
  -p weather_app \
  --package-name io.weather.app \
  -a rest

# WebSocket real-time app
cfs init flutter \
  -p chat_app \
  --package-name com.chat.mobile \
  -a websocket

Project Structure

my_flutter_app/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ core/                       # Core infrastructure
โ”‚   โ”‚   โ”œโ”€โ”€ api_config/            # API client setup
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ graphql/           # GraphQL config
โ”‚   โ”‚   โ”œโ”€โ”€ constants/             # App constants
โ”‚   โ”‚   โ”œโ”€โ”€ routes/                # App routing
โ”‚   โ”‚   โ”œโ”€โ”€ storage/               # Secure storage
โ”‚   โ”‚   โ””โ”€โ”€ theme/                 # Material theme
โ”‚   โ”œโ”€โ”€ modules/                   # Feature modules
โ”‚   โ”‚   โ”œโ”€โ”€ authentication/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ data/             # Models, services, GraphQL
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ presentation/     # Screens, widgets, providers
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ routes/           # Module routing
โ”‚   โ”‚   โ””โ”€โ”€ onboarding/
โ”‚   โ”œโ”€โ”€ shared/                    # Shared utilities
โ”‚   โ”‚   โ””โ”€โ”€ utilities/
โ”‚   โ”‚       โ”œโ”€โ”€ helper_methods/   # Utility functions
โ”‚   โ”‚       โ””โ”€โ”€ widgets/          # Reusable widgets
โ”‚   โ”œโ”€โ”€ app.dart                   # App widget
โ”‚   โ””โ”€โ”€ main.dart                  # Entry point
โ”œโ”€โ”€ pubspec.yaml                   # Dependencies
โ”œโ”€โ”€ .env.example
โ””โ”€โ”€ docs/
    โ””โ”€โ”€ ARCHITECTURE.md

What You Get

๐Ÿ” Authentication Module

  • Login screen
  • Password reset
  • Change password
  • Local & remote data sources
  • JWT token management

๐ŸŽฏ Onboarding Module

  • Splash screen
  • Multi-page onboarding flow
  • Smooth page indicators
  • Skip/Next navigation

๐ŸŽจ UI Components

  • Custom buttons, text fields, dropdowns
  • Loading indicators
  • Date pickers
  • Glass morphism containers
  • Theme controller (light/dark)

๐Ÿ”ง Utilities

  • Avatar color generator
  • Date formatters
  • Device security checker
  • Input validators
  • Custom clippers & animations

Packages Included

  • graphql_flutter - GraphQL client
  • go_router - Declarative routing
  • provider - State management
  • flutter_secure_storage - Secure data storage
  • dio & http - HTTP clients
  • sizer - Responsive sizing
  • hugeicons & heroicons - Icon libraries
  • smooth_page_indicator - Page indicators
  • flutter_animate - Animations
  • And many more...

Next Steps

cd my_flutter_app
flutter pub get
flutter run

# Configure your GraphQL endpoint in .env
# Edit lib/core/api_config/graphql/graphql_url_config.dart

๐Ÿ Django

Create powerful, scalable Python web applications with Django.

Features

โœ… Python 3.9-3.12 support
โœ… PostgreSQL, MySQL, SQLite databases
โœ… GraphQL with Graphene-Django (optional)
โœ… Celery for async tasks (optional)
โœ… Redis caching and message broker
โœ… Modular Django apps architecture
โœ… JWT authentication
โœ… Docker & docker-compose setup
โœ… Comprehensive utilities (caching, rate limiting, validators)

Usage

# Full-featured Django backend
cfs init django \
  --project-name ecommerce_backend \
  --package-name ecommerce \
  --database-engine postgresql \
  --python-version 3.11 \
  --use-graphql \
  --use-celery

# Simple REST API
cfs init django \
  -p blog_api \
  --package-name blog \
  -d sqlite

# Interactive mode
cfs init django

Project Structure

my_django_backend/
โ”œโ”€โ”€ myapp_assets/                  # Static assets & config
โ”‚   โ”œโ”€โ”€ locations/                # CSV location data
โ”‚   โ”œโ”€โ”€ countries.json
โ”‚   โ””โ”€โ”€ permissions.json
โ”œโ”€โ”€ myapp_auth/                    # Authentication app
โ”‚   โ”œโ”€โ”€ models.py                 # User models
โ”‚   โ”œโ”€โ”€ views.py
โ”‚   โ””โ”€โ”€ migrations/
โ”œโ”€โ”€ myapp_audit_logs/              # Audit logging
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ”œโ”€โ”€ schema.py                 # GraphQL schema
โ”‚   โ””โ”€โ”€ admin.py
โ”œโ”€โ”€ myapp_backend/                 # Core Django project
โ”‚   โ”œโ”€โ”€ settings/
โ”‚   โ”‚   โ”œโ”€โ”€ base.py              # Base settings
โ”‚   โ”‚   โ”œโ”€โ”€ development.py       # Dev settings
โ”‚   โ”‚   โ””โ”€โ”€ production.py        # Prod settings
โ”‚   โ”œโ”€โ”€ urls.py                   # URL routing
โ”‚   โ”œโ”€โ”€ schema.py                 # GraphQL root schema
โ”‚   โ”œโ”€โ”€ celery.py                 # Celery config
โ”‚   โ”œโ”€โ”€ wsgi.py
โ”‚   โ””โ”€โ”€ asgi.py
โ”œโ”€โ”€ myapp_cache_core/              # Caching utilities
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ””โ”€โ”€ management/commands/
โ”œโ”€โ”€ myapp_notifications/           # Notification system
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ”œโ”€โ”€ tasks.py                  # Celery tasks
โ”‚   โ”œโ”€โ”€ schema.py
โ”‚   โ””โ”€โ”€ signals.py
โ”œโ”€โ”€ myapp_settings/                # App settings
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ””โ”€โ”€ management/commands/
โ”‚       โ””โ”€โ”€ seed_locations.py    # Data seeding
โ”œโ”€โ”€ myapp_files/                   # File management
โ”œโ”€โ”€ myapp_dto/                     # Data Transfer Objects
โ”‚   โ”œโ”€โ”€ auth_dto.py
โ”‚   โ”œโ”€โ”€ enums.py
โ”‚   โ””โ”€โ”€ shared_dto.py
โ”œโ”€โ”€ myapp_dto_builders/            # DTO builders
โ”‚   โ””โ”€โ”€ response_builder.py
โ”œโ”€โ”€ myapp_mixins/                  # Reusable mixins
โ”‚   โ”œโ”€โ”€ base_crud.py
โ”‚   โ””โ”€โ”€ models.py
โ”œโ”€โ”€ myapp_utils/                   # Utility modules
โ”‚   โ”œโ”€โ”€ cache/
โ”‚   โ”‚   โ”œโ”€โ”€ decorators.py
โ”‚   โ”‚   โ”œโ”€โ”€ manager.py
โ”‚   โ”‚   โ””โ”€โ”€ utils.py
โ”‚   โ”œโ”€โ”€ decorators/
โ”‚   โ”‚   โ”œโ”€โ”€ log_exceptions.py
โ”‚   โ”‚   โ”œโ”€โ”€ permissions.py
โ”‚   โ”‚   โ””โ”€โ”€ scope.py
โ”‚   โ”œโ”€โ”€ rate_limit/
โ”‚   โ”‚   โ”œโ”€โ”€ decorators.py
โ”‚   โ”‚   โ”œโ”€โ”€ middleware.py
โ”‚   โ”‚   โ””โ”€โ”€ token_bucket.py
โ”‚   โ”œโ”€โ”€ validators/
โ”‚   โ”‚   โ”œโ”€โ”€ input_validator.py
โ”‚   โ”‚   โ””โ”€โ”€ password_validator.py
โ”‚   โ”œโ”€โ”€ authentication.py
โ”‚   โ”œโ”€โ”€ notification_utils.py
โ”‚   โ””โ”€โ”€ user_utils.py
โ”œโ”€โ”€ myapp_htmls/                   # Email templates
โ”‚   โ”œโ”€โ”€ account_activation.html
โ”‚   โ””โ”€โ”€ password-reset.html
โ”œโ”€โ”€ logs/                          # Application logs
โ”œโ”€โ”€ docs/                          # Documentation
โ”‚   โ”œโ”€โ”€ API.md
โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md
โ”‚   โ””โ”€โ”€ DEPLOYMENT.md
โ”œโ”€โ”€ manage.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ requirements-dev.txt
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ .env.example
โ””โ”€โ”€ README.md

What You Get

๐Ÿ” Authentication App

  • Custom user model
  • JWT authentication
  • Permission system
  • User management

๐Ÿ“Š Audit Logs

  • Track all user actions
  • GraphQL queries for logs
  • Admin interface

๐Ÿ”” Notifications

  • Email notifications
  • In-app notifications
  • Celery async tasks
  • Notification templates

โš™๏ธ Settings App

  • Application settings
  • Location data (Countries, Regions, Districts, Wards, Streets)
  • Data seeding commands

๐Ÿ“ File Management

  • File upload/download
  • Image processing
  • File validation

๐Ÿ› ๏ธ Utilities

  • Caching: Redis-backed caching decorators
  • Rate Limiting: Token bucket algorithm
  • Decorators: Permissions, logging, scopes
  • Validators: Input validation, password strength
  • Authentication: JWT helpers, token management

Packages Installed

Core

  • django - Web framework
  • djangorestframework - REST API
  • django-cors-headers - CORS support
  • python-decouple - Environment variables

Database

  • psycopg2-binary - PostgreSQL adapter
  • mysqlclient - MySQL adapter (if selected)

GraphQL (optional)

  • graphene-django - GraphQL server
  • django-graphql-jwt - JWT authentication
  • graphene-file-upload - File uploads

Celery (optional)

  • celery - Task queue
  • redis - Message broker
  • django-celery-beat - Periodic tasks
  • django-celery-results - Task results

Utilities

  • requests - HTTP client
  • PyJWT - JWT tokens
  • gunicorn - WSGI server
  • whitenoise - Static files
  • django-redis - Redis cache

Development

  • black - Code formatter
  • flake8 - Linter
  • pytest - Testing
  • pytest-django - Django testing
  • faker - Test data

Next Steps

cd my_django_backend
source venv/bin/activate

# Configure database in .env
cp .env.example .env
nano .env

# Run migrations
python manage.py migrate

# Create superuser
python manage.py createsuperuser

# Seed location data
python manage.py seed_locations

# Start development server
python manage.py runserver

# API available at: http://localhost:8000
# GraphQL endpoint: http://localhost:8000/graphql
# Admin panel: http://localhost:8000/admin

Running with Docker

# Build and run
docker-compose up --build

# Run migrations
docker-compose exec web python manage.py migrate

# Create superuser
docker-compose exec web python manage.py createsuperuser

๐ŸŽฎ CLI Reference

Global Options

cfs [COMMAND] [OPTIONS]

Commands

Command Description
init Initialize a new project
list List all available templates
--version Show version information
--help Show help message

Init Options

Option Short Description Applicable To
--project-name -p Project name All
--package-name Package/namespace Spring Boot, Django
--language -l Programming language Spring Boot
--api-protocol -a API type (rest/graphql/websocket) Spring Boot, Flutter
--database-engine -d Database (postgresql/mysql/sqlite) Django
--python-version Python version (3.9-3.12) Django
--use-graphql Include GraphQL support Django
--use-celery Include Celery Django
--output-dir -o Output directory All
--force -f Overwrite existing files All
--dry-run Preview without creating All
--debug Show debug information All

Examples

# List available templates
cfs list

# Dry run to preview
cfs init springboot -p test-api --dry-run

# Force overwrite existing project
cfs init flutter -p my_app --force

# Debug mode for troubleshooting
cfs init django -p backend --debug

# Custom output directory
cfs init springboot -p api -o ~/projects

# Interactive mode
cfs init flutter

๐Ÿ—๏ธ Project Structure

cfs-generator/
โ”œโ”€โ”€ cfs/
โ”‚   โ”œโ”€โ”€ modules/
โ”‚   โ”‚   โ””โ”€โ”€ templates/
โ”‚   โ”‚       โ”œโ”€โ”€ springboot/
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ spring_generator.py
โ”‚   โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ spring_manifest_loader.py
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ scripts/
โ”‚   โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ pre_gen.sh
โ”‚   โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ post_gen.sh
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ src_templates/
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ manifest.yml
โ”‚   โ”‚       โ”œโ”€โ”€ flutter/
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ flutter_generator.py
โ”‚   โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ flutter_manifest_loader.py
โ”‚   โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ exceptions/
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ scripts/
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ src_templates/
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ manifest.yaml
โ”‚   โ”‚       โ””โ”€โ”€ django/
โ”‚   โ”‚           โ”œโ”€โ”€ core/
โ”‚   โ”‚           โ”‚   โ”œโ”€โ”€ django_generator.py
โ”‚   โ”‚           โ”‚   โ”œโ”€โ”€ django_manifest_loader.py
โ”‚   โ”‚           โ”‚   โ””โ”€โ”€ exceptions/
โ”‚   โ”‚           โ”œโ”€โ”€ scripts/
โ”‚   โ”‚           โ”œโ”€โ”€ src_templates/
โ”‚   โ”‚           โ””โ”€โ”€ manifest.yml
โ”‚   โ””โ”€โ”€ cli.py
โ”œโ”€โ”€ docs/
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ setup.py
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ LICENSE

๐Ÿค Contributing

We welcome contributions! Here's how you can help:

Adding a New Framework

  1. Create a new directory under cfs/modules/templates/{framework_name}

  2. Implement the required files:

    • manifest.yml - Template configuration
    • core/{framework}_generator.py - Generator class
    • core/{framework}_manifest_loader.py - Validation class
    • core/exceptions/ - Custom exceptions
    • scripts/pre_gen.sh - Pre-generation setup
    • scripts/post_gen.sh - Post-generation setup
    • src_templates/ - Jinja2 template files
  3. Update cli.py to include your framework in get_framework_modules()

  4. Test thoroughly:

    cfs init {framework} -p test_project --dry-run
    cfs init {framework} -p test_project
    
  5. Submit a pull request!

Reporting Issues

Found a bug? Have a suggestion? Please open an issue on GitHub with:

  • Framework name
  • Command used
  • Expected vs actual behavior
  • Error messages (if any)
  • System information (OS, Python version, framework version)

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Inspired by Yeoman, Vue CLI, and Create React App
  • Built with love using Python and Click
  • Special thanks to all contributors

๐Ÿ“ฌ Contact


Made with โค๏ธ by developers, for developers

โญ Star us on GitHub โ€” it motivates us a lot!

Project details


Download files

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

Source Distribution

cfs_cli-0.2.2.tar.gz (448.7 kB view details)

Uploaded Source

Built Distribution

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

cfs_cli-0.2.2-py3-none-any.whl (549.1 kB view details)

Uploaded Python 3

File details

Details for the file cfs_cli-0.2.2.tar.gz.

File metadata

  • Download URL: cfs_cli-0.2.2.tar.gz
  • Upload date:
  • Size: 448.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for cfs_cli-0.2.2.tar.gz
Algorithm Hash digest
SHA256 3dd9f0d05270068bfcf5b97ab3178f8e554748477511709ced734b9338d8fb0c
MD5 9ff59bd36139804f8aa05c48e9708091
BLAKE2b-256 bad659d532d80004ff65c9aa93e3dea2be488c24857d5cfd3915d89d5449f327

See more details on using hashes here.

File details

Details for the file cfs_cli-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: cfs_cli-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 549.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for cfs_cli-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1c6a915a496206de568f30bd76064c9f100996bf45cca64425fa05ef1a7c69a1
MD5 a7689818ae1a90959d0bd2e9427ce34e
BLAKE2b-256 f17932ba0acf3bf851a2f1eb7ea1f73fdddc4823be12bce7620344477cd6e35f

See more details on using hashes here.

Supported by

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