Skip to content

Projeto web construído durante o NLW#07 com a @Rocketseat/Diego Fernandes, Daniele Leão, Rodrigo Gonçalves e Rafael Camarda. HEATSUP: "Chat de aquecimento pré evento". 🤩💬🤸‍♀️

License

Notifications You must be signed in to change notification settings

NyctibiusVII/HeatsUp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


logo HeatsUp

Trilha Impulse
logo impulse

Plataforma HeatsUp Tamanho do repositório Licença Donate

Projeto   |    Tecnologias   |    Layout   |    Licença

HeatsUp logo icon

Projeto desenvolvido para fazer um esquenta pre-eventos. O projeto é um mural de depoimentos, expectativa e mensagens em geral. Projeto realizado na Next Level Week #7 @Rocketseat.

Funcionalidades

  • Chat em tempo real
  • Bate-papo pre-evento
  • App responsivo
  • Light/Dark mode
  • Restrição de (158) palavras de 'baixo escalão'
  • SQLite

Milha Extra🔥

Desafios
GERAL:
    ✔ - Documentar bem o projeto
    [2/3] - Migração de npm para yarn (WEB: y; MOBILE: n; NODE: y; ELIXIR: nil)

DESKTOP:
    ✔ - NO AR (Online / Vercel)
    ✔ - SEO:
        ✔ - Texto para <noscript />
        ✔ - Shortcut icon
        ✔ - Meta tags:
            ✔ - Facebook (og:~)
            ✔ - Twitter (twitter:~)
        ✔ - Sitemap (sitemap.xml / automatico com 'next-sitemap')
        ✔ - Robots (robots.txt / automatico com 'next-sitemap')
    - Melhorar o estilo:
        ✔ - Mobile First
        ✔ - Responsividade
        ✔ - Design
        ✔ - Trocar o tema da aplicação:
            ✔ - Light
            ✔ - Dark
            ✔ - Imagens adaptadas para o 'light e dark'
        ✔ - +Animações (framer-motion)
        - Cores:
            ✔ - Seleção do mouse (:selection)
            ✖ - Adaptadas para daltônicos
    ✔ - Toast
    ✔ - ER (Expressão Regular) no input para restringir palavras proibidas
    ✔ - Perfil no 'head' da web
    ✔ - Ponteiro do mouse personalizado
    ✔ - Telas:
        ✔ - Home
        ✔ - Home/Logged
        ✔ - 404

MOBILE:
    ✖ - NO AR (Online / Apple Store && Google Play)
    - Melhorar o estilo:
        ✖ - Design
        ✖ - Trocar o tema da aplicação:
            ✖ - Light
            ✖ - Dark
            ✖ - Imagens adaptadas para o 'light e dark'
        ✔ - +Animações (framer-motion)
        ✖ - Cores:
            ✖ - Adaptadas para daltônicos
    ✔ - Telas:
        ✔ - splash
        ✔ - Home
        ✔ - Home/Logged
    ✖ - ER (Expressão Regular) no input para restringir palavras proibidas

NODE:
    ✔ - NO AR (Online / Heroku)
    ✔ - oAuth github
    [2/3] - Identificar de onde vem as requisições (WEB: y; MOBILE: y; NODE: ~dev...; ELIXIR: nil)
    ✔ - ORM (Prisma)
    - Banco de dados:
        ✔ - SQLite *Banco atual*
        ✖ - Migrar banco de dados de 'SQLite' para 'MongoDB'
        ✖ - MongoDB:
            ✖ - Guardar dados
            ✖ - Alterar dados
            ✖ - Deletar dados

ELIXIR:
    ✖ - NO AR (Online / ~)
    ✔ - Separar a mensagem de 150 caracteres em palavras
        ✔ - Contar a ocorrência de cara palavra
    ✔ - Processamento concorrente
    ✔ - Agendador de geração de relatórios
    ✔ - Rodando todo dia a meia noite (-e["0 0 * * *"] ou @daily)
    ✖ - Validação de erros (fallback_controller)
    ✖ - Word Cloud:
        ✖ - Gerar imagem com python
        ✖ - Enviar e-mail com a 'WordCloud' do dia (Bamboo)

Tecnologias 🚀

Esse projeto foi desenvolvido com as seguintes tecnologias:

WEB___ Next.js | 11.1.2
React | 17.0.2
Typescript | 4.4.4
SASS | ^1.43.3
Socket.io | ^4.3.1
MOBILE___ React-native | sdk-42.0.0
React | 16.13.1
Expo | ~42.0.1
Moti | ^0.16.0
Typescript | ~4.0.0
Socket.io | ^4.3.1
NODE___ NodeJS | ^14.17.3
Express | ^4.17.1
Prisma | ^3.3.0
Typescript | ^4.4.4
SQLite | ^3.36.0
JWT | ^8.5.1
ELIXIR___ Elixir | 1.11.2 / OTP 21
Phoenix | ~> 1.6.2
Jason | ~> 1.2
Swoosh | ~> 1.3
Quantum | ~> 3.0

Layout 🚧

Desktop Screenshot

Ver mais

Mobile (Web) Screenshot

Ver mais

Exemplo de uso do Site

Uso do site

Rodando o projeto 🚴🏻‍♂️

"Só vou dar uma olhadinha...":

💬 Site hospedado na Vercel 🤸‍♀️

Na sua maquina:

Dependências
  ------- NODE -------
  "dependencies": {
    "@prisma/client": "^3.3.0",
    "axios": "^0.23.0",
    "cors": "^2.8.5",
    "dotenv": "^10.0.0",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "socket.io": "^4.3.1",
    "ts-node": "^10.4.0"
  },
  "devDependencies": {
    "@types/axios": "^0.14.0",
    "@types/cors": "^2.8.12",
    "@types/express": "^4.17.13",
    "@types/jsonwebtoken": "^8.5.5",
    "@types/node": "^16.11.4",
    "@types/socket.io": "^3.0.2",
    "prisma": "^3.3.0",
    "ts-node-dev": "^1.1.8",
    "typescript": "^4.4.4"
  }

  ------- WEB -------
  "dependencies": {
    "axios": "^0.23.0",
    "framer-motion": "^4.1.17",
    "next": "11.1.2",
    "next-themes": "^0.0.15",
    "react": "17.0.2",
    "react-dom": "17.0.2",
    "react-icons": "^4.3.1",
    "react-toast-notifications": "^2.5.1",
    "sass": "^1.43.3",
    "socket.io-client": "^4.3.2"
  },
  "devDependencies": {
    "@types/react": "17.0.31",
    "@types/react-dom": "^17.0.10",
    "eslint": "8.0.1",
    "eslint-config-next": "11.1.2",
    "next-sitemap": "^1.6.192",
    "typescript": "4.4.4"
  }

  ------- MOBILE -------
  "dependencies": {
    "@expo-google-fonts/roboto": "^0.2.0",
    "axios": "^0.23.0",
    "expo": "~42.0.1",
    "expo-app-loading": "1.1.2",
    "expo-auth-session": "~3.3.1",
    "expo-font": "~9.2.1",
    "expo-linear-gradient": "~9.2.0",
    "expo-random": "~11.2.0",
    "expo-status-bar": "~1.0.4",
    "moti": "^0.16.0",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-42.0.0.tar.gz",
    "react-native-iphone-x-helper": "^1.3.1",
    "react-native-reanimated": "~2.2.0",
    "react-native-svg": "12.1.1",
    "react-native-web": "^0.17.5",
    "socket.io-client": "^4.3.2",
    "@react-native-async-storage/async-storage": "~1.15.0"
  },
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@types/react": "~16.9.35",
    "@types/react-native": "~0.63.2",
    "react-native-svg-transformer": "^0.14.3",
    "typescript": "~4.0.0"
  }

Ex: $ npm install _____ ou $ yarn add _____ para instalar as dependências

Utilize a tag -D para instalar as dependências de desenvolvimento. Utilize a tag @types para instalar o suporte a Typescript. Utilize a tag @latest para instalar a versão mais recente.

------- ELIXIR -------
  defp deps do
    [
      {:phoenix, "~> 1.6.2"},
      {:phoenix_ecto, "~> 4.4"},
      {:ecto_sql, "~> 3.6"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_live_dashboard, "~> 0.5"},
      {:swoosh, "~> 1.3"},
      {:telemetry_metrics, "~> 0.6"},
      {:telemetry_poller, "~> 1.0"},
      {:gettext, "~> 0.18"},
      {:jason, "~> 1.2"},
      {:plug_cowboy, "~> 2.5"},
      {:quantum, "~> 3.0"}
    ]
  end

Ex: $ mix deps.get para instalar as dependências

# Clone o repositório
$ git clone https://github.com/NyctibiusVII/HeatsUp.git

# Acesse a pasta do projeto no terminal
$ cd heatsup

# Acesse a pasta do sub-projeto no terminal:
$ cd node      # Projeto NodeJS
$ cd web       # Projeto NextJS
$ cd mobile    # Projeto React Native
$ cd wordcloud # Projeto Elixir

# Instale as dependências
$ npm install   /   yarn add # Serve para NodeJS, NextJS e React Native
$ mix deps.get               # Serve para Elixir

# Execute o sub-projeto:
# --------- PARA NODE ---------- #
$ npx prisma generate            # Para criar o banco de dados
$ npm run dev   /   yarn dev     # Para rodar o projeto Node (Backend)

# ---------- PARA WEB ---------- #
$ npm run dev   /   yarn dev     # Para rodar o projeto Web (Frontend)

# -------- PARA MOBILE --------- #
$ npm run start   /   yarn start # Para o projeto Mobile (Frontend Mobile)

# ------- PARA WORDCLOUD ------- #
# DISCLAIMER 1: Instale o Elixir e o Phoenix no terminal, isso não será explicado aqui.
# DISCLAIMER 2: Configure seu banco de dados no arquivo `config/dev.exs`
$ mix ecto.create                # Para criar o banco de dados
$ mix phx.server                 # Para rodar o projeto Elixir (Backend)

# O NodeJS roda na porta: 4000
# O NextJS roda na porta: 3000
# O React Native roda na porta: 19002
# O Elixir roda na porta: 4000

# Acesse http:https://localhost:$PORT *Ex: Cuidado para não ligar dois ou mais projetos na mesma porta, pois o servidor pode não iniciar.

Contribuição 💭

Para construir essa aplicação tive a ajuda dos professores Daniele Leão, Diego Fernandes, Rodrigo Gonçalves e Rafael Camarda da Rocketseat que disponibilizou video aulas do projeto HeatsUp e ajudaram no ensino das respectivas linguagens { NodeJS, ReactJS, React Native, Elixir } além também de ter a ajuda desta grande comunidade que a Rocketseat construiu no Discord. Feito com ♥ by Rocketseat 👋 Participe da nossa comunidade!

Hashtags #

Dias Hashtags
Dia 1 #RumoAoPróximoNível
Dia 2 #Protagonistas
Dia 3 #ImaginarConstruirTransformar
Dia 4 #SemLimites
Dia 5 #BuildTheFuture

Licença ⚖️

Este projeto está sob a licença do MIT. Veja o arquivo LICENSE para mais detalhes.

Contato ✉️


@MatheusVidigal🦊

Matheus Vidigal / Linkedin Matheus Vidigal / Linkedin