├── src ├── env.d.ts ├── components │ ├── reusable │ │ ├── atoms │ │ │ ├── Wrapper.astro │ │ │ ├── ConditionalRender.astro │ │ │ ├── ArtAuthor.astro │ │ │ ├── Logo.astro │ │ │ ├── PopLink.astro │ │ │ ├── UpdateTime.astro │ │ │ └── Spanify.astro │ │ ├── molecules │ │ │ ├── References.astro │ │ │ ├── ArticleCard.tsx │ │ │ ├── Question.tsx │ │ │ ├── Writers.astro │ │ │ └── Selector.tsx │ │ └── organisms │ │ │ ├── ModuleTree.tsx │ │ │ └── ArticleNavigator.astro │ └── unique │ │ ├── CodeShowcase.md │ │ ├── HomeFooter.astro │ │ ├── HomeModules.astro │ │ ├── HomeHeader.astro │ │ ├── HomeFAQ.astro │ │ ├── HomeHero.astro │ │ ├── HomeAbout.astro │ │ └── HomeSuggestions.astro ├── global │ ├── styles │ │ └── components.css │ └── utils │ │ └── capitalize.ts ├── assets │ ├── empty.md │ ├── template.md │ └── example.md ├── layout │ ├── BaseLayout.astro │ └── ArticleLayout.astro ├── pages │ ├── index.astro │ └── articles │ │ └── 01-introduccion │ │ ├── 05-tus-primeros-pasos-con-nodejs.md │ │ ├── 04-guia-para-instalar-y-configurar-nodejs-y-npm.md │ │ ├── 03-todo-lo-que-necesitas-saber-de-nodejs.md │ │ ├── 01-los-origenes-y-el-funcionamiento-de-la-web.md │ │ └── 02-todo-lo-que-necesitas-saber-de-javascript.md └── lib │ └── HeroAnimations.ts ├── public ├── out │ ├── 01-screen.png │ ├── 02-screen.png │ └── 03-screen.png ├── robots.txt ├── resource │ ├── img │ │ ├── jsking.webp │ │ └── character.webp │ └── svg │ │ ├── plus.svg │ │ ├── arrow.svg │ │ ├── check.svg │ │ ├── down_arrow.svg │ │ ├── js.svg │ │ ├── heart.svg │ │ ├── github.svg │ │ ├── world.svg │ │ ├── paper.svg │ │ └── crown.svg ├── articles │ ├── img │ │ ├── defaultBanner.jpg │ │ ├── como-instalar-nodejs-y-npm │ │ │ ├── output.png │ │ │ ├── search.png │ │ │ ├── setup_00.png │ │ │ ├── setup_01.png │ │ │ ├── setup_02.png │ │ │ ├── setup_03.png │ │ │ ├── setup_04.png │ │ │ ├── setup_05.png │ │ │ └── node_web_screen.png │ │ └── tus-primeros-pasos-con-nodejs │ │ │ ├── cmd_result.png │ │ │ ├── final_result.png │ │ │ ├── node_runtime.png │ │ │ └── create_terminal.png │ └── svg │ │ ├── arrow_slide.svg │ │ ├── js.svg │ │ ├── box.svg │ │ ├── laptop.svg │ │ ├── terminal.svg │ │ ├── node.svg │ │ ├── code_screen.svg │ │ ├── empty.svg │ │ └── web.svg └── favicon.svg ├── .vscode ├── extensions.json └── launch.json ├── .gitignore ├── astro.config.mjs ├── tsconfig.json ├── tailwind.config.mjs ├── README.md ├── package.json ├── mitsco.config.json ├── LICENCE.txt └── contributing ├── general.md └── articles.md /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /public/out/01-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/out/01-screen.png -------------------------------------------------------------------------------- /public/out/02-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/out/02-screen.png -------------------------------------------------------------------------------- /public/out/03-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/out/03-screen.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://ilovejs.org/sitemap-index.xml -------------------------------------------------------------------------------- /public/resource/img/jsking.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/resource/img/jsking.webp -------------------------------------------------------------------------------- /src/components/reusable/atoms/Wrapper.astro: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /public/resource/img/character.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/resource/img/character.webp -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /public/articles/img/defaultBanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/defaultBanner.jpg -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/output.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/search.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_00.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_01.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_02.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_03.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_04.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/setup_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/setup_05.png -------------------------------------------------------------------------------- /public/articles/img/tus-primeros-pasos-con-nodejs/cmd_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/tus-primeros-pasos-con-nodejs/cmd_result.png -------------------------------------------------------------------------------- /public/articles/img/como-instalar-nodejs-y-npm/node_web_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/como-instalar-nodejs-y-npm/node_web_screen.png -------------------------------------------------------------------------------- /public/articles/img/tus-primeros-pasos-con-nodejs/final_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/tus-primeros-pasos-con-nodejs/final_result.png -------------------------------------------------------------------------------- /public/articles/img/tus-primeros-pasos-con-nodejs/node_runtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/tus-primeros-pasos-con-nodejs/node_runtime.png -------------------------------------------------------------------------------- /public/articles/img/tus-primeros-pasos-con-nodejs/create_terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Numonu/ilovejs/HEAD/public/articles/img/tus-primeros-pasos-con-nodejs/create_terminal.png -------------------------------------------------------------------------------- /src/components/reusable/atoms/ConditionalRender.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props{ 3 | controller : boolean 4 | } 5 | const {controller} = Astro.props; 6 | --- 7 | { 8 | controller && 9 | } -------------------------------------------------------------------------------- /src/global/styles/components.css: -------------------------------------------------------------------------------- 1 | @tailwind components; 2 | 3 | @layer components{ 4 | .text-subtitle{ 5 | @apply mb-8 text-3xl font-roboto font-normal; 6 | } 7 | .mb-section{ 8 | @apply mb-24; 9 | } 10 | } -------------------------------------------------------------------------------- /src/components/unique/CodeShowcase.md: -------------------------------------------------------------------------------- 1 | ```javascript 2 | while(estudiando_en === "ilovejs"){ 3 | console.log("Aprender JavaScript nunca fue tan fácil"); 4 | } 5 | ```` 6 | # 7 | ```javascript 8 | console.log("¡Contenido 100% en español!"); 9 | ```` -------------------------------------------------------------------------------- /src/components/reusable/atoms/ArtAuthor.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props{ 3 | href? : string 4 | } 5 | const {href = "#"} = Astro.props; 6 | --- 7 | 8 | Ilustración por 9 | 2 | icorazonjs 7 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | # generated types 4 | .astro/ 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | # logs 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'astro/config'; 2 | import tailwind from "@astrojs/tailwind"; 3 | import react from "@astrojs/react"; 4 | import sitemap from "@astrojs/sitemap"; 5 | 6 | // https://astro.build/config 7 | export default defineConfig({ 8 | site : "https://ilovejs.org", 9 | integrations: [tailwind(), react(), sitemap()], 10 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "paths": { 6 | "@/*": [ 7 | "src/*" 8 | ], 9 | "@reusable/*": [ 10 | "src/components/reusable/*" 11 | ], 12 | "@unique/*": [ 13 | "src/components/unique/*" 14 | ] 15 | }, 16 | "jsx": "react-jsx", 17 | "jsxImportSource": "react" 18 | } 19 | } -------------------------------------------------------------------------------- /tailwind.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], 4 | theme: { 5 | extend: { 6 | fontFamily : { 7 | "poppins" : "Poppins", 8 | "roboto" : "Roboto Slab Variable" 9 | }, 10 | colors :{ 11 | "pinia-400" : "rgb(250 204 21)", 12 | "pinia-300" : "rgb(253 224 71)" 13 | } 14 | }, 15 | }, 16 | plugins: [], 17 | } 18 | -------------------------------------------------------------------------------- /src/global/utils/capitalize.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Estara en mayuscula la primera letra de la oracion y 3 | aquellas palabras que tengan mas de 3 letras 4 | */ 5 | const capitalize = (val: string) => { 6 | return ( 7 | val[0].toUpperCase() + 8 | val 9 | .split(" ") 10 | .map((e) => { 11 | if (e.length > 3) return e[0].toUpperCase() + e.slice(1); 12 | return e; 13 | }) 14 | .join(" ") 15 | .slice(1) 16 | ); 17 | }; 18 | 19 | export default capitalize; 20 | -------------------------------------------------------------------------------- /src/components/reusable/molecules/References.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | list: string[][]; 4 | } 5 | const { list } = Astro.props; 6 | --- 7 | 8 | 9 | Fuentes : 10 | { 11 | list.map(([name , link] , i) => { 12 | return ( 13 | <> 14 | 15 | {name} 16 | 17 | {list.length - 1 !== i && " , "} 18 | 19 | ); 20 | }) 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/components/reusable/atoms/PopLink.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props{ 3 | href? : string 4 | } 5 | const {href = "#"} = Astro.props; 6 | --- 7 | 8 |
9 | 10 |
11 |
12 | 13 |
14 |
-------------------------------------------------------------------------------- /src/assets/empty.md: -------------------------------------------------------------------------------- 1 | --- 2 | articleName : nombre del articulo e identificador unico 3 | 4 | # Para las Cards 5 | 6 | iconName: empty 7 | summary : resumen del articulo 8 | 9 | # Metadatos 10 | 11 | layout: ../../../layout/ArticleLayout.astro 12 | title: Nuevo Articulo 13 | description: nuevo articulo 14 | keywords : ["articulo","nuevo"] 15 | 16 | # Adjuntar 17 | 18 | author: Sin Autor 19 | pubDate: 0000-00-00 20 | --- 21 | 22 | # Nuevo Articulo 23 | 24 | ¿Quieres escribir este artículo? Visita nuestro [GitHub](https://www.github.com/numonu/ilovejs) 25 | -------------------------------------------------------------------------------- /public/resource/svg/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/articles/svg/arrow_slide.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/resource/svg/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/resource/svg/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/resource/svg/down_arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/articles/svg/js.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/resource/svg/js.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/resource/svg/heart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/components/reusable/atoms/UpdateTime.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const months = [ 3 | "enero", "febrero", "marzo", "abril", "mayo", "junio", 4 | "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre" 5 | ]; 6 | 7 | const currentDate = new Date(); 8 | const dia = currentDate.getDate(); 9 | const mes = currentDate.getMonth(); 10 | const año = currentDate.getFullYear(); 11 | 12 | const result = `${dia} de ${months[mes]} del ${año}`; 13 | --- 14 | 15 | world icon 16 | 17 | Actualizado por ultima vez el {result} 18 | 19 | -------------------------------------------------------------------------------- /src/components/reusable/atoms/Spanify.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | phrase: string; 4 | className: string; 5 | } 6 | const { phrase, className } = Astro.props; 7 | const words = phrase.split(" "); 8 | --- 9 | 10 | { 11 | words.map((word, i, arr) => { 12 | const output = Array.from(word); 13 | return ( 14 | 15 | {output.map((letter) => ( 16 | 17 | {letter} 18 | 19 | ))} 20 | {i !== arr.length - 1 && } 21 | 22 | ); 23 | }) 24 | } 25 | -------------------------------------------------------------------------------- /src/assets/template.md: -------------------------------------------------------------------------------- 1 | --- 2 | articleName : nombre del articulo e identificador unico 3 | 4 | # Para las Cards 5 | 6 | iconName: nombre del archivo que se usara como icono 7 | summary : resumen del articulo 8 | 9 | # Metadatos 10 | 11 | layout: ../../../layout/ArticleLayout.astro 12 | title: titulo de la pagina 13 | description: descripcion de la pagina 14 | keywords : ["keyword","keyword"] 15 | 16 | # Adjuntar 17 | 18 | author: autor del artidulo 19 | partners : ["socio del articulo" , "socio del articulo"] # campo opcional 20 | banner: "link a la imagen del banner" # campo opcional 21 | pubDate: 2022-08-08 22 | references : [ 23 | ["nombre" , "link a la referencia"], 24 | ["nombre" , "link a la referencia"], 25 | ] # campo opcional 26 | --- -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ILoveJS 2 | 3 | **ILoveJS** es una guía práctica diseñada para aprender JavaScript. 4 | 5 | ## Requisitos Previos 6 | 7 | - Node.js y NPM instalados. 8 | 9 | ## Instalación 10 | 11 | Sigue estos pasos para instalar y ejecutar la plataforma en tu sistema: 12 | 13 | 1. Clona este repositorio: 14 | 15 | ```bash 16 | git clone https://github.com/numonu/ilovejs.git 17 | ``` 18 | 19 | 2. Instala las dependencias: 20 | 21 | ```bash 22 | npm i 23 | ``` 24 | 25 | 3. Ejecuta el servidor de Desarrollo: 26 | 27 | ```bash 28 | npm run dev 29 | ``` 30 | 31 | ## Contribucion 32 | 33 | - Lea la [guía de contribución](/contributing/general.md) para modificar y/o corregir contenido de la página 34 | - Lea la [guía de redacción](/contributing/articles.md) para crear , modificar y/o corregir artículos -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ilovejs", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "astro dev", 7 | "start": "astro dev", 8 | "build": "astro build", 9 | "preview": "astro preview", 10 | "astro": "astro" 11 | }, 12 | "dependencies": { 13 | "@astrojs/react": "^3.0.3", 14 | "@astrojs/sitemap": "^3.0.3", 15 | "@astrojs/tailwind": "^5.0.2", 16 | "@fontsource-variable/roboto-slab": "^5.0.15", 17 | "@fontsource/poppins": "^5.0.8", 18 | "@types/react": "^18.2.28", 19 | "@types/react-dom": "^18.2.13", 20 | "astro": "^3.3.0", 21 | "gsap": "^3.12.2", 22 | "react": "^18.2.0", 23 | "react-dom": "^18.2.0", 24 | "tailwindcss": "^3.3.3" 25 | }, 26 | "devDependencies": { 27 | "@types/node": "^20.8.6" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/layout/BaseLayout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import "@fontsource/poppins"; 3 | import '@fontsource-variable/roboto-slab'; 4 | 5 | import "@/global/styles/components.css"; 6 | 7 | interface Props{ 8 | title : string, 9 | description : string, 10 | } 11 | const {title , description} = Astro.props; 12 | --- 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | {title} 23 | 24 | 25 |
26 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/components/unique/HomeFooter.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Logo from "@reusable/atoms/Logo.astro"; 3 | import Wrapper from "@reusable/atoms/Wrapper.astro"; 4 | import Licence from "../reusable/atoms/Licence.astro"; 5 | 6 | --- 7 | 8 |
9 | 10 |
11 |
12 | 13 | Gracias por leer! © 2023-presente. todos los derechos reservados 14 |
15 | 16 | Creado con corazon por @numonudev 17 | 18 |
19 |
20 |
-------------------------------------------------------------------------------- /src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import BaseLayout from "@/layout/BaseLayout.astro"; 3 | import HomeHero from "@unique/HomeHero.astro"; 4 | import HomeHeader from "@unique/HomeHeader.astro"; 5 | import HomeAbout from "@unique/HomeAbout.astro"; 6 | import HomeModules from "@unique/HomeModules.astro"; 7 | import HomeFAQ from "@/components/unique/HomeFAQ.astro"; 8 | import Wrapper from "@/components/reusable/atoms/Wrapper.astro"; 9 | import HomeSuggestions from "@/components/unique/HomeSuggestions.astro"; 10 | import HomeFooter from "@unique/HomeFooter.astro"; 11 | --- 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/components/reusable/molecules/ArticleCard.tsx: -------------------------------------------------------------------------------- 1 | import capitalize from "@/global/utils/capitalize"; 2 | import type { FC } from "react"; 3 | 4 | interface ModuleCardProps { 5 | title: string; 6 | description: string; 7 | iconName: string; 8 | href: string; 9 | } 10 | const ModuleCard: FC = ({ 11 | title, 12 | description, 13 | iconName, 14 | href, 15 | }) => { 16 | return ( 17 | 21 |
22 | {`${iconName} 23 |
24 |

{capitalize(title)}

25 |

{description}

26 |
27 | ); 28 | }; 29 | 30 | export default ModuleCard; 31 | -------------------------------------------------------------------------------- /mitsco.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "types" : [ 3 | { 4 | "type" : "add", 5 | "description" : "Se utiliza cuando se agrega un nuevo archivo al proyecto." 6 | }, 7 | { 8 | "type" : "update", 9 | "description" : "Se emplea cuando se realiza una actualización en una funcionalidad o archivo existente." 10 | }, 11 | { 12 | "type" : "feat", 13 | "description" : "Se utiliza para indicar la adición de una nueva funcionalidad al proyecto." 14 | }, 15 | { 16 | "type" : "style", 17 | "description" : "Para cambios visuales que no afectan el funcionamiento" 18 | }, 19 | { 20 | "type" : "core", 21 | "description" : "Se usa cuando se instala un nuevo paquete o se modifica la configuración de uno existente en el proyecto." 22 | }, 23 | { 24 | "type" : "delete", 25 | "description" : "Se emplea cuando se elimina un archivo o recurso del proyecto." 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /LICENCE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Juan Villegas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/reusable/molecules/Question.tsx: -------------------------------------------------------------------------------- 1 | import { useState, type FC, type ReactNode } from "react"; 2 | 3 | interface QuestionProps{ 4 | question : string, 5 | children : ReactNode 6 | } 7 | const Question : FC = ({question , children}) => { 8 | const [open , setOpen] = useState(false); 9 | 10 | const toggle = () => open ? setOpen(false) : setOpen(true); 11 | 12 | return 25 | } 26 | 27 | export default Question; -------------------------------------------------------------------------------- /src/components/reusable/molecules/Writers.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | author: string; 4 | partners: string[]; 5 | pubDate: string; 6 | } 7 | const { author, partners, pubDate } = Astro.props; 8 | --- 9 | 10 |
11 | 14 |
15 |
16 | paper icon 17 |
18 | Autor : 19 | {author} 20 |
21 |
22 | { 23 | partners?.map((e) => { 24 | return ( 25 |
26 | paper icon 31 |
32 | Socio : 33 | {e} 34 |
35 |
36 | ); 37 | }) 38 | } 39 |
40 |
41 | -------------------------------------------------------------------------------- /src/components/unique/HomeModules.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import ModuleTree from "@reusable/organisms/ModuleTree"; 3 | import UpdateTime from "../reusable/atoms/UpdateTime.astro"; 4 | 5 | //Obtenemos todos los documuentos 6 | const allPost = await Astro.glob("../../pages/articles/*/*.md"); 7 | 8 | //Usando la info de los documentos creamos un arreglo con sus datos relevantes 9 | const data = allPost.map(e => { 10 | 11 | //obtenemos la ruta (revelada por Astro) 12 | const href = e.url as string; 13 | 14 | //obtenemos el nombre del modulo al que pertenecen (obtenido de la ruta) 15 | const moduleName = href.replace(/-/g , " ").split("/")[2].slice(3); 16 | 17 | //obtenemos datos para mostrar en la Card (incrustado en el frontmatter) 18 | const articleName = e.frontmatter.articleName; 19 | const summary = e.frontmatter.summary as string; 20 | const iconName = e.frontmatter.iconName as string; 21 | 22 | return ({ 23 | moduleName, 24 | articleName, 25 | summary, 26 | iconName, 27 | href, 28 | }) 29 | }) 30 | --- 31 | 32 |
33 | 34 |
35 |
36 | 37 |
38 |
39 | -------------------------------------------------------------------------------- /public/articles/svg/box.svg: -------------------------------------------------------------------------------- 1 | 2 | file_type_package -------------------------------------------------------------------------------- /public/articles/svg/laptop.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/components/unique/HomeHeader.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Logo from "@reusable/atoms/Logo.astro"; 3 | import PopLink from "@reusable/atoms/PopLink.astro"; 4 | import Wrapper from "@reusable/atoms/Wrapper.astro"; 5 | import ConditionalRender from "../reusable/atoms/ConditionalRender.astro"; 6 | 7 | interface Props{ 8 | enableActionBtn? : boolean 9 | } 10 | const {enableActionBtn = true} = Astro.props; 11 | --- 12 | 13 |
14 | 15 |
16 |
17 | 18 | 19 | 24 |
25 | 38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /src/components/reusable/organisms/ModuleTree.tsx: -------------------------------------------------------------------------------- 1 | import { useState, type FC } from "react"; 2 | import ArticleCard from "@/components/reusable/molecules/ArticleCard"; 3 | import Selector from "../molecules/Selector"; 4 | import capitalize from "@/global/utils/capitalize"; 5 | 6 | interface ModuleTreeProps { 7 | data: { 8 | moduleName: string; 9 | articleName: string; 10 | summary: string; 11 | iconName: string; 12 | href: string; 13 | }[]; 14 | } 15 | const ModuleTree: FC = ({ data }) => { 16 | 17 | const [moduleSelect, setModuleSelect] = useState(data[0].moduleName); 18 | const modulesAvalibles = [...new Set(data.map(e => e.moduleName))]; 19 | 20 | const changeModule = (moduleName: string) => setModuleSelect(moduleName); 21 | 22 | return ( 23 | <> 24 |
25 |

26 | Módulo :{" "} 27 | 31 | {capitalize(moduleSelect)} 32 | 33 |

34 | 39 |
40 |
41 | {data.filter(e => e.moduleName === moduleSelect).map((e) => ( 42 | 49 | ))} 50 |
51 | 52 | ); 53 | }; 54 | 55 | export default ModuleTree; 56 | -------------------------------------------------------------------------------- /public/articles/svg/terminal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/reusable/molecules/Selector.tsx: -------------------------------------------------------------------------------- 1 | import { useState, type FC } from "react"; 2 | import capitalize from "@/global/utils/capitalize.ts"; 3 | 4 | interface SelectorProps { 5 | defaultSelect: string; 6 | optionList: string[]; 7 | onChange: (selectName: string) => void; 8 | } 9 | const Selector: FC = ({ 10 | defaultSelect, 11 | optionList, 12 | onChange, 13 | }) => { 14 | const [open, setOpen] = useState(false); 15 | 16 | const toggle = () => (open ? setOpen(false) : setOpen(true)); 17 | 18 | return ( 19 |
20 | 31 |
    36 | {optionList.map((el, i) => { 37 | return ( 38 |
  1. onChange(el)} 43 | > 44 | 45 | {i > 9 ? i + 1 : `0${i + 1}`}. 46 | 47 | {capitalize(el)} 48 |
  2. 49 | ); 50 | })} 51 |
52 |
53 | ); 54 | }; 55 | 56 | export default Selector; 57 | -------------------------------------------------------------------------------- /src/components/unique/HomeFAQ.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Question from "@reusable/molecules/Question"; 3 | --- 4 | 5 |
6 |

Preguntas Frecuentes

7 |
8 |
9 | 10 | Es una guía diseñada para aprender JavaScript 11 | 12 | 13 | Aprenderas todos los conceptos clave y conocimientos necesarios que te ayudarán en tu camino como Desarrollador Web 14 | 15 | 16 | El contenido de ilovejs se estructura en módulos, donde cada uno agrupa sus propios artículos. Se sugiere un enfoque de aprendizaje secuencial, es decir, seguir los módulos y los artículos en el orden recomendado 17 | 18 |
19 |
20 | 21 | El contenido es administrado y enriquecido gracias a la participación de nuestra comunidad de colaboradores en GitHub 22 | 23 | 24 | ilovejs es un proyecto open source hecho por la comunidad para la comunidad. 25 | 26 | 27 | ¿Eres un desarrollador interesado en colaborar? Te invitamos a visitar nuestro repositorio en GitHub y consultar nuestra guía para colaboradores 28 | 29 |
30 |
31 |
32 | -------------------------------------------------------------------------------- /public/resource/svg/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | github [#142] Created with Sketch. 7 | -------------------------------------------------------------------------------- /contributing/general.md: -------------------------------------------------------------------------------- 1 | # Contribución al Proyecto 2 | 3 | Gracias por considerar contribuir a ilovejs. Apreciamos tus esfuerzos para mejorar esta plataforma de aprendizaje gratuito para JavaScript. 4 | 5 | Antes de empezar, te recomendamos leer nuestra guía de contribución para comprender cómo puedes ayudarnos de la mejor manera posible. 6 | 7 | ## Cómo Contribuir 8 | 9 | ### Reportar Problemas 10 | 11 | Si encuentras un problema o un error en la plataforma, por favor crea un informe detallado para que podamos investigar y solucionar el problema. Incluye la siguiente información: 12 | 13 | - Descripción del problema. 14 | - Pasos para reproducir el problema. 15 | - Comportamiento esperado y comportamiento real. 16 | - Capturas de pantalla si es aplicable. 17 | 18 | ### Solicitudes de Extracción (Pull Requests) 19 | 20 | Si deseas contribuir con código a la plataforma, sigue estos pasos: 21 | 22 | 1. Haz un fork del repositorio. 23 | 2. Crea una rama para tu contribución: `git checkout -b nombre-de-tu-rama`. 24 | 3. Realiza los cambios y asegúrate de seguir las pautas de estilo y formato del código. 25 | 4. Añade documentación necesaria. 26 | 5. Haz commits con mensajes descriptivos. 27 | 6. Haz push a tu rama: `git push origin nombre-de-tu-rama`. 28 | 7. Abre una solicitud de extracción (PR) explicando tus cambios y por qué deberían ser fusionados. 29 | 30 | ### Mejoras y Nuevas Características 31 | 32 | Si tienes ideas para mejoras o nuevas características en la plataforma, siéntete libre de crear un informe detallado o discutirlo en la sección de problemas (Issues) antes de comenzar a trabajar en ello. 33 | 34 | ## Pautas de Contribución 35 | 36 | Para mantener un estándar de calidad en el proyecto, te pedimos que sigas estas pautas: 37 | 38 | - Usa un lenguaje respetuoso y colaborativo en todas las interacciones. 39 | - Sigue las convenciones de estilo de código utilizadas en el proyecto. 40 | 41 | ## Contribucion 42 | 43 | - Lea la [guía del proyecto](../README.md) para mas detalles 44 | - Lea la [guía de redacción](articles.md) para crear , modificar y/o corregir artículos 45 | -------------------------------------------------------------------------------- /public/resource/svg/world.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/resource/svg/paper.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 13 | 15 | 17 | 18 | 19 | 21 | 23 | 25 | 27 | 28 | -------------------------------------------------------------------------------- /src/components/unique/HomeHero.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Spanify from "../reusable/atoms/Spanify.astro"; 3 | --- 4 | 16 |
17 | 36 |
37 | -------------------------------------------------------------------------------- /public/articles/svg/node.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/components/unique/HomeAbout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import ArtAuthor from "@reusable/atoms/ArtAuthor.astro"; 3 | import CodeShowcase from "./CodeShowcase.md"; 4 | --- 5 | 6 | 16 |
17 |
20 |
21 |

22 | Aprenderás JavaScript desde cero, el lenguaje de programación más versátil del 25 | mundo 26 |

27 |

28 | JavaScript es un lenguaje de programación que se utiliza en el desarrollo web para hacer que las páginas sean interactivas y dinámicas. Se ejecuta en el navegador del usuario y permite a los desarrolladores controlar y modificar el contenido de una página, responder a eventos y crear aplicaciones web interactivas. Es una parte fundamental de la tecnología web moderna. 29 |

30 |

En esta guía aprenderás :

31 |
    34 |
  • Fundamentos de JavaScript
  • 35 |
  • Manipulación del DOM
  • 36 |
  • Manejo de Eventos
  • 37 |
  • AJAX y Fetching de Datos
  • 38 |
  • Programación Orientada a Objetos
  • 39 |
40 | y muchos temas más... 41 |
42 |
43 | 55 | 60 |
61 |
62 |
63 | -------------------------------------------------------------------------------- /src/components/unique/HomeSuggestions.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import ArtAuthor from "../reusable/atoms/ArtAuthor.astro"; 3 | --- 4 |
5 |
6 |
9 | @Villegas.Arts 10 |
11 |
12 | personaje en 3D sosteniendo una laptop 17 |
18 |
21 |
24 |
25 |

Ayúdanos a Mejorar

26 |

27 | ¿Tienes alguna pregunta o alguna sugerencia para mejorar nuestra pagina? No dudes en contactarnos, ya que estamos siempre dispuestos a escuchar tus inquietudes y recibir tus valiosas ideas. 28 |

29 |
30 |
31 |
32 |
33 | 37 |