Skip to content
This repository was archived by the owner on Aug 14, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
DATABASE_URL=postgresql://user:password@localhost/dbname
ENVIRONMENT=development

SECRET_KEY=polieats

DATABASE_URL=postgresql://user:password@localhost/dbname
MISTRAL_API_KEY=Yn7p3GEHvjZ1HV0nLKjw5hNaUYfJn5Oi
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ENVIRONMENT=development

SECRET_KEY=secret_key_here

DATABASE_URL=postgresql://user:password@localhost/dbname
MISTRAL_API_KEY=mistral_api_key_here
24 changes: 24 additions & 0 deletions .github/workflows/deno_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: CI/Deno Test

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Deno
uses: denoland/setup-deno@v1
with:
deno-version: v2.3.1

- name: Run unit tests
run: deno task test
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
47 changes: 47 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# PoliEats 🍽 - Backend

## Descrição:

O PoliEats é um chatbot desenvolvido para auxiliar os alunos, alunos e demais visitantes do colégio **Poliedro** a
fazerem pedidos de comida e bebida a partir de uma interface de chat totalmente automatizada. O bot é capaz de responder perguntas frequentes, fornecer informações sobre o cardápio e realizar pedidos de forma rápida e eficiente. O objetivo principal do PoliEats é facilitar a experiência de compra dos usuários, tornando o processo mais ágil e prático.

## Funcionalidades:
- **Cardápio**: O bot fornece informações detalhadas sobre o cardápio, incluindo preços e opções disponíveis.
- **Pedidos**: Os usuários podem fazer pedidos diretamente pelo bot, que irá encaminhar as informações para a equipe responsável.
- **Perguntas Frequentes**: O bot é capaz de responder perguntas frequentes sobre o colégio, cardápio e outros assuntos relacionados.
- **Horários**: O bot fornece informações sobre os horários de funcionamento do colégio e do serviço de alimentação.

## Tecnologias Utilizadas:
- **TypeScript**: Linguagem de programação utilizada para desenvolver o backend.
- **Deno**: Ambiente de execução para o TypeScript.
- **PostgreSQL**: Banco de dados utilizado para armazenar informações sobre o cardápio, pedidos e usuários.
- **DrizzleORM**: ORM utilizado para facilitar a interação com o banco de dados PostgreSQL.
- **Mistral AI**: Modelo de linguagem utilizado para processar as mensagens dos usuários e gerar respostas.
- **LangChain**: Biblioteca utilizada para integrar o modelo de linguagem com o bot e facilitar a construção de fluxos de conversa.

## Como executar o projeto:
1. Clone o repositório:
```bash
git clone https://github.com/PoliEats/Backend.git
cd Backend
```

2. Instale as dependências:
```bash
deno install
```

3. Configure o .env:
```bash
cp .env.example .env
```

4. Configure o banco de dados:
```bash
deno task db:migrate
```

5. Execute o projeto:
```bash
deno task start
```
43 changes: 34 additions & 9 deletions deno.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,35 @@
{
"tasks": {
"dev": "deno run --allow-net ./src/main.ts"
},
"imports": {
"@types/express": "npm:@types/express@^5.0.1",
"drizzle-kit": "npm:drizzle-kit@^0.31.0",
"express": "npm:express@^5.1.0"
}
}
"tasks": {
"dev": "deno run --allow-net ./src/main.ts",
"test": "deno test --env --allow-env --allow-read --allow-ffi --allow-sys --allow-net"
},
"imports": {
"@faker-js/faker": "npm:@faker-js/faker@^9.7.0",
"@langchain/core": "npm:@langchain/core@^0.3.53",
"@langchain/langgraph": "npm:@langchain/langgraph@^0.2.68",
"@types/bcrypt": "npm:@types/bcrypt@^5.0.2",
"@types/cookie-parser": "npm:@types/cookie-parser@^1.4.8",
"@types/cors": "npm:@types/cors@^2.8.18",
"@types/express": "npm:@types/express@^5.0.1",
"@types/pg": "npm:@types/pg@^8.15.1",
"@types/supertest": "npm:@types/supertest@^6.0.3",
"bcrypt": "npm:bcrypt@^6.0.0",
"cookie-parser": "npm:cookie-parser@^1.4.7",
"cors": "npm:cors@^2.8.5",
"drizzle-kit": "npm:drizzle-kit@^0.31.1",
"drizzle-orm": "npm:drizzle-orm@^0.43.1",
"express": "npm:express@^5.1.0",
"@langchain/mistralai": "npm:@langchain/mistralai@^0.2.0",
"jose": "npm:jose@^6.0.11",
"pg": "npm:pg@^8.16.0",
"socket.io": "npm:socket.io@^4.8.1",
"socket.io-client": "npm:socket.io-client@^4.8.1",
"supertest": "npm:supertest@^7.1.1",
"uuid": "npm:uuid@^11.1.0",
"zod": "npm:zod@^3.24.4"
},
"nodeModulesDir": "auto",
"unstable": [
"sloppy-imports"
]
}
Loading