Giter VIP home page Giter VIP logo

100days100proyects's Introduction

💻Devathon


En este desafío harémos un proyecto de software todos los días para mejorar nuestras habilidades técnicas como desarrolladores BACKEND y FRONTEND, lograrémos estos objetivos practicando todos los días porque la práctica hace al maestro.


Important

Si quieres añadir un reto a los proyectos abre un issue con el titulo del proyecto y las especificaciones del mismo Es importante que coloques bien los requisitos para saber en que número lo colocamos



Usaremos estas tecnologías 👇

Binary Brains Club?

Binary Brains es un club de desarrollo de software que se dedica a proporcionar un entorno propicio para el crecimiento profesional de los entusiastas del desarrollo de software. Su misión abarca la creación de un ambiente seguro y respetuoso que valore a todos los miembros en su viaje de aprendizaje, ofreciendo recursos de alta calidad, capacitación y tutoría para mejorar habilidades técnicas, fomentar la innovación y promover la participación activa en eventos colaborativos.


Además, el club busca inculcar valores de integridad, ética y responsabilidad en la tecnología, inspirando a sus miembros a alcanzar metas sobresalientes en sus carreras y contribuir al avance de la tecnología, destacando el compromiso con la excelencia y el constante deseo de superar desafíos en busca de nuevos horizontes tecnológicos.



Usaremos este repositorio para enseñar desarrollo de software en el club Binary Brains , se seguirá esta ruta y para practicar realizarán los proyectos.


Tablas de contenidos

Tip

Te recomiendo que revises los recursos adicionales para complementar los temas vistos de cada bloque
También revisa nuestra misión y visión , junto con nuestro código de conducta

Fundamentos


1. Internet 🌐

Objetivos:
  • Identificar los elementos clave que constituyen la infraestructura de Internet.
  • Explorar cómo los datos se transmiten a través de la red global.
  • Familiarizarse con el protocolo HTTP y su importancia en la comunicación web.
  • Explorar la diversidad de servidores web y sus características distintivas.
Temario:
 1.1 ¿Como funciona el internet?
 1.2 Protocolos HTTP 
 1.3 Servidores 
 1.4 Browser 
 1.5 Host 

2. Git ⬆

Objetivos:
  • Comprender la importancia de un gestor de versiones: Reconocer las ventajas de utilizar un sistema de control de versiones como Git.
  • Instalación de GIT: El alumno deberá de saber instalar git y configurarlo correctamente para su funcionamiento.
  • Comandos básicos: El alumno debe de conocer los comandos básicos para el manejo correcto de un gestor de versiones.
  • Trabajando en equipo: Saber trabajar en equipo con uso de ramas y PR's para poder realizar diferentes funcionalidades a la vez.
Temario:
  2.1 Gestor de versiones
  2.2 Instalango GIT
    2.2.1 Configuración de GIT
    2.2.2 Claves SSH
    2.2.3 Conectando con Github
      2.2.3.1 Personalizando tu perfil de Github
  2.3 Comandos básicos
    2.3.1 git init 
    2.3.2 git status 
    2.3.3 git add 
    2.3.4 git commit 
    2.3.5 git log 
    2.3.6 git checkout
  2.4 Fichero .gitignore
  2.5 Trabajando con ramas
    2.5.1 git checkout -b
    2.5.2 git branch 
    2.5.3 git checkout
    2.5.4 git rebase
    2.5.5 git merge 
    2.5.6
  2.6 Pull Request
    2.6.1 git push
    2.6.2 git pull
    2.6.3 Creando una pull request

Back to top 🔼

Empezando con web


3. HTML Básico 🏗️

Objetivos:
  • Identificar y aplicar la sintaxis básica de HTML, incluyendo etiquetas de apertura y cierre.
  • Diferenciar entre elementos, atributos y valores en el contexto de HTML.
  • Comprender el propósito y la aplicación de estas etiquetas en la estructura de una página web.
  • Definir qué es el doctype y su papel en la declaración del tipo de documento.
  • Conocer los principios fundamentales de la accesibilidad web.
  • Comprender los conceptos básicos de SEO y su relevancia para la visibilidad en los motores de búsqueda.
  • Organizar el contenido de la página de manera clara y efectiva para facilitar la navegación.
Temario:
  3.1 Básicos de HTML
      3.1.1 ¿Qué es HTML?
      3.1.2 Etiquetas básicas
      3.1.3 Elementos, atributos y valores
      3.1.4 ¿Qué es el DOCTYPE?
  3.2 Accesibilidad
      3.2.1 Importancia de la accesibilidad web
      3.2.2 Atributos de accesibilidad
      3.2.3 Voice browser para la accesibilidad
  3.3 Encontrabilidad
      3.3.1 ¿Qué es UX/UI?
      3.3.2 Principios del UX/UI
      3.3.3 ¿Qué es la encontrabilidad?
      3.3.4 Ejemplo práctico de encontrabilidad
  3.4 SEO
      3.4.1 ¿Qué es el SEO?
      3.4.2 ¿Cómo funciona el SEO?
      3.4.3 Implementando el SEO en el HTML

4. CSS3 Básico 🎨

Objetivos:
  • Identificar y aplicar la sintaxis básica de CSS, incluyendo reglas, propiedades y valores.
  • Comprender cómo enlazar hojas de estilo externas e internas.
  • Aplicar el selector universal y selectores básicos como elemento, clase e ID.
  • Comprender cómo afectan estos selectores a los elementos en una página.
  • Comprender el concepto del box model y sus componentes: margen, borde, relleno y contenido.
  • Comprender los conceptos básicos de Flexbox y Grid.
  • Utilizar Flexbox para crear diseños flexibles y alinear elementos en un contenedor.
  • Entender las propiedades de position, como static, relative, absolute y fixed.
Temario:
  4.1 Básicos de CSS
      4.1.1 ¿Qué es CSS?
      4.1.2 Agregando una hoja de estilos a tu web
      4.1.3 Sintaxis básica
  4.2 Selectores
      4.2.1 Para que sirven los selectores
      4.2.2 El selector universal
      4.2.3 Tipos de selectores
  4.3 Box model
      4.3.1 ¿Qué es el box model?
      4.3.2 Elementos del box model
      4.3.3 Posicionando elementos
  4.4 Flex y Grid
      4.4.1 ¿Qué es flex?
      4.4.2 ¿Qué es Grid?
      4.4.3 ¿Cuándo utilizar flex y cuando grid?
      4.4.4 Centrando un div
  4.5 Position
      4.5.1 Propiedades 
      4.5.2 Absolute vs Relative
      4.5.3 Centrando un div

Proyectos 💻

5. Java SE 11 ☕

Bloque 1

Objetivos de clase:
  • Comprender el concepto de Java y su posición en el entorno de desarrollo; Maquina virtual, compilador y lenguaje
  • Versiones de Java: Identificar las ediciones de java, centrandoce en las diferencias entre Java SE y Java EE
  • Conocer las versiones de JDK: Diferencias entre las versiones LTS y no LTS y comprender su impacto en el desarrollo
  • Comprender los paquetes de Java: Familiarizarse con el concepto de paquetes en Java y su papel en la organización de código
  • Entender como ejecutar correctamente una aplicación de Java
  • Comprender el concepto de variables: Saber identificar que es una variable y su función en el almacenamiento de datos, saber con que tipo de datos trabaja Java por defecto y como aplicar técnicas de casting
  • Manejar operaciones de Java: Conocer los diferentes operadores de Java y como aplicarlos a diferentes tipos de datos.
Temario:
    5.1 Java como entorno de desarrollo
        5.1.1 ¿Qué es Java?
        5.1.2 Java como lenguaje interpretado y compilado
        5.1.3 Qué es la máquina virtual de Java
        5.1.4 Ediciones de Java: Java SE y Java EE
        5.1.5 versiones de JDK LTS y no LTS
    5.2 Básicos de Java
        5.2.1 Paquetes
        5.2.2 Método Main
        5.2.3 Comentarios y documentación con Javadoc
        5.2.4 Variables
            5.2.4.1 Tipos de datos
            5.2.4.2 Constantes
            5.2.4.3 Literales
            5.2.4.4 Sistemas numéricos
            5.2.4.5 Casting
        5.2.5 Operadores
            5.2.5.1 Aritméticos
            5.2.5.2 Asignación
            5.2.5.3 Incremento y decremento
            5.2.5.4 Relacionales
            5.2.5.5 Booleanos
            5.2.5.6 Booleanos con valores no booleanos

Bloque 2

Objetivos:
  • Comprender que es la Programación Orientada a Objetos: Conocer los principios fundamentales de la Programación Orientada a Objetos: Clases, Objetos, Encapsulamiento, Polimorfismo.
  • Diferenciar entre instancia y clase: Que es lo que ocurre cuando creas un objeto
  • Saber que es el encapsulamiento: Saber como aplicar encapsulamiento y comprender su importancia del mismo.
  • Saber como aplicar Polimorfismo: Comprender la herencia como mecanismo de POO, distinguir entre this y super y explirar la sobreescritura y sobrecarga de métodos como método de polimorfismo.
    5.3 Introducción a Programación orientada a objetoss
        5.3.1 Que es la programación orientada a objetos
        5.3.2 Clases y Objetos
        5.3.3 Métodos y Atributos
        5.3.4 Referencias a objetos (Instancias)
        5.3.5 `this`y estándares de construcción de clases
        5.3.6 Encapsulamiento
            5.3.6.1 ¿Qué es encapsulamiento?
            5.3.6.2 Como lograrlo
            5.3.6.3 Modificadores de acceso
            5.3.6.4 Métodos get
            5.3.6.5 Métodos set
        5.2.7 Polimorfismo
            5.2.7.1 Herencia
            5.2.7.2 Diferencias entre this y super
            5.2.7.3 Sobre escritura de métodos
            5.2.7.4 Sobre carga de métodos
            5.2.7.5 Polimorfismo
            5.2.7.6 Simplicidad de código gracias al polimorfismo
    5.4 Interfaces gráficas básicas con JavaFX

Bloque 3

Objetivos:
  • Comprender el uso de modificadores Final y Static
  • Saber utilizar Wrapper clases para convertir tipos primitivos en objetos y aprovechar sus métodos.
  • Entender el concepto de excepciones y su clasificación. Sabiendo como manejar excepciones mediante bloques try, catch y finally, además de utilizar throw y throws para gestionar y lanzar excepciones.
    5.5 Uso de Final
    5.6 Uso de Static
    5.7 Wrapper Classes
        5.7.1 Métodos de las Wrapper Classes
    5.8 Exceptions
        5.8.1 Stack Tree
        5.8.2 ¿Qué es una exception?
            5.8.2.1 Tipos de exception
            5.8.2.2 RuntimeException
            5.8.2.3 IOException
        5.8.3 Como manejar exceptions
            5.8.3.1 try y catch
            5.8.3.2 finally
        5.8.4 Como arrojar exceptions
            5.8.4.1 throw
            5.8.4.2 throws
        5.8.5 Como crear una exception personalizada
           5.8.5.1 Herencia de Throwable
        5.8.6 ¿Qué es un Error?

Bloque 4

Objetivos:
  • Objetivo 1
   5.9 Más sobre polimorfismo 
        5.9.1 Clases abstractas
        5.9.2 Sobre escritura de métodos abstractos 
        5.9.3 Herencia múltiple 
        5.9.4 Interfaces 
        5.9.5 Interfaces vs Clases abstractas
        5.9.6 Polimorfismo con interfaces y herencia

Bloque 5

Objetivos:
  • Comprender la Jerarquía de Colecciones: Familiarizarse con la jerarquía de interfaces y clases en la API Collection. Esto incluye entender la relación entre interfaces como List , Set y Map, y las clases que las implementan, como ArrayList, HashSet y HashMap.
  • Uso de Generics y WildCards: Comprender la importancia de la utilización de Generics y WildCards.
  • Dominar Operaciones Básicas: Aprender a realizar operaciones fundamentales en colecciones, como agregar, eliminar y buscar elementos. Se hará énfasis en la eficiencia y complejidad de estas operaciones en diferentes implementaciones.
  • Manejar Iteradores: Adquirir habilidades para trabajar con iteradores, lo que facilitará la navegación a través de los elementos de una colección de manera segura y eficiente.
  • Seleccionar la Implementación Adecuada: Entender las diferencias entre las implementaciones de la interfaz Collection y aprender a seleccionar la estructura de datos adecuada para escenarios específicos. Se pondrá especial énfasis en conocer cuándo utilizar List, Set o Map, dependiendo de las necesidades del problema.
   5.10 Collections
        5.10.1 Introducción a Collections y Generics
           5.10.1.1 Generics
               5.10.1.1.1 Clases parametrizadas
               5.10.1.1.2 Métodos parametrizados
               5.10.1.1.3 Convenciones
           5.10.1.2 Wildcards 
        5.10.2 API Collection
            5.10.2.1 Métodos
            5.10.2.2 List
                5.10.2.2.1 ArrayList
                5.10.2.2.2 Vector
                    5.10.2.2.2.1 Stack
           5.10.2.3 Queue
               5.10.2.3.1 LinkedList
           5.10.2.4 Set
               5.10.2.4.1 HashSet
               5.10.2.4.2 TreeSet
               5.10.2.4.3 LinkedHashMap
               5.10.2.4.4 EnumSet
         5.10.3 Lugares donde utiliza Collection
             5.10.3.1 Map
                 5.10.3.2 HashMap
                 5.10.3.3 LinkedHashMap
                 5.10.3.4 TreeMap
                 5.10.3.5 EnumMap
     6. Programación Funcional
         6.1 Lamdas
         6.2 Stream
             6.2.1 Operaciones de filtrado
                 6.2.1.1 Mapeo
                 6.2.1.2 Reducción
                 5.2.1.3 Recolección
         6.3 Metodos de Referencia
            
           

Proyectos 💻

Back to top 🔼

Sentando Bases

7 Introducción a Java EE

Bloque 1

Objetivos:
  • Dominar la creación y validación de formularios HTML, junto con la comprensión de los métodos de peticiones HTTP asociados (POST y GET).
  • Entender los conceptos básicos de la arquitectura cliente-servidor.
  • El alumno se familiarizará con un gestor de dependencias, comprendiendo su utilidad y el como trabajar correctamente con el
  • Desarrollar habilidades integrales en el manejo de Servlets en Java, abarcando la configuración de proyectos web con Apache Tomcat, la implementación de Java Server Pages (JSP), y la gestión avanzada de sesiones, cookies, parámetros, y configuraciones de servlets, asegurando un dominio completo del ciclo de vida de un Servlet
 7.1 Repaso de protocolos HTTP
 7.2 Formularios HTML
   7.2.1 Métodos de peticiones HTTP
     7.2.1.1 POST
     7.2.1.2 GET
   7.2.2 Etiquetas HTML 
 7.3 Arquitectura Cliente Servidor
 7.4 Gestor de dependencias
   7.4.1 Maven
     7.4.1.1 Archivo pom.xml
     7.4.1.2 Ciclo de vida y fases de Maven
     7.4.1.3 Comandos Maven
     7.4.1.4 Plugins, artefactos, dependencias, versiones y repositorios 
 7.5 Servlets
     7.5.1 Java Server Pages
       7.5.1.1 Etiquetas JSP
       7.5.1.2 Etiquetas Personalizadas
     7.5.2 Apache Tomcat 
     7.5.3 Sesiones y Cookies
     7.5.4 Ciclo de vida de un Servlet
     7.5.5 Configurar un proyecto web con Servlets
     7.5.6 WEB.xml
       7.5.6.1 Notaciones HttpServlet, HttpServletRequest y HttpServletResponse
       7.5.6.1 Mapeo de Servlets
       7.5.6.2 Páginas por defecto y error
       7.5.6.3 Seguridad
     7.5.7 Manejo de parámetros en Servlets
     7.5.8 Manejo de sesiones
       7.5.8.1 Crear y obtener una sesión en un Servlet.
       7.5.8.2 Almacenar y recuperar datos en la sesión. 
       7.5.8.3 Invalidar una sesión.
     7.5.9 Trabajo con cookies en Servlets:
       7.5.9.1 Crear y enviar cookies desde un Servlet.
       7.5.9.2 Recuperar y utilizar cookies en un Servlet.
       7.5.9.3 Eliminar cookies en un Servlet.

Back to top 🔼

8 CSS Avanzado

Bloque 1

Objetivos:
  • Comprender los principios fundamentales del diseño responsivo y su importancia en la experiencia del usuario.
  • Implementar media queries para adaptar la presentación de la interfaz de usuario a diferentes dispositivos y tamaños de pantalla.
  • Estudiar la propiedad @keyframes para crear animaciones fluidas y personalizadas.
  • Entender cómo optimizar el rendimiento de las animaciones y utilizar las propiedades de aceleración y desaceleración.
  • Estudiar la importancia del rendimiento y las mejores prácticas, como la minimización y combinación de archivos CSS para reducir la carga de la página.
 8.1 Responsive 
     8.1.1 Principios del diseño responsive
     8.1.2 Importancia del diseño adaptativo en la UX/UI
     8.1.3 Implementación de media queries para diferentes dispositivos
 8.2 Flexbox y Grid para diseños avanzados
     8.2.1 Repaso de flex y grid
     8.2.2 Flexbox avanzado
     8.2.3 Grid Avanzado
     8.2.4 Layouts avanzados
  8.3 Animaciones 
     8.3.1 Conceptos de animaciones en CSS
     8.3.2 Creación de animaciones personalizadas con @keyframes
     8.3.3 Mejora de rendimiento en animaciones
     8.3.4 Propiedades de aceleración y desaceleración
 8.4 Temas avanzados 
     8.4.1 Especificidad
     8.4.2 Selectores y pseudo-elementos avanzados
     8.4.3 Implementación de variables en CSS
     8.4.4 Temas personalizados con variables
     8.4.5 Minimización de combinaciones para mayor rendimiento

9 Javascript

Bloque 1

Objetivos:
  • Comprender la importancia de JavaScript en el desarrollo web.
  • Entender los conceptos de declaración de variables y su scope.
  • Dominar la creación de llamadas de funciones.
  • Comprender el concepto de hoisting.
  • Comprender y explorar el concepto de ciudadanos de primera clase.
  • Entender la creación y manipulación de objetos en JavaScript.
  • Aplicar el operador spead operator para simplificar la manipulación de objetos.
  • Repasar los principios básicos de la programación funcional
  • Implementar el manejo de errores mediante try-catch.
  • Comprender la programación asíncrona.
  • Entender el concepto de generadores e iteradores.
  • Comprender el manejo de eventos en el navegador.
  • Explorar las capacidades del almacenamiento local y de sesión.
  • Utilizar fetch y axios para realizar peticiones web.
 6. Javascript
     6.1 ...

Back to top 🔼

Vamos allá! 💻

OK pero no voy a hacer 100 carpetas para guardar los proyectos a mano, para eso mejor hice este pequeño bash scritp:

#!/bin/bash
for i in {1..100}
do 
    mkdir "DAY$i"
done

Back to top 🔼

To do list ✅

# Challenge Status Para portafolio
1 Hello World
2 Business Card
3 Currency Calculator
4 Binary and Decimal Converter
5 Tips calculator
6 Calculator
7 Color visualizer
8 Password Generator
9 Pomodoro Timer
10 Encryptor
11 Digital Clock
12 Landing page
13 Crush web <3
14 Catalogue
15 To-Do List
16 Quiz
17 Personality test
18 Dice simulator
19 Rulet
20 Tick tack toe
21 Paper scissors rock
22 Snake
23 Memory
24 Puzze
25 Sudoku
26 Tetris
27 Minesweeper
28 Battleship game
29 Pacman
30 Paint
31 Chess
32 ORM architecture
33 API REST
34 Notion widget
35 Discord bot
36 Telegram bot
37 Guess the word
38 Programming languages Dashboard
39 Notes App
40 Login system
41 Voting System
42 ATM System
43 Personal Blog
44 Browser
45 Charity Finder
46 Library System
47 News web
48 Racking movies app
49 Real-time chat
50 Twitter clone
51 Pinterest Clone
52 Kahoot
53 Speed typing test
54 Habit tracker
55 Trello clone
56 Calendar App
57 E-commerce
58 Travels reservations app
59 E-learning
60 Pokemon battle
61 Coding Battle
62 Portfolio

Back to top 🔼

Extra

# Challenge Status Para portafolio
Snippet
Sistema de Automatización de Mensajes
Filtro para TikTok
Minecraft Mod
Wiki "Recetas de Crafteo Minecraft"
Endless Runner
Among Us para Programadores
Extensión de Google Chrome

Back to top 🔼

Socialmedia

100days100proyects's People

Contributors

untalbry avatar lara-vel-dev avatar leviakc avatar

Stargazers

Pedro Chaparro avatar Mónica Gómez López avatar  avatar Diego Andres Echeverri Sanin avatar Jose Eduardo Cruz Pineda  avatar Ale P. Castillo avatar Yareny De la Cruz avatar Gabriel Josafat Garcia Garcia avatar Efrain Coutiño avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.