Executando verificação de segurança...
10

😎 Inicio do super portfólio

Opa pessoal tudo bem? me chamo Álex Fernando, tenho 17 anos e tenho contato com programação desde os meus 9 anos e comercialmente desde os 15, atualmente vejo o mercado de javascript/typescript crescendo exponencialmente e isso meio que me assusta por conta do desemprego ainda mais que ano que vem irei para portugal e tenho medo de não achar nenhum emprego, por isso levei em consideração aprender java etc, foi uma das minhas primeiras linguagens de programação, o que acham?

Tenho 2 anos trabalhando comercialmente com programação esses anos contariam para uma experiência profissional tipo como cargo de Dev Junior/Pleno?

Enfim, diversas perguntas e bla bla bla desculpem KKKKKKK, sou meio que ansioso com isso, pois na minha vida só trabalhei com freelas e te falar que parada cansativa e exaustante

Para poder me ajudar na procura de emprego resolvi criar um super portfólio de projetos altamente comerciais e planejo vender cada um deles, esse aqui é um protótipo que só tem o front-end e não tá 100% completo mas está aqui caso queiram ver:

https://sumcoolang.vercel.app/
(ainda não fiz otimizações de performance)

No front-end usando o arroz com feijão: NextJS e Tailwind (um pouco de shadcn, mas não conte pra ninguém)

No banco de dados planejo um postgresql e para o backend um sólido NestJS para estruturar a api de uma forma maravilhosa, é isso pessoal, se quiserem interagir eu agradeço, eu gostaria que vocês pudessem analisar o projeto e me dizer se é realmente um projeto que venderia ou não.

Carregando publicação patrocinada...
4

Hey Álex, bem-vindo ao TabNews!

Gostei muito da sua apresentação, e irei te dar algumas dicas de Portugal, já que eu sou programador por cá.

Gostei da ideia desse super portfólio e acredito que realmente possa render-lhe umas vendas, e sei bem como fica com esse receio das taxas altas de despedimentos, mas por Portugal, posso dizer que despedimentos coletivos não estão muito por alta, e muito menos na ala de programadores onde tá a se precisar de mais demanda.

Infelizmente Portugal tem ainda muitos tech leads conservadores, preferem só ficar nas plataformas que foram ensinados a ficar, e rejeitam a se preparar para a mudança, portanto vagas para um programador de outras linguagens são raras, porém quando aparecem até que acaba sendo fácil você ser contratado.

Nas escolas e nas faculdades de Portugal, geralmente se aprende o PHP, WordPress, Java/Kotlin, MySQL, HTML, CSS e JS, o que claro que isso acaba refletindo-se no mercado do trabalho por aqui em que a maioria das vagas serão sobre essas linguagens. Então se quiser se preparar para ter um emprego de forma bem urgente, recomendo realmente aprender o Java ou o PHP.

2

Opa Kuriel tudo bem? Obrigado pela leitura e atenção ao comentar, valeu mesmo.

Eu tenho pensado em voltar a criar diversos projetos em java mesmo, para botar no meu git, mas planejo colocar os projetos nodejs/typescript em meu github, quando eu for aplicar você acha que isso vai ser algo ruim, ou tudo bem até? Tenho medo de passar a ideia de alguém MUITOOOO generalista e que não entende nem de javascript ou de java

Aaah eu também sou bastante interessado em C/C++, eu conseguiria pescar uma vaguinha com essa stack ao invés de java 👀?

(te dei unlike sem querer, foi mal errei o botão)

1

O site ta excelente, desde a ideia até a apresentação/estilização, curti demais.

Se não se importar, poderia me dizer como foi feita essa animação ao trocar de página dentro do site? 👀 Curti tanto que vou aplicar em algum projeto futuro.
E quais componentes do shadcn estão sendo usados?

Parabéns pelo projeto e boa sorte na sua jornada!

2

Opa Ruan, obrigado!

Para a animação de troca de páginas, escolhi o gsap por conta do conrforto e o utilizei para criar as seguintes funções:

import gsap from "gsap";
import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";

export const animatePageIn = () => {
  const bannerOne = document.getElementById("banner-1");
  const bannerTwo = document.getElementById("banner-2");
  const bannerThree = document.getElementById("banner-3");
  const bannerFour = document.getElementById("banner-4");
  if (bannerOne && bannerTwo && bannerThree && bannerFour) {
    const tl = gsap.timeline();
    tl.set([bannerOne, bannerTwo, bannerThree, bannerFour], {
      yPercent: 0,
    }).to([bannerOne, bannerTwo, bannerThree, bannerFour], {
      yPercent: 100,
      stagger: 0.2,
    });
  }
};

export const animatePageOut = (href: string, router: AppRouterInstance) => {
  const bannerOne = document.getElementById("banner-1");
  const bannerTwo = document.getElementById("banner-2");
  const bannerThree = document.getElementById("banner-3");
  const bannerFour = document.getElementById("banner-4");
  if (bannerOne && bannerTwo && bannerThree && bannerFour) {
    const tl = gsap.timeline();
    tl.set([bannerOne, bannerTwo, bannerThree, bannerFour], {
      yPercent: -100,
    }).to([bannerOne, bannerTwo, bannerThree, bannerFour], {
      yPercent: 0,
      stagger: 0.2,
      onComplete: () => {
        if (href == "back") {
          router.back();
        } else {
          router.push(href);
        }
      },
    });
  }
};

com essas funções feitas, só falta criar o esqueleto da animação, para isso criei um arquivo chamado template.tsx no /app do meu projeto next e inseri o seguinte conteúdo:

"use client";

import { animatePageIn } from "@/utils/animation";
import { useEffect } from "react";

export default function Template({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    animatePageIn();
  }, []);
  return (
    <div className="">
      <div
        id="banner-1"
        className="min-h-screen bg-purple-500 z-[50] fixed top-0 left-0 w-[calc(25%+3px)] "
      />
      <div
        id="banner-2"
        className="min-h-screen bg-purple-500 z-[50] fixed top-0 left-1/4 w-[calc(25%+3px)] "
      />
      <div
        id="banner-3"
        className="min-h-screen bg-purple-500 z-[50] fixed top-0 left-2/4 w-[calc(25%+3px)] "
      />
      <div
        id="banner-4"
        className="min-h-screen bg-purple-500 z-[50] fixed top-0 left-3/4 w-[calc(25%+3px)] "
      />
      {children}
    </div>
  );
}

e quando eu quero trocar de páginas eu utilizo a função animatePageOut, você tem duas opção na verdade que é utilizar ela diretamente ou criar um componente, EU gosto de fazer dessa forma: animatePageOut('/course/learn-english-89a9sd9j', router) o router é a instância do useRouter do "next/navigation", mas a outra forma é esse componente aqui ó:

"use client";
import { animatePageOut } from "@/utils/animation";
import { usePathname, useRouter } from "next/navigation";

interface Props {
  href: string;
  children: React.ReactNode;
  className?: string;
  onClick?: any;
}

export default function TransitionLink({
  href,
  children,
  className,
  onClick,
}: Props) {
  const router = useRouter();
  const pathname = usePathname();
  const handleClick = () => {
    if (pathname !== href) {
      animatePageOut(href, router);
    }
  };
  return (
    <button
      className={` outline-none w-fit ${className}`}
      onClick={onClick ? onClick : handleClick}
    >
      {children}
    </button>
  );
}

ah, quase que esqueço da pergunta sobre o shadcn, não lembro exatamente, mas estou utilizando principalmente o Drawer, Dialog, Popup, Checkbox, Dropdown e Select.

Valeu Ruan!

1

Não consegui salvar, houve algum erro.

Uma coisa que aprendi até agora com o curso do Felipe Dechamps, e que eu já aplicava um pouco na minha vida, é iniciar tudo pela base. O que seria a base nesse caso? Os testes. Como seu servidor vai subir, se tudo vai subir corretamente. O porquê de alguns erros acontecerem, forçar erros, calcular otimizações de tempo, forçar mais erros e assim chegar a algo mais estável. Se você se diferencia pelo início bem feito, você garante um fim quase perfeito.

Mas cara, visualmente a tela inicial está linda demais, parabéns.

1

Opa tudo bem? Obrigado por comentar e to estudando e me esforçando muito para fazer acontecer, to até estudando alemão junto 🤣 sei que é aleatório, mas gosto bastante do idioma e coloquei pra jogo.

Obrigado pelo elogio e o layout do site usei bastantes projetos da dribbble como inspiração, pois a minha criatividade não é das melhores kkkk.

Como usuário o que você achou da paleta de cor?

1

Cara, primeiramente parabéns pelo conhecimento que você já apresenta, tenho certeza que isso já irá te dar um certo destaque.

Em relação à trabalhar com Java, creio que seria uma boa escolha baseado na situação atual do mercado, como você mesmo observou, atualmente temos muitos DEVs iniciantes que trabalham com stacks baseadas em JS, sendo assim seguir com tecnologias "menos populares" para quem está iniciando, como Java, C# ou até mesmo PHP seja um bom caminho, principalmente porque o mercado possui mais vagas para essas linguagens e menos concorrência. Porém se atente a focar em uma única stack no início, para não acabar caindo na "síndrome do pato" (faz várias coisas, mas nenhuma delas com excelência). Analise o mercado e a partir disso escolha as melhores ferramentas de acordo com seus objetivos, se torne craque nela e depois comece a olhar para às demais.

Em relação ao seu tempo de freelancer, é totalmente possível aproveitar essa experiência para definição de senioridade, principalmente se você for capaz de apresentar uma evolução constante durante esse período.

Enfim, espero ter contribuído de alguma forma, já estudo a área há algum tempo e tentei passar um pouco do que observei até aqui, Abraços e muito sucesso em sua jornada!

1

Opa matheus valeu de mais! Desculpe a demora para responder, resolvi voltar a estudar a stack do Java, pois eu tinha parado e velho tá sendo nostálgico e até uma boa experiência e concordo 100% contigo em relação à sindrome do pato e também a situação do mercado atual com as linguagens "menos populares", o começo foi basicamente java e depois migrei pro javascript mais por conta do freelance, pois eu sinto que é mais fácil manejar as 2 partes do projeto usando uma linguagem como base que é o javascript ai isso me ajudou bastante.

Planejo procurar vagas como desenvolvedor Back End, por mais que eu só tenha tido experiências atuando como desenvolvedor full stack, (OBS: Não quero ofender ninguém) mas tenho a impressão que quando um iniciante no mercado tech fala que é full-stack APARENTA não entender ao fundo cada lado tanto o BE como o FE, por esse sentido foquei em uma stack legal do Java, um spring bootzinho, etc. Por agora to estudando containers tanto Kubernetes e Dockers e é isso, desculpa por esse texto inteiro KKKKKKKKK valeu!