joCur Culinara .cursorrules file for Dart

{
    "project": {
        "name": "Culinara",
        "type": "Flutter Mobile Application",
        "description": "A culinary app for recipe discovery and sharing",
        "purpose": "Enable users to discover, create, and share culinary recipes with a focus on ingredient combinations and cooking techniques",
        "target_platforms": ["iOS", "Android"]
    },
    "project_structure": {
        "root_directories": {
            "lib/": "Main source code directory",
            "lib/features/": "Feature-based modules (each feature in its own directory)",
            "lib/core/": "Shared core functionality, utilities, and base classes",
            "lib/router/": "Application routing configuration",
            "lib/constants/": "Global constants and configuration",
            "lib/generated/": "Generated code (localizations, freezed models)",
            "assets/": "Static assets (translations, animations, images)",
            "test/": "Test files following the same structure as lib/"
        },
        "feature_module_structure": {
            "data/": "Data layer (repositories, data sources)",
            "domain/": "Business logic and models",
            "presentation/": "UI components and screens",
            "application/": "State management (providers, controllers)"
        }
    },
    "code_organization": {
        "feature_structure": {
            "pattern": "Vertical slice architecture",
            "guidelines": [
                "Each feature should be self-contained",
                "Shared code goes into core/",
                "Feature-specific models stay within the feature",
                "Follow Clean Architecture principles within features"
            ]
        },
        "file_naming": {
            "pattern": "snake_case",
            "examples": {
                "screens": "home_screen.dart",
                "widgets": "recipe_card.dart",
                "models": "recipe_model.dart",
                "providers": "auth_provider.dart"
            }
        },
        "folder_structure": {
            "widgets": "Place reusable widgets in a widgets/ subdirectory",
            "models": "Place models in a models/ subdirectory",
            "providers": "Place providers in a providers/ subdirectory"
        }
    },
    "technology_stack": {
        "framework": "Flutter",
        "sdk_version": "^3.5.4",
        "state_management": "Riverpod",
        "backend": "Firebase",
        "localization": "easy_localization"
    },
    "code_style": {
        "linting": {
            "base": "package:flutter_lints/flutter.yaml",
            "custom_rules": []
        },
        "formatting": {
            "indentation": "2 spaces",
            "max_line_length": "80",
            "prefer_single_quotes": true
        },
        "naming_conventions": {
            "classes": "PascalCase",
            "variables": "camelCase",
            "constants": "SCREAMING_SNAKE_CASE",
            "private_members": "_camelCase"
        }
    },
    "architecture": {
        "state_management": {
            "pattern": "Riverpod with code generation",
            "annotations": ["@riverpod", "@riverpod_annotation"]
        },
        "routing": "go_router",
        "models": {
            "generation": ["freezed", "json_serializable"],
            "immutability": true
        }
    },
    "dependencies": {
        "core": [
            "firebase_core",
            "firebase_auth",
            "cloud_firestore",
            "cloud_functions"
        ],
        "ui": [
            "flex_color_scheme",
            "lottie",
            "shimmer"
        ],
        "dev_tools": [
            "build_runner",
            "riverpod_generator",
            "custom_lint",
            "riverpod_lint"
        ]
    },
    "best_practices": {
        "state_management": [
            "Use Riverpod for all state management",
            "Implement proper dependency injection",
            "Use code generation for providers"
        ],
        "architecture": [
            "Follow feature-first architecture",
            "Keep widgets small and focused",
            "Separate business logic from UI"
        ],
        "testing": [
            "Write unit tests for business logic",
            "Use widget tests for complex UI components"
        ],
        "localization": [
            "Use easy_localization for all text",
            "Keep translations in assets/translations/"
        ],
        "firebase": [
            "Follow security rules in firestore.rules",
            "Implement proper error handling for all Firebase operations"
        ],
        "code_quality": [
            "Document complex business logic",
            "Use meaningful variable and function names",
            "Keep functions small and focused",
            "Follow SOLID principles"
        ]
    },
    "assets": {
        "paths": [
            "assets/translations/",
            "assets/animations/"
        ]
    },
    "git_practices": {
        "branch_naming": {
            "feature": "feature/",
            "bugfix": "bugfix/",
            "hotfix": "hotfix/",
            "release": "release/"
        },
        "commit_messages": {
            "format": "<type>(<scope>): <description>",
            "types": ["feat", "fix", "docs", "style", "refactor", "test", "chore"]
        }
    }
}
dart
firebase
golang
javascript
kotlin
objective-c
rest-api
solidjs
+2 more

First Time Repository

Unlock your culinary creativity with Culinara! Discover unique ingredient combinations, explore innovative recipes, and share your delicious creations with a vibrant community. Whether you're a home cook seeking fresh inspiration or looking to experiment with new flavors, Culinara makes every meal an exciting adventure.

Dart

Languages:

Dart: 247.3KB
JavaScript: 0.8KB
Kotlin: 0.1KB
Objective-C: 0.0KB
Swift: 0.7KB
TypeScript: 3.9KB
Created: 12/3/2024
Updated: 12/16/2024

All Repositories (1)

Unlock your culinary creativity with Culinara! Discover unique ingredient combinations, explore innovative recipes, and share your delicious creations with a vibrant community. Whether you're a home cook seeking fresh inspiration or looking to experiment with new flavors, Culinara makes every meal an exciting adventure.