Skip to content

FedeFreitas/Kars

Repository files navigation

Kars 2.0

Sistema de Gestão para Locadoras de Veículos.

Sobre o Projeto

O Kars é uma plataforma completa para gestão de locadoras de veículos, oferecendo controle de frota, contratos, clientes, finanças, multas, manutenções e muito mais.

Tecnologias

Backend (API)

  • NestJS - Framework Node.js
  • Prisma - ORM para PostgreSQL
  • Fastify - HTTP Server
  • Redis - Cache e sessões
  • RabbitMQ - Filas de mensagens
  • MinIO - Armazenamento de arquivos (S3-compatible)

Frontend (Web)

  • Next.js 15 - Framework React
  • React 19 - Biblioteca UI
  • TailwindCSS - Estilização
  • React Query - Gerenciamento de estado do servidor
  • React Hook Form - Formulários
  • Zod - Validação de schemas

Infraestrutura

  • Docker - Containerização
  • PostgreSQL 16 - Banco de dados
  • Turbo - Build system (monorepo)
  • pnpm - Gerenciador de pacotes

Estrutura do Projeto

kars/
├── apps/
│   ├── api/          # Backend NestJS (porta 4000)
│   │   ├── prisma/   # Schema e migrations
│   │   └── src/
│   │       └── modules/   # Módulos da aplicação
│   ├── web/          # Frontend Next.js — painel/portal (porta 3000)
│   │   └── src/
│   │       ├── app/       # App Router
│   │       └── components/
│   └── landing/      # Landing page Next.js (porta 3001)
├── packages/
│   └── shared/       # Código compartilhado (schemas, tipos, utils)
├── scripts/          # Scripts de deploy e setup
├── docker-compose.yml
├── docker-compose.prod.yml
└── package.json

Pré-requisitos

  • Node.js >= 20.0.0
  • pnpm >= 9.0.0
  • Docker e Docker Compose

Instalação

1. Clone o repositório

git clone https://github.com/seu-usuario/kars.git
cd kars

2. Setup Rápido (Recomendado)

No Linux/Mac:

chmod +x scripts/setup-dev.sh
./scripts/setup-dev.sh

3. Setup Manual

3.1 Configurar variáveis de ambiente

cp .env.example .env

Edite o arquivo .env conforme necessário.

3.2 Iniciar serviços Docker

docker compose up -d

3.3 Instalar dependências

pnpm install

3.4 Configurar banco de dados

# Gerar client do Prisma
pnpm db:generate

# Rodar migrations
pnpm db:migrate

# Popular banco com dados iniciais
pnpm db:seed

Iniciando o Projeto

Iniciar API, Web e Landing juntos

pnpm dev

Iniciar separadamente

# Terminal 1 - API
pnpm dev:api

# Terminal 2 - Web
pnpm dev:web

# Terminal 3 - Landing
pnpm dev:landing

Comandos Disponíveis

Comando Descrição
pnpm dev Inicia API, Web e Landing em modo desenvolvimento
pnpm dev:api Inicia apenas a API
pnpm dev:web Inicia apenas o Web
pnpm dev:landing Inicia apenas a Landing
pnpm setup Setup inicial de desenvolvimento (scripts/setup-dev.sh)
pnpm build Build de produção de todos os apps
pnpm lint Executa linting em todos os apps
pnpm format Formata todos os arquivos
pnpm db:generate Gera Prisma Client
pnpm db:migrate Executa migrations pendentes
pnpm db:seed Popula banco com dados de teste
pnpm db:studio Abre Prisma Studio
pnpm db:reset Reseta banco (CUIDADO!)
pnpm docker:up Inicia containers Docker
pnpm docker:down Para containers Docker

URLs e Portas

Serviço URL Descrição
Web http://localhost:3000 Painel/Portal Next.js
Landing http://localhost:3001 Landing page Next.js
API http://localhost:4000 Backend NestJS
API Docs http://localhost:4000/api/docs Swagger/OpenAPI
PostgreSQL localhost:5432 Banco de dados
Redis localhost:6379 Cache
RabbitMQ http://localhost:15672 Painel de gerenciamento
MinIO http://localhost:9001 Console de armazenamento
MailCatcher http://localhost:1080 Emails de desenvolvimento

Credenciais de Desenvolvimento

Banco de Dados

  • Host: localhost
  • Porta: 5432
  • Usuário: kars
  • Senha: kars_dev
  • Database: kars

RabbitMQ

  • Usuário: kars
  • Senha: kars_dev

MinIO

  • Usuário: kars
  • Senha: kars_dev

Usuários de Teste

Tipo Email Senha
Admin admin@example.com ChangeMe123!

Variáveis de Ambiente

As principais variáveis estão no arquivo .env.example. Copie para .env e configure:

# Aplicação
NODE_ENV=development
API_PORT=4000
WEB_PORT=3000
APP_URL=http://localhost:3000
API_URL=http://localhost:4000

# Banco de Dados
DATABASE_URL=postgresql://kars:kars_dev@localhost:5432/kars

# Redis
REDIS_URL=redis://localhost:6379

# RabbitMQ
RABBITMQ_URL=amqp://kars:kars_dev@localhost:5672

# MinIO/S3
S3_ENDPOINT=http://localhost:9000
S3_ACCESS_KEY=kars
S3_SECRET_KEY=kars_dev
S3_BUCKET=kars

# JWT (altere em produção!)
JWT_ACCESS_SECRET=dev_access_secret_change_me_in_production
JWT_REFRESH_SECRET=dev_refresh_secret_change_me_in_production

Módulos da Aplicação

  • Auth - Autenticação e autorização (JWT, Google OAuth, 2FA)
  • Users - Gestão de usuários
  • Clients - Cadastro de clientes
  • Fleet - Controle de frota de veículos
  • Contracts - Gestão de contratos de locação
  • Finance - Controle financeiro
  • Billing - Faturamento
  • Deposits - Gestão de cauções
  • Fines - Controle de multas
  • Maintenance - Manutenção de veículos
  • Workshops - Cadastro de oficinas
  • Movements - Movimentações de veículos
  • Leads - Gestão de leads
  • NPS - Pesquisa de satisfação
  • Reports - Relatórios
  • Notifications - Sistema de notificações
  • WhatsApp - Integração com WhatsApp
  • Email - Envio de emails
  • Uploads - Upload de arquivos

Deploy

Produção com Docker

pnpm docker:prod

Deploy no Railway

Os arquivos railway.toml estão configurados em cada app para deploy automático.

Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

Licença

Distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

Sistsema de gestão de locações.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages