├── .gitignore ├── .vscode ├── extensions.json └── settings.json ├── 01-tinder-swipe ├── index.html ├── iphone.webp ├── photos │ ├── 1.webp │ └── 2.webp ├── tinder-icons.webp └── tinder-logo.webp ├── 02-arkanoid-game ├── bkg.png ├── bricks.png ├── index.html └── sprite.png ├── 03-midu-typing-game ├── data.js └── index.html ├── 04-chatgpt-local ├── index.html └── worker.js ├── 05-api-geo-ip └── index.html ├── 06-tetris-canvas └── index.html ├── 07-tier-maker └── index.html ├── 08-excel-js └── index.html ├── 09-paint-win-95 ├── cursors │ ├── erase.png │ ├── picker.png │ ├── pincel.png │ └── point.png ├── icon.png ├── icons │ ├── clear.png │ ├── draw.png │ ├── ellipse.png │ ├── erase.png │ ├── fill.png │ ├── picker.png │ ├── rectangle.png │ ├── save.png │ ├── star.png │ └── trash.png └── index.html ├── 10-stack-game └── index.html ├── 11-js-perf-benchmark ├── index.html └── worker.js ├── 12-moto-scroll ├── frames │ ├── 0.webp │ ├── moto-001.webp │ ├── moto-002.webp │ ├── moto-003.webp │ ├── moto-004.webp │ ├── moto-005.webp │ ├── moto-006.webp │ ├── moto-007.webp │ ├── moto-008.webp │ ├── moto-009.webp │ ├── moto-010.webp │ ├── moto-011.webp │ ├── moto-012.webp │ ├── moto-013.webp │ ├── moto-014.webp │ ├── moto-015.webp │ ├── moto-016.webp │ ├── moto-017.webp │ ├── moto-018.webp │ ├── moto-019.webp │ ├── moto-020.webp │ ├── moto-021.webp │ ├── moto-022.webp │ ├── moto-023.webp │ ├── moto-024.webp │ ├── moto-025.webp │ ├── moto-026.webp │ ├── moto-027.webp │ ├── moto-028.webp │ ├── moto-029.webp │ ├── moto-030.webp │ ├── moto-031.webp │ ├── moto-032.webp │ ├── moto-033.webp │ ├── moto-034.webp │ ├── moto-035.webp │ ├── moto-036.webp │ ├── moto-037.webp │ ├── moto-038.webp │ ├── moto-039.webp │ ├── moto-040.webp │ ├── moto-041.webp │ ├── moto-042.webp │ ├── moto-043.webp │ ├── moto-044.webp │ ├── moto-045.webp │ ├── moto-046.webp │ ├── moto-047.webp │ ├── moto-048.webp │ ├── moto-049.webp │ ├── moto-050.webp │ ├── moto-051.webp │ ├── moto-052.webp │ ├── moto-053.webp │ ├── moto-054.webp │ ├── moto-055.webp │ ├── moto-056.webp │ ├── moto-057.webp │ ├── moto-058.webp │ ├── moto-059.webp │ ├── moto-060.webp │ ├── moto-061.webp │ ├── moto-062.webp │ ├── moto-063.webp │ ├── moto-064.webp │ ├── moto-065.webp │ ├── moto-066.webp │ ├── moto-067.webp │ ├── moto-068.webp │ ├── moto-069.webp │ ├── moto-070.webp │ ├── moto-071.webp │ ├── moto-072.webp │ ├── moto-073.webp │ ├── moto-074.webp │ ├── moto-075.webp │ ├── moto-076.webp │ ├── moto-077.webp │ ├── moto-078.webp │ ├── moto-079.webp │ ├── moto-080.webp │ ├── moto-081.webp │ ├── moto-082.webp │ ├── moto-083.webp │ ├── moto-084.webp │ ├── moto-085.webp │ ├── moto-086.webp │ ├── moto-087.webp │ ├── moto-088.webp │ ├── moto-089.webp │ ├── moto-090.webp │ ├── moto-091.webp │ ├── moto-092.webp │ ├── moto-093.webp │ ├── moto-094.webp │ ├── moto-095.webp │ ├── moto-096.webp │ ├── moto-097.webp │ ├── moto-098.webp │ ├── moto-099.webp │ ├── moto-100.webp │ ├── moto-101.webp │ ├── moto-102.webp │ ├── moto-103.webp │ ├── moto-104.webp │ ├── moto-105.webp │ ├── moto-106.webp │ ├── moto-107.webp │ ├── moto-108.webp │ ├── moto-109.webp │ ├── moto-110.webp │ ├── moto-111.webp │ ├── moto-112.webp │ ├── moto-113.webp │ ├── moto-114.webp │ ├── moto-115.webp │ ├── moto-116.webp │ ├── moto-117.webp │ ├── moto-118.webp │ ├── moto-119.webp │ ├── moto-120.webp │ ├── moto-121.webp │ ├── moto-122.webp │ ├── moto-123.webp │ ├── moto-124.webp │ ├── moto-125.webp │ ├── moto-126.webp │ ├── moto-127.webp │ ├── moto-128.webp │ ├── moto-129.webp │ ├── moto-130.webp │ ├── moto-131.webp │ ├── moto-132.webp │ ├── moto-133.webp │ ├── moto-134.webp │ ├── moto-135.webp │ ├── moto-136.webp │ ├── moto-137.webp │ ├── moto-138.webp │ ├── moto-139.webp │ ├── moto-140.webp │ ├── moto-141.webp │ ├── moto-142.webp │ ├── moto-143.webp │ ├── moto-144.webp │ ├── moto-145.webp │ ├── moto-146.webp │ ├── moto-147.webp │ ├── moto-148.webp │ ├── moto-149.webp │ ├── moto-150.webp │ └── moto-151.webp ├── images.js ├── index.html └── logo.png ├── LICENSE.md ├── README.md ├── web ├── .astro │ ├── content-assets.mjs │ ├── content-modules.mjs │ ├── content.d.ts │ ├── data-store.json │ ├── settings.json │ └── types.d.ts ├── README.md ├── astro.config.mjs ├── bun.lockb ├── package.json ├── public │ ├── favicon.svg │ ├── me-blue.webp │ ├── me.webp │ ├── og.jpg │ ├── projects │ │ ├── 01-tinder-swipe │ │ │ ├── index.html │ │ │ ├── iphone.webp │ │ │ ├── photos │ │ │ │ ├── 1.webp │ │ │ │ └── 2.webp │ │ │ ├── tinder-icons.webp │ │ │ └── tinder-logo.webp │ │ ├── 01.webp │ │ ├── 02-arkanoid-game │ │ │ ├── bkg.png │ │ │ ├── bricks.png │ │ │ ├── index.html │ │ │ └── sprite.png │ │ ├── 02.webp │ │ ├── 03-midu-typing-game │ │ │ ├── data.js │ │ │ └── index.html │ │ ├── 03.webp │ │ ├── 04-chatgpt-local │ │ │ ├── index.html │ │ │ └── worker.js │ │ ├── 04.webp │ │ ├── 05-api-geo-ip │ │ │ └── index.html │ │ ├── 05.webp │ │ ├── 06-tetris-canvas │ │ │ └── index.html │ │ ├── 06.webp │ │ ├── 07-tier-maker │ │ │ └── index.html │ │ ├── 07.webp │ │ ├── 08-excel-js │ │ │ └── index.html │ │ ├── 08.webp │ │ ├── 09-paint-win-95 │ │ │ ├── cursors │ │ │ │ ├── erase.png │ │ │ │ ├── picker.png │ │ │ │ ├── pincel.png │ │ │ │ └── point.png │ │ │ ├── icon.png │ │ │ ├── icons │ │ │ │ ├── clear.png │ │ │ │ ├── draw.png │ │ │ │ ├── ellipse.png │ │ │ │ ├── erase.png │ │ │ │ ├── fill.png │ │ │ │ ├── picker.png │ │ │ │ ├── rectangle.png │ │ │ │ ├── save.png │ │ │ │ ├── star.png │ │ │ │ └── trash.png │ │ │ └── index.html │ │ ├── 09.webp │ │ ├── 10-stack-game │ │ │ └── index.html │ │ ├── 10.webp │ │ ├── 11-js-perf-benchmark │ │ │ ├── index.html │ │ │ └── worker.js │ │ ├── 11.webp │ │ ├── 12-moto-scroll │ │ │ ├── frames │ │ │ │ └── 0.webp │ │ │ ├── images.js │ │ │ ├── index.html │ │ │ └── logo.png │ │ └── 12.webp │ └── readme.jpg ├── scripts │ └── copy-projects.js ├── src │ ├── components │ │ ├── Footer.astro │ │ ├── GitHubStar.astro │ │ ├── Header.astro │ │ ├── Hero.astro │ │ ├── InfoProject.astro │ │ └── Projects.astro │ ├── consts.js │ ├── env.d.ts │ ├── layouts │ │ └── Layout.astro │ └── pages │ │ ├── [project].astro │ │ └── index.astro ├── tailwind.config.mjs └── tsconfig.json └── xx-dice └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | web/dist -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/.vscode/extensions.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/.vscode/settings.json -------------------------------------------------------------------------------- /01-tinder-swipe/iphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/01-tinder-swipe/iphone.webp -------------------------------------------------------------------------------- /01-tinder-swipe/photos/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/01-tinder-swipe/photos/1.webp -------------------------------------------------------------------------------- /01-tinder-swipe/photos/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/01-tinder-swipe/photos/2.webp -------------------------------------------------------------------------------- /01-tinder-swipe/tinder-icons.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/01-tinder-swipe/tinder-icons.webp -------------------------------------------------------------------------------- /01-tinder-swipe/tinder-logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/01-tinder-swipe/tinder-logo.webp -------------------------------------------------------------------------------- /02-arkanoid-game/bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/02-arkanoid-game/bkg.png -------------------------------------------------------------------------------- /02-arkanoid-game/bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/02-arkanoid-game/bricks.png -------------------------------------------------------------------------------- /02-arkanoid-game/index.html: -------------------------------------------------------------------------------- 1 | Arkanoid en JavaScript 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /02-arkanoid-game/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/02-arkanoid-game/sprite.png -------------------------------------------------------------------------------- /03-midu-typing-game/data.js: -------------------------------------------------------------------------------- 1 | export const words = [ 2 | "a", 3 | "again", 4 | "all", 5 | "also", 6 | "and", 7 | "another", 8 | "any", 9 | "around", 10 | "as", 11 | "ask", 12 | "at", 13 | "back", 14 | "because", 15 | "become", 16 | "before", 17 | "begin", 18 | "both", 19 | "but", 20 | "by", 21 | "call", 22 | "can", 23 | "change", 24 | "child", 25 | "come", 26 | "could", 27 | "course", 28 | "day", 29 | "develop", 30 | "each", 31 | "early", 32 | "end", 33 | "even", 34 | "eye", 35 | "face", 36 | "fact", 37 | "few", 38 | "first", 39 | "follow", 40 | "from", 41 | "general", 42 | "get", 43 | "give", 44 | "good", 45 | "govern", 46 | "group", 47 | "hand", 48 | "have", 49 | "he", 50 | "head", 51 | "help", 52 | "here", 53 | "high", 54 | "hold", 55 | "home", 56 | "how", 57 | "however", 58 | "if", 59 | "increase", 60 | "interest", 61 | "it", 62 | "know", 63 | "large", 64 | "last", 65 | "lead", 66 | "leave", 67 | "life", 68 | "like", 69 | "line", 70 | "little", 71 | "look", 72 | "make", 73 | "man", 74 | "may", 75 | "mean", 76 | "might", 77 | "more", 78 | "must", 79 | "need", 80 | "never", 81 | "new", 82 | "no", 83 | "now", 84 | "number", 85 | "of", 86 | "off", 87 | "old", 88 | "on", 89 | "one", 90 | "open", 91 | "or", 92 | "order", 93 | "out", 94 | "over", 95 | "own", 96 | "part", 97 | "people", 98 | "person", 99 | "place", 100 | "plan", 101 | "play", 102 | "point", 103 | "possible", 104 | "present", 105 | "problem", 106 | "program", 107 | "public", 108 | "real", 109 | "right", 110 | "run", 111 | "say", 112 | "see", 113 | "seem", 114 | "show", 115 | "small", 116 | "some", 117 | "stand", 118 | "state", 119 | "still", 120 | "such", 121 | "system", 122 | "take", 123 | "than", 124 | "that", 125 | "the", 126 | "then", 127 | "there", 128 | "these", 129 | "they", 130 | "thing", 131 | "think", 132 | "this", 133 | "those", 134 | "time", 135 | "to", 136 | "under", 137 | "up", 138 | "use", 139 | "very", 140 | "way", 141 | "what", 142 | "when", 143 | "where", 144 | "while", 145 | "will", 146 | "with", 147 | "without", 148 | "work", 149 | "world", 150 | "would", 151 | "write", 152 | "you", 153 | "she", 154 | "set", 155 | "we", 156 | "long", 157 | "in", 158 | "many", 159 | "do", 160 | "after", 161 | "which", 162 | "so", 163 | "same", 164 | "other", 165 | "house", 166 | "during", 167 | "much", 168 | "just", 169 | "consider", 170 | "since", 171 | "should", 172 | "only", 173 | "tell", 174 | "about" 175 | ] -------------------------------------------------------------------------------- /04-chatgpt-local/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ChatGPT Local 100% privado, gratis y maravilloso 8 | 9 | 168 | 169 | 274 | 275 | 276 | 277 |
278 | 285 |
286 | 287 |
288 | 289 | 290 |
291 | 292 |   293 | 294 | 300 | 301 | 302 | 303 | -------------------------------------------------------------------------------- /04-chatgpt-local/worker.js: -------------------------------------------------------------------------------- 1 | import { WebWorkerMLCEngineHandler } from "https://cdn.jsdelivr.net/npm/@mlc-ai/web-llm@0.2.46/+esm" 2 | 3 | const handler = new WebWorkerMLCEngineHandler() 4 | 5 | self.onmessage = (msg) => { 6 | handler.onmessage(msg) 7 | } -------------------------------------------------------------------------------- /05-api-geo-ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | IP Geolocation 9 | 10 | 51 | 52 | 53 | 54 | 55 | 56 |
57 |
58 | 63 | 64 | 67 | 68 |
69 | 70 |
71 |

72 |     
73 |
74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /08-excel-js/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Excel.js 8 | 81 | 261 | 262 | 263 | 264 | 266 | 267 | 268 | 269 | 270 |
271 | 272 | 273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /09-paint-win-95/cursors/erase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/cursors/erase.png -------------------------------------------------------------------------------- /09-paint-win-95/cursors/picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/cursors/picker.png -------------------------------------------------------------------------------- /09-paint-win-95/cursors/pincel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/cursors/pincel.png -------------------------------------------------------------------------------- /09-paint-win-95/cursors/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/cursors/point.png -------------------------------------------------------------------------------- /09-paint-win-95/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icon.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/clear.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/draw.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/ellipse.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/erase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/erase.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/fill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/fill.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/picker.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/rectangle.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/save.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/star.png -------------------------------------------------------------------------------- /09-paint-win-95/icons/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/09-paint-win-95/icons/trash.png -------------------------------------------------------------------------------- /10-stack-game/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 - Stack Game 8 | 27 | 28 | 258 | 259 | 260 | 261 | Puntuación: 0 262 | 263 | 264 | 265 | -------------------------------------------------------------------------------- /11-js-perf-benchmark/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 - JS Perf Benchmark 8 | 150 | 151 | 229 | 230 | 231 | 232 |
233 |
234 |

Global

235 | 236 | 237 | 238 |

Test cases

239 |
240 |
241 |
242 | 1 243 | 244 |
245 | 246 | 247 |
248 | 249 |
250 |
251 | 2 252 | 253 |
254 | 255 | 256 |
257 | 258 |
259 |
260 | 3 261 | 262 |
263 | 264 | 265 |
266 | 267 |
268 |
269 | 4 270 | 271 |
272 | 273 | 274 |
275 |
276 | 277 | 278 | 279 |
280 | 295 |
296 | 297 | 298 | -------------------------------------------------------------------------------- /11-js-perf-benchmark/worker.js: -------------------------------------------------------------------------------- 1 | onmessage = async event => { 2 | const { code, data, duration } = event.data 3 | 4 | let result 5 | try { 6 | result = await eval(`(async () => { 7 | let PERF__ops = 0; 8 | let PERF__start = Date.now(); 9 | let PERF__end = Date.now() + ${duration}; 10 | ${data}; 11 | 12 | while (Date.now() < PERF__end) { 13 | ${code}; 14 | PERF__ops++; 15 | } 16 | return PERF__ops 17 | })()`) 18 | } catch (error) { 19 | console.log(error) 20 | result = 0 21 | } 22 | 23 | postMessage(result) 24 | } -------------------------------------------------------------------------------- /12-moto-scroll/frames/0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/0.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-001.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-001.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-002.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-002.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-003.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-003.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-004.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-004.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-005.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-005.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-006.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-006.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-007.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-007.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-008.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-008.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-009.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-009.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-010.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-010.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-011.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-011.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-012.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-012.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-013.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-013.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-014.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-014.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-015.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-015.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-016.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-016.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-017.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-017.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-018.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-018.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-019.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-019.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-020.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-020.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-021.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-021.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-022.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-022.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-023.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-023.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-024.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-024.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-025.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-025.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-026.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-026.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-027.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-027.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-028.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-028.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-029.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-029.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-030.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-030.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-031.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-031.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-032.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-032.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-033.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-033.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-034.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-034.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-035.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-035.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-036.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-036.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-037.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-037.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-038.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-038.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-039.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-039.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-040.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-040.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-041.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-041.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-042.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-042.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-043.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-043.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-044.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-044.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-045.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-045.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-046.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-046.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-047.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-047.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-048.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-048.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-049.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-049.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-050.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-050.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-051.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-051.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-052.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-052.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-053.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-053.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-054.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-054.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-055.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-055.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-056.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-056.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-057.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-057.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-058.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-058.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-059.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-059.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-060.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-060.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-061.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-061.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-062.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-062.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-063.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-063.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-064.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-064.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-065.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-065.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-066.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-066.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-067.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-067.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-068.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-068.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-069.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-069.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-070.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-070.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-071.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-071.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-072.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-072.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-073.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-073.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-074.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-074.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-075.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-075.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-076.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-076.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-077.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-077.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-078.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-078.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-079.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-079.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-080.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-080.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-081.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-081.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-082.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-082.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-083.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-083.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-084.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-084.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-085.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-085.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-086.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-086.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-087.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-087.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-088.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-088.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-089.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-089.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-090.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-090.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-091.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-091.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-092.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-092.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-093.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-093.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-094.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-094.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-095.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-095.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-096.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-096.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-097.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-097.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-098.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-098.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-099.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-099.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-100.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-100.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-101.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-101.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-102.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-102.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-103.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-103.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-104.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-104.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-105.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-105.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-106.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-106.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-107.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-107.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-108.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-108.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-109.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-109.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-110.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-110.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-111.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-111.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-112.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-112.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-113.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-113.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-114.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-114.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-115.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-115.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-116.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-116.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-117.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-117.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-118.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-118.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-119.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-119.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-120.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-120.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-121.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-121.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-122.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-122.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-123.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-123.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-124.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-124.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-125.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-125.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-126.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-126.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-127.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-127.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-128.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-128.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-129.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-129.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-130.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-130.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-131.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-131.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-132.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-132.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-133.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-133.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-134.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-134.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-135.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-135.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-136.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-136.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-137.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-137.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-138.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-138.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-139.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-139.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-140.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-140.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-141.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-141.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-142.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-142.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-143.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-143.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-144.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-144.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-145.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-145.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-146.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-146.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-147.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-147.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-148.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-148.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-149.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-149.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-150.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-150.webp -------------------------------------------------------------------------------- /12-moto-scroll/frames/moto-151.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/frames/moto-151.webp -------------------------------------------------------------------------------- /12-moto-scroll/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 🏍️ Moto Scroll 8 | 66 | 67 | 114 | 115 | 116 | 117 |
118 |
119 | Ichiban - Your Way to Freedom 120 |
121 |
122 | 123 | 124 | -------------------------------------------------------------------------------- /12-moto-scroll/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/12-moto-scroll/logo.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |

6 | 100 proyectos de JavaScript con código y vídeos 7 |

8 |
9 | 10 |
11 | 12 | Website 13 | 14 |  ❖  15 | 16 | Proyectos 17 | 18 |  ❖  19 | 20 | Contribuir 21 | 22 |  ❖  23 | 24 | YouTube 25 | 26 |  ❖  27 | 28 | Twitter 29 | 30 |  ❖  31 | 32 | Twitch 33 | 34 |
35 | 36 |

37 | 38 |
39 | 40 | ![JavaScript Badge](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=000&style=flat) 41 | ![GitHub stars](https://img.shields.io/github/stars/midudev/javascript-100-proyectos) 42 | ![GitHub issues](https://img.shields.io/github/issues/midudev/javascript-100-proyectos) 43 | ![GitHub forks](https://img.shields.io/github/forks/midudev/javascript-100-proyectos) 44 | ![GitHub PRs](https://img.shields.io/github/issues-pr/midudev/javascript-100-proyectos) 45 | ![Astro Badge](https://img.shields.io/badge/Astro-BC52EE?logo=astro&logoColor=fff&style=flat) 46 | 47 |
48 | 49 | ## ✨ Proyectos 50 | 51 | | # | Proyecto | Descripción | Código | Website | 52 | | --- | ---------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | 53 | | 1 | **tinder-swipe** | Aprende a crear el efecto de swipe de Tinder con HTML, CSS y JavaScript. | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/01-tinder-swipe) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/01-tinder-swipe) | 54 | | 2 | **arkanoid-game** | Juego mítico y clásico de Arkanoid para controlar con teclado. | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/02-arkanoid-game) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/02-arkanoid-game) | 55 | | 3 | **mecanografía** | Pon a prueba a qué velocidad tecleas | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/03-midu-typing-game) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/03-midu-typing-game) | 56 | | 4 | **chatgpt-local** | Creamos un ChatGPT que se ejecuta en tu navegador. 100% privado y gratuito | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/04-chatgpt-local) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/04-chatgpt-local) | 57 | | 5 | **buscar-info-IP** | Llama a una api para obtener información de cualquier IP | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/05-api-geo-ip) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/05-api-geo-ip) | 58 | | 6 | **tetris-canvas** | Creamos el famoso juego tetris como desafío de una prueba técnica | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/06-tetris-canvas) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/06-tetris-canvas) | 59 | | 7 | **tier-maker** | Arrastra imágenes de cosas y ponlas en el nivel que creas | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/07-tier-maker) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/07-tier-maker) | 60 | | 8 | **excel-js** | Creamos una hoja de SpreadSheets editable | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/08-excel-js) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/08-excel-js) | 61 | | 9 | **paint-win-95** | El clásico editor de imágenes de Windows | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/09-paint-win-95) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/09-paint-win-95) | 62 | | 10 | **stack-game** | Stack Game en 2D | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/10-stack-game) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/10-stack-game) | 63 | | 11 | **js-perf-benchmark** | Benchmark con JS | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/11-js-perf-benchmark) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/11-js-perf-benchmark) | 64 | | 12 | **moto-scroll** | Animación de fondo por scroll | [![GitHub Badge](https://img.shields.io/badge/Código-181717?logo=github&logoColor=fff&style=flat-square)](https://github.com/midudev/javascript-100-proyectos/tree/main/12-moto-scroll) | [![Vercel Badge](https://img.shields.io/badge/Website-000?logo=vercel&logoColor=fff&style=flat-square)](https://www.javascript100.dev/12-moto-scroll) | 65 | 66 | ## 🚀 Contribuir 67 | 68 | ### **Introducción** 69 | 70 | 1. Para contribuir, crea un [Fork](https://github.com/midudev/javascript-100-proyectos/fork) del proyecto. 71 | 72 | 2. Clona el repositorio en tu máquina local: 73 | 74 | ```bash 75 | git clone git@github.com:tu_username/javascript-100-proyectos.git 76 | ``` 77 | 78 | ### **Proyectos** 79 | 80 | 1. Accede a la carpeta del proyecto que quieras: 81 | 82 | ```bash 83 | cd 01-tinder-swipe 84 | ``` 85 | 86 | 2. Instala la extensión [**Live Preview**](https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server) en Visual Studio Code. 87 | 88 | 3. Presiona `F1` y selecciona `Live Preview: Start Server`. 89 | 90 | Realiza los cambios y crea una pull request 🚀. 91 | 92 | ### **Sitio web** 93 | 94 | - Para contribuir al sitio web es necesario tener [Node.js +18](https://nodejs.org/) instalado y [pnpm](https://pnpm.io/): 95 | 96 | ```bash 97 | npm install -g pnpm 98 | ``` 99 | 100 | 1. Instala las dependencias: 101 | 102 | ```bash 103 | cd web 104 | pnpm install 105 | ``` 106 | 107 | 2. Inicia el servidor de desarrollo: 108 | 109 | ```bash 110 | pnpm dev 111 | ``` 112 | 113 | Realiza los cambios y crea una pull request 🚀. 114 | 115 | ## 🛠️ Stack 116 | 117 | **Proyectos**: 118 | 119 | - HTML, CSS & Javascript. 120 | 121 | **Website**: 122 | 123 | - [**Astro**](https://astro.build/) - The web framework for content-driven websites. 124 | - [**Typescript**](https://www.typescriptlang.org/) - JavaScript with syntax for types. 125 | - [**Tailwind CSS**](https://tailwindcss.com/) - A utility-first CSS framework for rapidly building custom designs. 126 | - [**@midudev/tailwind-animations**](https://tailwindcss-animations.vercel.app) - Easy peasy animations for your Tailwind project. 127 | 128 | ## 👑 Contribuidores 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /web/.astro/content-assets.mjs: -------------------------------------------------------------------------------- 1 | export default new Map(); -------------------------------------------------------------------------------- /web/.astro/content-modules.mjs: -------------------------------------------------------------------------------- 1 | export default new Map(); -------------------------------------------------------------------------------- /web/.astro/content.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'astro:content' { 2 | export interface RenderResult { 3 | Content: import('astro/runtime/server/index.js').AstroComponentFactory; 4 | headings: import('astro').MarkdownHeading[]; 5 | remarkPluginFrontmatter: Record; 6 | } 7 | interface Render { 8 | '.md': Promise; 9 | } 10 | 11 | export interface RenderedContent { 12 | html: string; 13 | metadata?: { 14 | imagePaths: Array; 15 | [key: string]: unknown; 16 | }; 17 | } 18 | } 19 | 20 | declare module 'astro:content' { 21 | type Flatten = T extends { [K: string]: infer U } ? U : never; 22 | 23 | export type CollectionKey = keyof AnyEntryMap; 24 | export type CollectionEntry = Flatten; 25 | 26 | export type ContentCollectionKey = keyof ContentEntryMap; 27 | export type DataCollectionKey = keyof DataEntryMap; 28 | 29 | type AllValuesOf = T extends any ? T[keyof T] : never; 30 | type ValidContentEntrySlug = AllValuesOf< 31 | ContentEntryMap[C] 32 | >['slug']; 33 | 34 | /** @deprecated Use `getEntry` instead. */ 35 | export function getEntryBySlug< 36 | C extends keyof ContentEntryMap, 37 | E extends ValidContentEntrySlug | (string & {}), 38 | >( 39 | collection: C, 40 | // Note that this has to accept a regular string too, for SSR 41 | entrySlug: E, 42 | ): E extends ValidContentEntrySlug 43 | ? Promise> 44 | : Promise | undefined>; 45 | 46 | /** @deprecated Use `getEntry` instead. */ 47 | export function getDataEntryById( 48 | collection: C, 49 | entryId: E, 50 | ): Promise>; 51 | 52 | export function getCollection>( 53 | collection: C, 54 | filter?: (entry: CollectionEntry) => entry is E, 55 | ): Promise; 56 | export function getCollection( 57 | collection: C, 58 | filter?: (entry: CollectionEntry) => unknown, 59 | ): Promise[]>; 60 | 61 | export function getEntry< 62 | C extends keyof ContentEntryMap, 63 | E extends ValidContentEntrySlug | (string & {}), 64 | >(entry: { 65 | collection: C; 66 | slug: E; 67 | }): E extends ValidContentEntrySlug 68 | ? Promise> 69 | : Promise | undefined>; 70 | export function getEntry< 71 | C extends keyof DataEntryMap, 72 | E extends keyof DataEntryMap[C] | (string & {}), 73 | >(entry: { 74 | collection: C; 75 | id: E; 76 | }): E extends keyof DataEntryMap[C] 77 | ? Promise 78 | : Promise | undefined>; 79 | export function getEntry< 80 | C extends keyof ContentEntryMap, 81 | E extends ValidContentEntrySlug | (string & {}), 82 | >( 83 | collection: C, 84 | slug: E, 85 | ): E extends ValidContentEntrySlug 86 | ? Promise> 87 | : Promise | undefined>; 88 | export function getEntry< 89 | C extends keyof DataEntryMap, 90 | E extends keyof DataEntryMap[C] | (string & {}), 91 | >( 92 | collection: C, 93 | id: E, 94 | ): E extends keyof DataEntryMap[C] 95 | ? string extends keyof DataEntryMap[C] 96 | ? Promise | undefined 97 | : Promise 98 | : Promise | undefined>; 99 | 100 | /** Resolve an array of entry references from the same collection */ 101 | export function getEntries( 102 | entries: { 103 | collection: C; 104 | slug: ValidContentEntrySlug; 105 | }[], 106 | ): Promise[]>; 107 | export function getEntries( 108 | entries: { 109 | collection: C; 110 | id: keyof DataEntryMap[C]; 111 | }[], 112 | ): Promise[]>; 113 | 114 | export function render( 115 | entry: AnyEntryMap[C][string], 116 | ): Promise; 117 | 118 | export function reference( 119 | collection: C, 120 | ): import('astro/zod').ZodEffects< 121 | import('astro/zod').ZodString, 122 | C extends keyof ContentEntryMap 123 | ? { 124 | collection: C; 125 | slug: ValidContentEntrySlug; 126 | } 127 | : { 128 | collection: C; 129 | id: keyof DataEntryMap[C]; 130 | } 131 | >; 132 | // Allow generic `string` to avoid excessive type errors in the config 133 | // if `dev` is not running to update as you edit. 134 | // Invalid collection names will be caught at build time. 135 | export function reference( 136 | collection: C, 137 | ): import('astro/zod').ZodEffects; 138 | 139 | type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; 140 | type InferEntrySchema = import('astro/zod').infer< 141 | ReturnTypeOrOriginal['schema']> 142 | >; 143 | 144 | type ContentEntryMap = { 145 | 146 | }; 147 | 148 | type DataEntryMap = { 149 | 150 | }; 151 | 152 | type AnyEntryMap = ContentEntryMap & DataEntryMap; 153 | 154 | export type ContentConfig = typeof import("../src/content.config.mjs"); 155 | } 156 | -------------------------------------------------------------------------------- /web/.astro/data-store.json: -------------------------------------------------------------------------------- 1 | [["Map",1,2],"meta::meta",["Map",3,4],"astro-version","5.0.5"] -------------------------------------------------------------------------------- /web/.astro/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "_variables": { 3 | "lastUpdateCheck": 1733944381251 4 | } 5 | } -------------------------------------------------------------------------------- /web/.astro/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # Astro Starter Kit: Basics 2 | 3 | ```sh 4 | npm create astro@latest -- --template basics 5 | ``` 6 | 7 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics) 8 | [![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics) 9 | [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json) 10 | 11 | > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 12 | 13 | ![just-the-basics](https://github.com/withastro/astro/assets/2244813/a0a5533c-a856-4198-8470-2d67b1d7c554) 14 | 15 | ## 🚀 Project Structure 16 | 17 | Inside of your Astro project, you'll see the following folders and files: 18 | 19 | ```text 20 | / 21 | ├── public/ 22 | │ └── favicon.svg 23 | ├── src/ 24 | │ ├── components/ 25 | │ │ └── Card.astro 26 | │ ├── layouts/ 27 | │ │ └── Layout.astro 28 | │ └── pages/ 29 | │ └── index.astro 30 | └── package.json 31 | ``` 32 | 33 | Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 34 | 35 | There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. 36 | 37 | Any static assets, like images, can be placed in the `public/` directory. 38 | 39 | ## 🧞 Commands 40 | 41 | All commands are run from the root of the project, from a terminal: 42 | 43 | | Command | Action | 44 | | :------------------------ | :----------------------------------------------- | 45 | | `npm install` | Installs dependencies | 46 | | `npm run dev` | Starts local dev server at `localhost:4321` | 47 | | `npm run build` | Build your production site to `./dist/` | 48 | | `npm run preview` | Preview your build locally, before deploying | 49 | | `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | 50 | | `npm run astro -- --help` | Get help using the Astro CLI | 51 | 52 | ## 👀 Want to learn more? 53 | 54 | Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). 55 | -------------------------------------------------------------------------------- /web/astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'astro/config'; 2 | 3 | import tailwind from "@astrojs/tailwind"; 4 | 5 | // https://astro.build/config 6 | export default defineConfig({ 7 | integrations: [tailwind()] 8 | }); -------------------------------------------------------------------------------- /web/bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/bun.lockb -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-100-web", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "prepare": "node ./scripts/copy-projects.js", 7 | "dev": "astro dev", 8 | "start": "astro dev", 9 | "build": "astro check && astro build", 10 | "preview": "astro preview", 11 | "astro": "astro" 12 | }, 13 | "dependencies": { 14 | "@astrojs/check": "0.9.4", 15 | "@astrojs/tailwind": "5.1.3", 16 | "@midudev/tailwind-animations": "0.1.0", 17 | "astro": "5.0.5", 18 | "tailwindcss": "3.4.16", 19 | "typescript": "5.7.2" 20 | } 21 | } -------------------------------------------------------------------------------- /web/public/favicon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /web/public/me-blue.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/me-blue.webp -------------------------------------------------------------------------------- /web/public/me.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/me.webp -------------------------------------------------------------------------------- /web/public/og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/og.jpg -------------------------------------------------------------------------------- /web/public/projects/01-tinder-swipe/iphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01-tinder-swipe/iphone.webp -------------------------------------------------------------------------------- /web/public/projects/01-tinder-swipe/photos/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01-tinder-swipe/photos/1.webp -------------------------------------------------------------------------------- /web/public/projects/01-tinder-swipe/photos/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01-tinder-swipe/photos/2.webp -------------------------------------------------------------------------------- /web/public/projects/01-tinder-swipe/tinder-icons.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01-tinder-swipe/tinder-icons.webp -------------------------------------------------------------------------------- /web/public/projects/01-tinder-swipe/tinder-logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01-tinder-swipe/tinder-logo.webp -------------------------------------------------------------------------------- /web/public/projects/01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/01.webp -------------------------------------------------------------------------------- /web/public/projects/02-arkanoid-game/bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/02-arkanoid-game/bkg.png -------------------------------------------------------------------------------- /web/public/projects/02-arkanoid-game/bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/02-arkanoid-game/bricks.png -------------------------------------------------------------------------------- /web/public/projects/02-arkanoid-game/index.html: -------------------------------------------------------------------------------- 1 | Arkanoid en JavaScript 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /web/public/projects/02-arkanoid-game/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/02-arkanoid-game/sprite.png -------------------------------------------------------------------------------- /web/public/projects/02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/02.webp -------------------------------------------------------------------------------- /web/public/projects/03-midu-typing-game/data.js: -------------------------------------------------------------------------------- 1 | export const words = [ 2 | "a", 3 | "again", 4 | "all", 5 | "also", 6 | "and", 7 | "another", 8 | "any", 9 | "around", 10 | "as", 11 | "ask", 12 | "at", 13 | "back", 14 | "because", 15 | "become", 16 | "before", 17 | "begin", 18 | "both", 19 | "but", 20 | "by", 21 | "call", 22 | "can", 23 | "change", 24 | "child", 25 | "come", 26 | "could", 27 | "course", 28 | "day", 29 | "develop", 30 | "each", 31 | "early", 32 | "end", 33 | "even", 34 | "eye", 35 | "face", 36 | "fact", 37 | "few", 38 | "first", 39 | "follow", 40 | "from", 41 | "general", 42 | "get", 43 | "give", 44 | "good", 45 | "govern", 46 | "group", 47 | "hand", 48 | "have", 49 | "he", 50 | "head", 51 | "help", 52 | "here", 53 | "high", 54 | "hold", 55 | "home", 56 | "how", 57 | "however", 58 | "if", 59 | "increase", 60 | "interest", 61 | "it", 62 | "know", 63 | "large", 64 | "last", 65 | "lead", 66 | "leave", 67 | "life", 68 | "like", 69 | "line", 70 | "little", 71 | "look", 72 | "make", 73 | "man", 74 | "may", 75 | "mean", 76 | "might", 77 | "more", 78 | "must", 79 | "need", 80 | "never", 81 | "new", 82 | "no", 83 | "now", 84 | "number", 85 | "of", 86 | "off", 87 | "old", 88 | "on", 89 | "one", 90 | "open", 91 | "or", 92 | "order", 93 | "out", 94 | "over", 95 | "own", 96 | "part", 97 | "people", 98 | "person", 99 | "place", 100 | "plan", 101 | "play", 102 | "point", 103 | "possible", 104 | "present", 105 | "problem", 106 | "program", 107 | "public", 108 | "real", 109 | "right", 110 | "run", 111 | "say", 112 | "see", 113 | "seem", 114 | "show", 115 | "small", 116 | "some", 117 | "stand", 118 | "state", 119 | "still", 120 | "such", 121 | "system", 122 | "take", 123 | "than", 124 | "that", 125 | "the", 126 | "then", 127 | "there", 128 | "these", 129 | "they", 130 | "thing", 131 | "think", 132 | "this", 133 | "those", 134 | "time", 135 | "to", 136 | "under", 137 | "up", 138 | "use", 139 | "very", 140 | "way", 141 | "what", 142 | "when", 143 | "where", 144 | "while", 145 | "will", 146 | "with", 147 | "without", 148 | "work", 149 | "world", 150 | "would", 151 | "write", 152 | "you", 153 | "she", 154 | "set", 155 | "we", 156 | "long", 157 | "in", 158 | "many", 159 | "do", 160 | "after", 161 | "which", 162 | "so", 163 | "same", 164 | "other", 165 | "house", 166 | "during", 167 | "much", 168 | "just", 169 | "consider", 170 | "since", 171 | "should", 172 | "only", 173 | "tell", 174 | "about" 175 | ] -------------------------------------------------------------------------------- /web/public/projects/03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/03.webp -------------------------------------------------------------------------------- /web/public/projects/04-chatgpt-local/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ChatGPT Local 100% privado, gratis y maravilloso 8 | 9 | 168 | 169 | 274 | 275 | 276 | 277 |
278 |
    279 |
  • 280 | 281 |

    Cargando...

    282 |
    Esto puede tardar un poco. Paciencia.
    283 |
  • 284 |
285 |
286 | 287 |
288 | 289 | 290 |
291 | 292 |   293 | 294 | 300 | 301 | 302 | 303 | -------------------------------------------------------------------------------- /web/public/projects/04-chatgpt-local/worker.js: -------------------------------------------------------------------------------- 1 | import { WebWorkerMLCEngineHandler } from "https://cdn.jsdelivr.net/npm/@mlc-ai/web-llm@0.2.46/+esm" 2 | 3 | const handler = new WebWorkerMLCEngineHandler() 4 | 5 | self.onmessage = (msg) => { 6 | handler.onmessage(msg) 7 | } -------------------------------------------------------------------------------- /web/public/projects/04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/04.webp -------------------------------------------------------------------------------- /web/public/projects/05-api-geo-ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | IP Geolocation 9 | 10 | 51 | 52 | 53 | 54 | 55 | 56 |
57 |
58 | 63 | 64 | 67 | 68 |
69 | 70 |
71 |

72 |     
73 |
74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /web/public/projects/05.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/05.webp -------------------------------------------------------------------------------- /web/public/projects/06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/06.webp -------------------------------------------------------------------------------- /web/public/projects/07.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/07.webp -------------------------------------------------------------------------------- /web/public/projects/08-excel-js/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Excel.js 8 | 81 | 261 | 262 | 263 | 264 | 266 | 267 | 268 | 269 | 270 |
271 | 272 | 273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /web/public/projects/08.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/08.webp -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/cursors/erase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/cursors/erase.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/cursors/picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/cursors/picker.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/cursors/pincel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/cursors/pincel.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/cursors/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/cursors/point.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icon.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/clear.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/draw.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/ellipse.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/erase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/erase.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/fill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/fill.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/picker.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/rectangle.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/save.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/star.png -------------------------------------------------------------------------------- /web/public/projects/09-paint-win-95/icons/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09-paint-win-95/icons/trash.png -------------------------------------------------------------------------------- /web/public/projects/09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/09.webp -------------------------------------------------------------------------------- /web/public/projects/10-stack-game/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 - Stack Game 8 | 27 | 28 | 258 | 259 | 260 | 261 | Puntuación: 0 262 | 263 | 264 | 265 | -------------------------------------------------------------------------------- /web/public/projects/10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/10.webp -------------------------------------------------------------------------------- /web/public/projects/11-js-perf-benchmark/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 - JS Perf Benchmark 8 | 150 | 151 | 229 | 230 | 231 | 232 |
233 |
234 |

Global

235 | 236 | 237 | 238 |

Test cases

239 |
240 |
241 |
242 | 1 243 | 244 |
245 | 246 | 247 |
248 | 249 |
250 |
251 | 2 252 | 253 |
254 | 255 | 256 |
257 | 258 |
259 |
260 | 3 261 | 262 |
263 | 264 | 265 |
266 | 267 |
268 |
269 | 4 270 | 271 |
272 | 273 | 274 |
275 |
276 | 277 | 278 | 279 |
280 | 295 |
296 | 297 | 298 | -------------------------------------------------------------------------------- /web/public/projects/11-js-perf-benchmark/worker.js: -------------------------------------------------------------------------------- 1 | onmessage = async event => { 2 | const { code, data, duration } = event.data 3 | 4 | let result 5 | try { 6 | result = await eval(`(async () => { 7 | let PERF__ops = 0; 8 | let PERF__start = Date.now(); 9 | let PERF__end = Date.now() + ${duration}; 10 | ${data}; 11 | 12 | while (Date.now() < PERF__end) { 13 | ${code}; 14 | PERF__ops++; 15 | } 16 | return PERF__ops 17 | })()`) 18 | } catch (error) { 19 | console.log(error) 20 | result = 0 21 | } 22 | 23 | postMessage(result) 24 | } -------------------------------------------------------------------------------- /web/public/projects/11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/11.webp -------------------------------------------------------------------------------- /web/public/projects/12-moto-scroll/frames/0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/12-moto-scroll/frames/0.webp -------------------------------------------------------------------------------- /web/public/projects/12-moto-scroll/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 🏍️ Moto Scroll 8 | 66 | 67 | 114 | 115 | 116 | 117 |
118 |
119 | Ichiban - Your Way to Freedom 120 |
121 |
122 | 123 | 124 | -------------------------------------------------------------------------------- /web/public/projects/12-moto-scroll/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/12-moto-scroll/logo.png -------------------------------------------------------------------------------- /web/public/projects/12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/projects/12.webp -------------------------------------------------------------------------------- /web/public/readme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/javascript-100-proyectos/c0027856d9263eede488d4263b5beb197a34a530/web/public/readme.jpg -------------------------------------------------------------------------------- /web/scripts/copy-projects.js: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs/promises' 2 | 3 | const files = await fs.readdir('../') 4 | 5 | const projects = files.filter(file => /^[0-9]/.test(file)) 6 | 7 | await Promise.all( 8 | projects.map( 9 | project => fs.cp(`../${project}`, `public/projects/${project}`, { recursive: true }) 10 | ) 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /web/src/components/Footer.astro: -------------------------------------------------------------------------------- 1 | 57 | 58 | librecounter 64 | -------------------------------------------------------------------------------- /web/src/components/GitHubStar.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const response = await fetch( 3 | "https://api.github.com/repos/midudev/javascript-100-proyectos" 4 | ) 5 | 6 | const data = await response.json() 7 | 8 | const starCounter = data.stargazers_count 9 | --- 10 | 11 | 50 | -------------------------------------------------------------------------------- /web/src/components/Header.astro: -------------------------------------------------------------------------------- 1 |
4 |

5 | 6 | 100 10 | proyectos 13 | 14 | 15 | 16 | 23 | 24 | 27 | 28 | 29 |

30 |
31 | -------------------------------------------------------------------------------- /web/src/components/Hero.astro: -------------------------------------------------------------------------------- 1 |
2 | 84 |
85 | -------------------------------------------------------------------------------- /web/src/components/InfoProject.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const { info } = Astro.props 3 | const { theme = {} } = info 4 | const { isDark = false } = theme 5 | --- 6 | 7 | 57 | -------------------------------------------------------------------------------- /web/src/components/Projects.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { PROJECTS } from "../consts" 3 | 4 | const finalProjects = PROJECTS.filter((project) => !project.hidden) 5 | .slice() 6 | .reverse() 7 | --- 8 | 9 |
12 | 41 | { 42 | finalProjects.map((project, reversedIndex) => { 43 | const index = finalProjects.length - reversedIndex - 1 44 | const num = `${index + 1}`.padStart(2, "0") 45 | 46 | return ( 47 | 159 | ) 160 | }) 161 | } 162 |
163 | -------------------------------------------------------------------------------- /web/src/consts.js: -------------------------------------------------------------------------------- 1 | export const PROJECTS = [ 2 | { 3 | slug: "01-tinder-swipe", 4 | title: "Tinder Swipe", 5 | hidden: false, 6 | description: 7 | "Aprende a crear el efecto de swipe de Tinder con HTML, CSS y JavaScript.", 8 | learnings: [ 9 | "DOM", 10 | "Animaciones con gestos", 11 | "Eventos de mouse y touch", 12 | "Transiciones CSS", 13 | ], 14 | youtube: 'https://www.youtube.com/watch?v=u01WD_YNENY' 15 | }, 16 | { 17 | slug: "02-arkanoid-game", 18 | title: "Arkanoid Game", 19 | description: 20 | "Juego mítico y clásico de Arkanoid para controlar con teclado", 21 | learnings: [ 22 | "Dibujar en Canvas", 23 | "Eventos de teclado", 24 | "RequestAnimationFrame", 25 | "Sprites" 26 | ], 27 | youtube: 'https://www.youtube.com/watch?v=b6du6MvQmuQ' 28 | }, 29 | { 30 | slug: "03-midu-typing-game", 31 | title: "Reto de Mecanografía", 32 | description: "Pon a prueba tus habilidades de mecanografía con este reto", 33 | learnings: [ 34 | "DOM", 35 | "Eventos de teclado", 36 | "Manejo de clases", 37 | "Optimización selectores" 38 | ], 39 | theme: { 40 | isDark: true 41 | }, 42 | youtube: 'https://www.youtube.com/watch?v=157qVlTelOg' 43 | }, 44 | { 45 | slug: "04-chatgpt-local", 46 | title: "ChatGPT local", 47 | description: "Usa IA de forma local y gratis. 100% privacidad.", 48 | learnings: [ 49 | "Web Workers", 50 | "IA", 51 | "ESModules" 52 | ], 53 | theme: { 54 | isDark: false 55 | }, 56 | youtube: "https://www.youtube.com/watch?v=HvoiF1MCPGs" 57 | }, 58 | { 59 | slug: "05-api-geo-ip", 60 | title: "Buscar info de IP", 61 | description: "Llama a una API para obtener información de cualquier IP y muestra la información en pantalla", 62 | learnings: [ 63 | "Fetch API", 64 | "Formularios", 65 | "Asincronía" 66 | ], 67 | theme: { 68 | isDark: true 69 | }, 70 | youtube: "https://www.youtube.com/watch?v=6AMKwVcpYTk" 71 | }, 72 | { 73 | slug: "06-tetris-canvas", 74 | title: "Tetris en Canvas", 75 | description: "Resolvemos una prueba técnica que te propone crear el Tetris en 40 minutos", 76 | learnings: [ 77 | "Canvas", 78 | "Eventos de teclado", 79 | "Lógica de programación" 80 | ], 81 | theme: { 82 | isDark: true 83 | }, 84 | youtube: "https://www.youtube.com/watch?v=pNiyz0sl1no" 85 | }, 86 | { 87 | slug: "07-tier-maker", 88 | title: "Tier Maker", 89 | description: "Arrastra y suelta las imágenes para crear tus propias listas de niveles", 90 | learnings: [ 91 | "Drag & Drop", 92 | "Input de imágenes", 93 | "CSS Custom Properties" 94 | ], 95 | theme: { 96 | isDark: true 97 | }, 98 | youtube: 'https://www.youtube.com/watch?v=LPzG0PnOzgA' 99 | }, 100 | { 101 | slug: "08-excel-js", 102 | title: "Hojas de cálculo", 103 | description: "Crea tu propio Excel sin dependencias y funcional", 104 | learnings: [ 105 | "Tablas", 106 | "Eventos de Input: focus y blur", 107 | "Eval" 108 | ], 109 | theme: { 110 | isDark: false 111 | }, 112 | youtube: 'https://www.youtube.com/watch?v=z5CRFM2SlUU' 113 | }, 114 | { 115 | slug: "09-paint-win-95", 116 | title: "Paint con Canvas", 117 | description: "Crea un editor de imágenes clásico con ", 118 | learnings: [ 119 | "Grid Area", 120 | "Canvas", 121 | "EyeDropper API" 122 | ], 123 | theme: { 124 | isDark: true 125 | }, 126 | youtube: 'https://www.youtube.com/watch?v=-0UYMmplimA' 127 | }, 128 | { 129 | slug: "10-stack-game", 130 | title: "Stack Game", 131 | description: "Juego donde hay que apilar las piezas verticalmente", 132 | learnings: [ 133 | "Canvas", 134 | "Lógica de programación", 135 | "Eventos de teclado" 136 | ], 137 | theme: { 138 | isDark: true 139 | }, 140 | youtube: 'https://www.youtube.com/watch?v=IEwL-TZBeqQ' 141 | }, 142 | { 143 | slug: "11-js-perf-benchmark", 144 | title: "JS Perf Benchmark", 145 | description: "App para revisar el rendimiento de tu código JavaScript", 146 | learnings: [ 147 | "Web Workers", 148 | "Eval", 149 | "Promises" 150 | ], 151 | theme: { 152 | isDark: true 153 | }, 154 | youtube: 'https://www.youtube.com/watch?v=VuOcLnzhbDw' 155 | }, 156 | { 157 | slug: "12-moto-scroll", 158 | title: "Animación por Scroll", 159 | description: "Anima el fondo de una web a través del scroll", 160 | learnings: [ 161 | "Scroll", 162 | "Animaciones", 163 | "Performance" 164 | ], 165 | theme: { 166 | isDark: true 167 | }, 168 | youtube: 'https://www.youtube.com/watch?v=8EA-WNFMYwI' 169 | }, 170 | ] -------------------------------------------------------------------------------- /web/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /web/src/layouts/Layout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { ViewTransitions } from "astro:transitions" 3 | 4 | interface Props { 5 | title: string 6 | } 7 | 8 | const { title } = Astro.props 9 | const description = 10 | "Proyectos prácticos para aprender JavaScript con código fuente y vídeo. Totalmente gratis." 11 | --- 12 | 13 | 14 | 15 | 16 | {title} 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /web/src/pages/[project].astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { PROJECTS } from "../consts" 3 | import InfoProject from "../components/InfoProject.astro" 4 | import Layout from "../layouts/Layout.astro" 5 | 6 | export function getStaticPaths() { 7 | return PROJECTS.map((project) => { 8 | return { 9 | params: { 10 | project: project.slug, 11 | }, 12 | } 13 | }) 14 | } 15 | 16 | const { project } = Astro.params 17 | const index = PROJECTS.findIndex((p) => p.slug === project) 18 | const info = PROJECTS[index] 19 | const number = `${index + 1}`.padStart(2, "0") 20 | --- 21 | 22 | 23 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /web/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Layout from "../layouts/Layout.astro" 3 | import Header from "../components/Header.astro" 4 | import Hero from "../components/Hero.astro" 5 | import Projects from "../components/Projects.astro" 6 | import Footer from "../components/Footer.astro" 7 | import GitHubStar from "../components/GitHubStar.astro" 8 | --- 9 | 10 | 11 |
14 |
17 |
20 |
21 |
22 | 23 |
24 | 25 | 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /web/tailwind.config.mjs: -------------------------------------------------------------------------------- 1 | import animations from '@midudev/tailwind-animations' 2 | 3 | /** @type {import('tailwindcss').Config} */ 4 | export default { 5 | content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], 6 | theme: { 7 | extend: {}, 8 | }, 9 | plugins: [animations], 10 | } 11 | -------------------------------------------------------------------------------- /web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict" 3 | } -------------------------------------------------------------------------------- /xx-dice/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Dado 3D 8 | 79 | 80 | 116 | 117 | 118 | 119 |
120 |
121 |
1
122 |
6
123 |
3
124 |
4
125 |
5
126 |
2
127 |
128 |
129 | 130 | 131 | 132 | --------------------------------------------------------------------------------