Skip to content

Latest commit

 

History

History
302 lines (163 loc) · 3.84 KB

File metadata and controls

302 lines (163 loc) · 3.84 KB

ASTRO.md

STACK

REQUIRED

  • Astro 6.x
  • JavaScript

OPTIONAL

  • TailwindCSS 4.x
  • React 19.x
  • MDX

USE_DECLARED_STACK_ONLY

DO_NOT_INTRODUCE_NEW_LIBRARIES_UNLESS_EXPLICITLY_REQUESTED


VERSION_POLICY

PACKAGE_JSON_IS_SOURCE_OF_TRUTH

FRAMEWORK_MD_IS_FALLBACK

USE_DECLARED_VERSIONS_ONLY

DO_NOT_ASSUME_LIBRARY_VERSIONS

DO_NOT_ASSUME_ASTRO_VERSION

DO_NOT_GENERATE_CODE_FOR_OTHER_VERSIONS

WHEN_VERSION_CONFLICT_EXISTS

FOLLOW_PACKAGE_JSON


PROJECT_STRUCTURE

src/
├── components/
├── layouts/
├── pages/
├── content/
├── images/
├── data/
├── utils/
└── styles/

public/

astro.config.mjs
content.config.ts

THIS_STRUCTURE_IS_AUTHORITATIVE

DO_NOT_CREATE_NEW_TOP_LEVEL_DIRECTORIES

PREFER_EXISTING_DIRECTORIES_OVER_NEW_ONES

FOLLOW_EXISTING_STRUCTURE_BEFORE_CREATING_NEW_STRUCTURE


FILE_PLACEMENT

pages -> src/pages

layouts -> src/layouts

components -> src/components

content -> src/content

images -> src/images

data -> src/data

utilities -> src/utils

styles -> src/styles

static_assets -> public

content_configuration -> content.config.ts

astro_configuration -> astro.config.mjs

DO_NOT_CREATE_COMPONENTS_OUTSIDE_DEFINED_LOCATIONS


ROUTING_RULES

USE_FILE_BASED_ROUTING

ROUTES_BELONG_IN_SRC_PAGES

DO_NOT_CREATE_CUSTOM_ROUTING_SYSTEM

FOLLOW_ASTRO_ROUTING_CONVENTIONS


COMPONENT_RULES

USE_ASTRO_COMPONENTS_BY_DEFAULT

PREFER_ASTRO_OVER_REACT

USE_REACT_ONLY_WHEN_REQUIRED

ONE_COMPONENT_PER_FILE

DO_NOT_EXPORT_MULTIPLE_COMPONENTS_FROM_SAME_FILE

PREFER_SMALL_COMPOSABLE_COMPONENTS


CONTENT_RULES

CONTENT_BELONGS_IN_SRC_CONTENT

USE_CONTENT_COLLECTIONS

CONTENT_CONFIG_IS_SOURCE_OF_TRUTH

DO_NOT_STORE_CONTENT_IN_COMPONENTS

DO_NOT_STORE_LARGE_CONTENT_BLOCKS_IN_PAGES

SEPARATE_CONTENT_FROM_PRESENTATION


DATA_RULES

STATIC_DATA_BELONGS_IN_SRC_DATA

NAVIGATION_DATA_BELONGS_IN_SRC_DATA

FAQ_DATA_BELONGS_IN_SRC_DATA

CONFIGURATION_DATA_BELONGS_IN_SRC_DATA

DO_NOT_STORE_DATA_IN_COMPONENTS

SEPARATE_DATA_FROM_PRESENTATION


IMAGE_RULES

PROJECT_IMAGES_BELONG_IN_SRC_IMAGES

PUBLIC_ASSETS_BELONG_IN_PUBLIC

USE_ASTRO_IMAGE_OPTIMIZATION_WHEN_AVAILABLE

DO_NOT_STORE_IMAGES_IN_COMPONENT_DIRECTORIES


STYLING_RULES

USE_PROJECT_DEFINED_STYLING_SOLUTION

IF_TAILWIND_IS_INSTALLED

USE_TAILWINDCSS_ONLY

DO_NOT_MIX_MULTIPLE_STYLING_APPROACHES

PREFER_GLOBAL_STYLES_IN_SRC_STYLES


PERFORMANCE_RULES

PREFER_STATIC_GENERATION

MINIMIZE_CLIENT_SIDE_JAVASCRIPT

MINIMIZE_HYDRATION

LOAD_ONLY_REQUIRED_CLIENT_CODE

AVOID_UNNECESSARY_REACT_COMPONENTS


ISLAND_RULES

USE_ISLANDS_ARCHITECTURE

DEFAULT_TO_SERVER_RENDERED_CONTENT

HYDRATE_ONLY_WHEN_NECESSARY

DO_NOT_HYDRATE_STATIC_CONTENT

USE_CLIENT_DIRECTIVES_ONLY_WHEN_REQUIRED


NAMING_RULES

COMPONENT_FILES -> PascalCase

LAYOUT_FILES -> PascalCase

UTILITY_FILES -> camelCase

DATA_FILES -> camelCase

CONTENT_FILES -> kebab-case

IMAGE_FILES -> kebab-case

EXAMPLES

  • Header.astro

  • HeroSection.astro

  • PostLayout.astro

  • navigationData.js

  • faqData.js

  • getting-started.md

  • first-blog-post.md


ROOT_DIRECTORY_POLICY

DO_NOT_CREATE_FILES_IN_REPOSITORY_ROOT

UNLESS_REQUIRED_BY_ASTRO

ALLOWED_ROOT_FILES

  • astro.config.mjs
  • content.config.ts
  • package.json
  • README.md
  • tsconfig.json

GENERATION_POLICY

BEFORE_CREATING_ANY_FILE

  1. CHECK_EXISTING_STRUCTURE
  2. CHECK_EXISTING_COMPONENTS
  3. CHECK_EXISTING_CONTENT
  4. CHECK_EXISTING_DATA
  5. CHECK_EXISTING_PATTERNS
  6. REUSE_BEFORE_CREATING

PREFER_MODIFICATION_OVER_NEW_FILES

PREFER_EXISTING_PATTERNS_OVER_NEW_PATTERNS

DO_NOT_INVENT_NEW_ARCHITECTURE

DO_NOT_DUPLICATE_EXISTING_FUNCTIONALITY

WHEN_UNCERTAIN

FOLLOW_EXISTING_CODEBASE

PACKAGE_JSON_OVERRIDES_VERSION_ASSUMPTIONS

DO_NOT_GUESS


ASTRO_PRINCIPLES

STATIC_FIRST

CONTENT_FIRST

SERVER_FIRST

USE_ISLANDS_ARCHITECTURE

MINIMIZE_JAVASCRIPT

HYDRATE_ONLY_WHEN_NECESSARY