Soraia Novaes

Engenheira de Software pela 42 São Paulo. +10 anos de experiência gerenciando e desenvolvendo projetos de aplicações web com conhecimentos HTML 5, CSS 3, JavaScript,Tailwind, GIT, Docker e WordPress.

Portfólio de projetos de desenvolvimento web com Vue.js

Esses projetos ilustram meu domínio em várias tecnologias essenciais da web, incluindo HTML, CSS, JavaScript, e o uso de APIs. Você encontrará desde aplicativos simples, como geradores de citações e listas de tarefas, até funcionalidades mais complexas, como validação de formulários e integração com APIs externas como a do GitHub e da Wikipedia.

To-Do-List

Um aplicativo para gerenciar tarefas diárias. Os usuários podem adicionar, remover e listar tarefas usando uma interface simples. As tarefas são adicionadas através de um campo de entrada e podem ser excluídas individualmente.

Random Quote Generator

Este projeto exibe uma citação aleatória de uma coleção pré-definida a cada vez que o usuário solicita uma nova citação. É útil para sites que desejam oferecer inspiração ou reflexão diária.

Calculator

Uma calculadora funcional que suporta operações básicas como adição, subtração, multiplicação e divisão. Este projeto demonstra a manipulação de eventos e o cálculo de expressões matemáticas.

Accordion UI

Um componente de interface que permite expandir e retrair seções de conteúdo, ideal para FAQs ou para organizar informações detalhadas de forma compacta.

Form Validation

Um formulário que valida a entrada do usuário em tempo real, garantindo que todos os campos sejam preenchidos corretamente antes de permitir a submissão. Valida nomes, e-mails e senhas.

Password Generator

Gera senhas aleatórias com base em critérios especificados pelo usuário, como comprimento e a inclusão de números ou símbolos. É útil para criar senhas fortes e seguras.

Progress Steps

Gera senhas aleatórias com base em critérios especificados pelo usuário, como comprimento e a inclusão de números ou símbolos. É útil para criar senhas fortes e seguras.

Dad Joke Generator

Utiliza uma API para buscar e exibir uma 'piada de pai' aleatória. Demonstração de como fazer chamadas de API e manipular respostas em uma aplicação web.

GitHub User Search

Permite aos usuários buscar perfis no GitHub usando a API do GitHub. Exibe informações do perfil, incluindo repositórios, seguidores e mais.

Wikipedia Viewer

Uma aplicação que permite aos usuários pesquisar artigos na Wikipedia e exibir resultados com links diretos para os artigos. Utiliza a API da Wikipedia para buscar e exibir dados.

Instagram Clone

Um aplicativo com simulando um clone do Instagram com recursos de autenticação, criação de postagens, comentários e likes. Backend php com Laravel.

Websites

Criador de Aulas

Criador de Aulas

SvelteKit

AB Tester

AB Tester

SvelteKit

Propagandas em Revistas

Propagandas em Revistas

SvelteKit

Treinamento de Equipes

Treinamento de Equipes

SvelteKit

EmpreendeLab

EmpreendeLab

SvelteKit

Desafio do Código

Desafio do Código

Wordpress

My Trips

My Trips

Next.js

CodeCamp

CodeCamp

Jekyll, Ruby on Rails

Soraia Novaes

Soraia Novaes

Bootstrap

Tecnologias para Educação

Tecnologias para Educação

Google Sites

Mulheres de Favela

Mulheres de Favela

Wordpress

Projetos desenvolvidos na 42 São Paulo

Em minha formação pela École 42, desenvolvi um conjunto diversificado de projetos que atravessaram as fronteiras tradicionais da ciência da computação, enfrentando desde a reconstrução de funções de bibliotecas padrão até o desenvolvimento de aplicações complexas e sistemas integrados. Cada projeto foi cuidadosamente projetado para não apenas reforçar competências técnicas em linguagens como C e C++, mas também para instigar a resolução de problemas complexos, otimização de processos e a integração de múltiplas tecnologias. Esta experiência prática proporcionou uma compreensão profunda das exigências e nuances da programação de alto nível e do desenvolvimento de sistemas, preparando-me para enfrentar desafios tecnológicos complexos com soluções inovadoras e eficazes.

Libft

Este é o primeiro projeto como estudante da 42 e o trabalho é recodificar algumas funções da biblioteca padrão C, bem como algumas outras funções utilitárias que serão usadas durante todo o curso.

Get Next Line

Este projeto trata de programar uma função que retorna uma linha lido de um descritor de arquivo. Seja um arquivo, stdin ou até mesmo uma conexão de rede, você sempre precisará de uma forma de ler o conteúdo linha por linha.

Printf

ft_printf é um projeto que pede para criarmos a nossa própria versão da função printf(). Na linguagem de programação C, a função printf() é usada para imprimir os (valores de caractere, string, float, inteiro, octal e hexadecimal) na tela de saída, retornando o número de caracteres escritos.

Born2beroot

Born2beroot é um projeto que exige a criação de uma máquina virtual com servidor SSH, regras de firewall e como bônus uma instalação de Wordpress e um serviço como FTP ou DNS. O Sistema Operacional pode ser Debian ou CentOS e um script de monitoramento com informações do sistema operacional deve ser executado a cada 10 minutos.

So_long

SoLong é um projeto que exige a criação de um jogo 2D muito pequeno. Ele foi construído para fazer você trabalhar com texturas, sprites e alguns elementos de jogabilidade muito básicos usando MinilibX, uma API de programação X-Window (X11R6) simples em C, projetada para estudantes, adequada para iniciantes em X.

Pipex

Pipex é um projeto que exige que criemos um programa que simule o comportamento do shell pipe, recebendo um arquivo ou lendo do STDIN e redirecionando para uma sequência de comandos que serão gravados no arquivo de saída.

Push Swap

Este projeto envolve a classificação de dados em uma pilha, com um conjunto limitado de instruções e o menor número de movimentos. Para que isso aconteça, você terá que manipular vários algoritmos de classificação e escolher a(s) solução(ões) mais apropriada(s) para classificação otimizada de dados.

Minishell

O objetivo deste projeto é criar um shell simples, lidando com processos e file descriptors. Simplificando, um shell é a camada mais externa de comunicação entre o usuário e o sistema operacional. Permitindo-nos navegar e executar tarefas em linguagem legível por humanos.

Philosopher

Philosophers é um projeto que exige que resolvamos o problema do Jantar dos Filósofos usando threads, processos e mutex. A parte obrigatória deve ser resolvida usando threads e mutex. A solução foi implementada por meio de uma thread de monitoramento, que verifica se algum filósofo morreu e avisa os demais para pararem (locking mutex).

NetPratice

NetPractice é um projeto que exige a configuração de redes de pequena escala. Numa rede, os dispositivos precisam se comunicar. Para isso foram criados protocolos e modelos de comunicação. Entre eles, está o modelo TCP/IP. TCP/IP é um conjunto de protocolos de comunicação. O nome vem de dois protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol). Tem como objetivo padronizar todas as comunicações em rede, especialmente as comunicações na web.

Cub3D

Cub3D é um projeto de equipe que nos pede para criar um motor de jogo 3D com miniLibX. Este projeto é inspirado no mundialmente famoso jogo Wolfenstein 3D dos anos 90, que foi o primeiro FPS de todos os tempos. O objetivo deste projeto é aprofundar-se nos conceitos matemáticos por trás do algoritmo de projeção de raios, como cálculo de distâncias, altura, localização de sprites e campo de visão para criar uma projeção usando principalmente trigonometria.

CPP

CPP é o nome do mini pool C++ em 42, um conjunto de várias listas de exercícios que vão desde conceitos básicos de orientação a objetos, como polimorfismo e herança, até modelos C++. C++ (dito C plus plus) é uma linguagem de computador orientada a objetos criada pelo notável cientista da computação Bjorne Stroustrop como parte da evolução da família de linguagens C. Ele foi desenvolvido como uma melhoria multiplataforma de C para fornecer aos desenvolvedores um maior grau de controle sobre a memória e os recursos do sistema.

Ft_containers

Ft_containers é um projeto que requer a reimplementação de alguns dos principais contêineres da biblioteca de modelos padrão C++ (C++ STL Containers). Os containers a serem implementados incluindo bônus são o vetor, mapa, conjunto e pilha. Também precisamos implementar os iteradores quando disponíveis, iterator_traits e reverse_iterator.

Inception

Inception é um projeto que exige a construção de uma infraestrutura de serviços utilizando Docker, orquestrada pelo Docker Compose. Na parte obrigatória, um container com nginx e somente ele deve estar acessível pela porta 443, expondo os serviços da rede docker interna para acesso público. O serviço nginx se conecta ao contêiner wordpress executando php-fpm que armazena os dados em um serviço mariadb na rede. Os dados do site wordpress e mariadb devem ser persistidos cada um em seu próprio volume.

Webserv

Webserv é um projeto de grupo que exige a construção de um servidor HTTP usando I/O Multiplexing construída sobre um loop de eventos. Na parte obrigatória, iniciamos o servidor lendo um arquivo de configuração que pode ser baseado em Nginx, contendo informações como nome do host (ip/porta), nome do servidor, arquivo de índice, listagem de diretórios, redirecionamento de URL, localização (caminho do vhost) e alguns outros configurações.

Ft_Transcendence

ft_transcendence é um projeto de equipe que exige a construção de uma plataforma online para jogar Pong. O backend deve ser construído em NestJS, o frontend em qualquer framework TypeScript de sua preferência e o banco de dados deve ser PostgreSQL. Para o frontend a opção escolhida foi o Svelte, devido ao seu desempenho e extensa documentação. No geral, a plataforma deve contar com sistema de classificação, canais de chat, mensagens privadas, edição de perfil, visualização do status dos usuários e adição de outros membros como amigos. O objetivo principal é jogar uma implementação do Pong, como se fosse 1972. Deveria haver algumas opções de personalização, como mapas personalizados ou power-ups, mas o usuário ainda deveria ser capaz de jogar a versão original. Finalmente, a estrutura do servidor deve ser conteinerizada usando docker e disponível com uma única chamada de: docker-compose up --build.

Habilidades adquiridas na 42

Fundamentos de Programação:

  • Aprofundamento no entendimento das linguagens C e C++.
  • Recodificação de funções da biblioteca padrão e criação de funções utilitárias (Libft).

Técnicas Avançadas de Programação:

  • Desenvolvimento de algoritmos complexos para classificação otimizada de dados (Push Swap).
  • Manipulação de múltiplas estruturas de dados e eficiência algorítmica.

Engenharia de Software:

  • Construção de aplicações completas, como servidores HTTP e plataformas de jogos.
  • Implementação de metodologias de software, como I/O Multiplexing (Webserv).

Desenvolvimento Web e Aplicações em Rede:

  • Programação de interfaces e aplicações web utilizando HTML, CSS, JavaScript, e frameworks modernos como Svelte (ft_transcendence).
  • Configuração e gerenciamento de redes, entendimento profundo de TCP/IP (NetPractice).

Gerenciamento de Sistemas e Infraestrutura:

  • Criação e gestão de máquinas virtuais, servidores SSH, e regras de firewall (Born2beroot).
  • Utilização de Docker para construção de infraestruturas de serviços e orquestração com Docker Compose (Inception).

Desenvolvimento de Jogos e Gráficos Computacionais:

  • Desenvolvimento de jogos 2D e entendimento de gráficos computacionais usando bibliotecas como MiniLibX (So_long, Cub3D).

Multithreading e Concorrência:

  • Gestão de múltiplos threads e processos, utilizando mutexes para resolver problemas de concorrência e sincronização, como o problema do Jantar dos Filósofos (Philosopher).

Design de Software e Arquitetura de Sistemas:

  • Implementação de arquiteturas de software robustas e design de sistemas complexos, como a criação de uma versão própria da função printf e a reimplementação de contêineres STL em C++.

Experiência em desenvolvimento com as seguintes tecnologias

Websites mais rápidos

Este portfólio é um testemunho do meu crescimento como desenvolvedora web e da minha paixão por construir soluções web eficazes e atraentes.