Documentation Index Fetch the complete documentation index at: https://mintlify.com/abisai7/diccionario-chapin/llms.txt
Use this file to discover all available pages before exploring further.
Words Schema
The words schema defines the structure for all Guatemalan slang entries in the Chapinismos dictionary. It uses Zod for runtime validation and TypeScript type inference.
Schema Definition
import { defineCollection , z } from "astro:content" ;
const wordsSchema = z . object ({
word: z . string (),
meaning: z . string (),
examples: z . array ( z . string ()),
category: z . enum ([
"sustantivo" , "noun" ,
"verbo" , "verb" ,
"adjetivo" , "adjective" ,
"adverbio" , "adverb" ,
"expresión" , "expression" ,
"interjección" , "interjection" ,
"modismo" , "idiom" ,
]),
region: z . string (). optional (),
synonyms: z . array ( z . string ()). optional (),
relatedWords: z . array ( z . string ()). optional (),
featured: z . boolean (). optional (),
});
Collections
Two collections use this schema:
words-es - Spanish language entries
words-en - English language entries
export const collections = {
"words-es" : defineCollection ({ type: "content" , schema: wordsSchema }),
"words-en" : defineCollection ({ type: "content" , schema: wordsSchema }),
};
Fields
word
The Guatemalan word or expression being defined. Examples:
"Chucho"
"A huevo"
"Está cabrón"
"Puchica"
meaning
The definition or explanation of the word’s meaning in the target language. Spanish example: meaning : "Perro, especialmente uno callejero o de raza mestiza"
English example: meaning : "Dog, especially a street dog or mixed breed"
examples
Array of example sentences showing the word used in context. Must contain at least one example. Usage: examples :
- "Mirá ese chucho que anda por ahí"
- "Mi chucho se llama Firulais"
category
Grammatical category of the word. Accepts both Spanish and English category names. Accepted values:
"sustantivo" / "noun" - Nouns
"verbo" / "verb" - Verbs
"adjetivo" / "adjective" - Adjectives
"adverbio" / "adverb" - Adverbs
"expresión" / "expression" - Expressions/phrases
"interjección" / "interjection" - Interjections
"modismo" / "idiom" - Idioms
Categories have associated colors defined in @/utils/categoryColors.ts for visual consistency across the app.
region
region
string
default: "undefined"
Optional field specifying the region or department of Guatemala where the word is primarily used. Examples: region : "Guatemala City"
region : "Antigua"
region : "Quetzaltenango"
region : "Costa Sur"
synonyms
synonyms
string[]
default: "undefined"
Optional array of synonymous words or expressions. Usage: synonyms :
- "can"
- "lomito"
- "firulais"
relatedWords
string[]
default: "undefined"
Optional array of semantically related words that aren’t direct synonyms. Usage: relatedWords :
- "gato"
- "mascota"
- "animal"
featured
Whether this word should appear in the “Featured Words” section on the homepage. Usage:
Complete Example
Spanish Entry (words-es)
English Entry (words-en)
Expression Example
---
word : "Chucho"
meaning : "Perro, especialmente uno callejero o de raza mestiza. Es una forma cariñosa y común de referirse a los perros en Guatemala."
examples :
- "Mirá ese chucho que anda por ahí"
- "Mi chucho se llama Firulais"
- "Ese chucho siempre me ladra cuando paso"
category : "sustantivo"
region : "Nacional"
synonyms :
- "can"
- "lomito"
- "firulais"
relatedWords :
- "gato"
- "mascota"
featured : true
---
Contenido adicional sobre la palabra (opcional)
TypeScript Types
When using the schema in TypeScript, Astro automatically infers types:
import { getCollection , type CollectionEntry } from 'astro:content' ;
// Inferred type from schema
type WordEntry = CollectionEntry < 'words-es' >;
// Access to data fields
interface WordData {
word : string ;
meaning : string ;
examples : string [];
category : "sustantivo" | "verbo" | "adjetivo" | "adverbio" |
"expresión" | "interjección" | "modismo" |
"noun" | "verb" | "adjective" | "adverb" |
"expression" | "interjection" | "idiom" ;
region ?: string ;
synonyms ?: string [];
relatedWords ?: string [];
featured ?: boolean ;
}
// Usage in component
const allWords = await getCollection ( 'words-es' );
const word = allWords [ 0 ]. data ; // Type: WordData
Querying Words
Get All Words
Get Featured Words
Get Words by Category
Get Words with Synonyms
Get Words by Region
import { getCollection } from 'astro:content' ;
const wordsEs = await getCollection ( 'words-es' );
const wordsEn = await getCollection ( 'words-en' );
File Structure
Content files should be placed in:
src/content/words-es/*.md - Spanish entries
src/content/words-en/*.md - English entries
src/content/
├── words-es/
│ ├── chucho.md
│ ├── a-huevo.md
│ ├── chapin.md
│ └── ...
└── words-en/
├── chucho.md
├── a-huevo.md
├── chapin.md
└── ...
Astro automatically generates slugs from file names. For example, chucho.md becomes accessible at /palabras/chucho/
Validation
The schema provides automatic validation:
Valid Entry
Invalid - Missing Required Field
Invalid - Wrong Category
Invalid - Wrong Type
---
word : "Puchica"
meaning : "Interjección de sorpresa"
examples :
- "¡Puchica qué calor!"
category : "interjección"
---
Category Colors : @/utils/categoryColors - Get colors for category badges
Slug Generation : @/utils/slug - Generate URL-safe slugs from words
i18n : @/utils/i18n - Translation utilities for multilingual content
Schema Reference
Location: src/content/config.ts
import { defineCollection , z } from "astro:content" ;
const wordsSchema = z . object ({
word: z . string (),
meaning: z . string (),
examples: z . array ( z . string ()),
category: z . enum ([
"sustantivo" , "noun" ,
"verbo" , "verb" ,
"adjetivo" , "adjective" ,
"adverbio" , "adverb" ,
"expresión" , "expression" ,
"interjección" , "interjection" ,
"modismo" , "idiom" ,
]),
region: z . string (). optional (),
synonyms: z . array ( z . string ()). optional (),
relatedWords: z . array ( z . string ()). optional (),
featured: z . boolean (). optional (),
});
export const collections = {
"words-es" : defineCollection ({ type: "content" , schema: wordsSchema }),
"words-en" : defineCollection ({ type: "content" , schema: wordsSchema }),
};