https://github.com/wynvern/cluster
Social media app for Projeto Tecnológico II and available for all the students present at Instituto Ivoti
https://github.com/wynvern/cluster
nodejs postgresql pwa-app typescript
Last synced: over 1 year ago
JSON representation
Social media app for Projeto Tecnológico II and available for all the students present at Instituto Ivoti
- Host: GitHub
- URL: https://github.com/wynvern/cluster
- Owner: wynvern
- Created: 2024-04-26T17:41:06.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-25T18:45:55.000Z (over 1 year ago)
- Last Synced: 2024-12-08T15:18:27.460Z (over 1 year ago)
- Topics: nodejs, postgresql, pwa-app, typescript
- Language: TypeScript
- Homepage: https://cluster-it.vercel.app
- Size: 53 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ✨ Projeto Cluster
Este é um projeto [Next.js](https://nextjs.org/) inicializado com [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). O projeto consiste em uma aplicação similar a uma rede social que tem como objetivo juntar estudantes em grupos que poder ter diversas categorias.
## 📝 Sobre o Projeto
Este projeto é uma aplicação web desenvolvida com Next.js. Ele inclui várias funcionalidades:
- Renderização do lado do servidor
- Rotas dinâmicas
- Pré-renderização
- Suporte à PWA
- Banco de dados Postgres com Prisma ORM
- Utilização de service workers para notificações e caching
- Next-auth para entrada com serviços de terceiros
- Nodemailer para enviar emails
- Pacote sharp para otimizar as imagens e cortá-las (ocupando menos espaço)
- Socket.io para a comunicação de websockets em tempo real
A aplicação utiliza Typescript como linguagem principal devido a tipagem, que faz o desenvolvimento ser mais seguro e direto ao ponto. Javascript também é utilizado para alguns serviços como conexão socket e encaminhamento de emails.
Outras linguagens estrangeiras como Python também foram utilizadas para gerar conteúdos estáticos como as imagens para o PWA.
## ⚙️ Como executar
Primeiro, instale as dependências do projeto:
```bash
npm install
# ou
yarn
```
Carrege as migrações do Prisma no banco de dados:
```bash
npx run prisma migrate dev
# ou
yarn prisma migrate dev
```
Em seguida, execute o servidor de desenvolvimento:
```bash
npm run dev
# ou
yarn dev
```
**Nota:** Vale ressaltar que, como o projeto está rodando em um arquivo customizado `server.mjs`, não está pronto para rodar de forma serverless.
**Nota:** Caso receba um erro do pacote sharp, rode `yarn add sharp --ignore-engines` o comando para instalar as dependências sem engine.
Para manter o código pradonizado, instale o _biome_, usando as configurações já encontradas no arquivo `biome.json`. Evite utilizar ESLint ou Prettier. Deixe claro suas modificações no código ao realizar alguma commit.
## Configuração do arquivo .env
Crie um arquivo `.env` na raiz do projeto e preencha-o com suas variáveis de ambiente. Um exemplo do arquivo está em `.env.example`, onde estão as variáveis necessárias.
Caso precise rodar o projeto em um codespaces, é necessário definir o hostname para o mesmo exposto pelo vscode, devido a um erro de origem.
## 📁 Estrutura do Projeto
- `components/`: Esta pasta contém todos os componentes React usados na aplicação, separados em categorias e em formato _.tsx_.
- `styles/`: Aqui estão os arquivos de estilo globais e locais.
- `app/`: Esta pasta contém todas as rotas da aplicação. Cada arquivo corresponde a uma rota, a pasta `(pwp)/` guarda as rotas que contêm a navbar presente.
- `public/`: Esta pasta contém todos os arquivos estáticos como imagens e ícones.
## 🛡️ Segurança
Todos os formulários têm um honeypot para prevenir a criação de contas por spammers e bots. Ele é chamado de "numberval". São validados somente no servidor, logo as requisições continuam, porém sem interferir no banco de dados.
## ☑️ To-Do
- [ ] Rotas do servidor dentro das pastas `lib/db` ainda precisam ser validadas por motivos de segurança;
- [ ] A autenticação do Socket.Io precisa ser melhorada;
- [ ] Blobs precisam ser removidos quando seus respectivos posts/usuários/grupos são deletados;
- [ ] Entre outros problemas menores de optimização e simplificação de código;
## 👥 Autores
Este projeto é mantido pelos seguinters indivíduos:
- **Wynvern** - Desenvolvedor - [GitHub](https://github.com/wynvern)
- **PietroSko** - Gerente do Projeto - [GitHub](https://github.com/pietrosko)
- **Gemellix2322** - Designer e Encarregado dos Documentos - [GitHub](https://github.com/gemellix2322)
Cada um contribuiu com suas habilidades e conhecimentos únicos para a criação e manutenção deste projeto.