Um SaaS completo para geração de imagens usando inteligência artificial, construído com Next.js, TypeScript, MongoDB e integração com OpenAI e Stripe.
- Landing Page Atrativa: Interface moderna e responsiva
- Autenticação Completa: Sistema JWT com refresh tokens
- Geração de Imagens: Integração com OpenAI DALL-E 3
- Sistema de Pagamentos: Integração completa com Stripe
- Dashboard do Usuário: Interface intuitiva para gerenciar imagens
- Controle de Uso: Limite de imagens por plano
- Histórico de Imagens: Galeria com todas as imagens geradas
- Dockerizado: Pronto para produção
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS
- Backend: Next.js API Routes, MongoDB, Mongoose
- Autenticação: JWT com refresh tokens
- Pagamentos: Stripe
- IA: OpenAI DALL-E 3
- Containerização: Docker, Docker Compose
- Proxy: Nginx
- Node.js 18+
- Docker e Docker Compose
- Conta OpenAI com API key
- Conta Stripe configurada
git clone <seu-repositorio>
cd ai-image-generator-saasnpm installCrie um arquivo .env.local baseado no .env.example:
# Database
MONGODB_URI=mongodb://localhost:27017/ai-image-generator
# JWT Secrets (gere chaves seguras em produção)
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
JWT_REFRESH_SECRET=your-super-secret-refresh-jwt-key-change-this-in-production
# Stripe
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_publishable_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
# OpenAI
OPENAI_API_KEY=sk-your-openai-api-key
# App URL
NEXTAUTH_URL=http://localhost:3000-
Crie produtos no Stripe Dashboard:
- Pro: R$ 29/mês, 100 imagens
- Business: R$ 99/mês, 500 imagens
-
Configure o webhook endpoint:
https://seu-dominio.com/api/stripe/webhook -
Eventos necessários no webhook:
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_succeededinvoice.payment_failed
-
Cartões de Teste: O sistema está configurado para aceitar cartões de teste do Stripe mesmo em produção para fins de demonstração:
- Visa: 4242 4242 4242 4242
- Mastercard: 5555 5555 5555 4444
- American Express: 3782 8224 6310 005
- Use qualquer data futura e CVC válido
- Configure
STRIPE_ALLOW_TEST_CARDS=trueno .env
# Subir apenas os serviços de banco
docker-compose -f docker-compose.dev.yml up -d
# Executar a aplicação em modo desenvolvimento
npm run dev# Configurar variáveis de ambiente no arquivo .env
cp .env.example .env
# Subir todos os serviços
docker-compose up -dA aplicação estará disponível em:
- App: http://localhost:3000
- MongoDB Express: http://localhost:8081 (admin/admin123)
src/
├── app/ # App Router do Next.js
│ ├── api/ # API Routes
│ │ ├── auth/ # Endpoints de autenticação
│ │ ├── images/ # Endpoints de imagens
│ │ └── stripe/ # Endpoints do Stripe
│ ├── dashboard/ # Dashboard do usuário
│ ├── login/ # Página de login
│ ├── register/ # Página de registro
│ ├── globals.css # Estilos globais
│ ├── layout.tsx # Layout principal
│ └── page.tsx # Landing page
├── lib/ # Utilitários e configurações
│ ├── contexts/ # Contextos React
│ ├── middleware/ # Middlewares de autenticação
│ ├── models/ # Modelos MongoDB
│ ├── auth.ts # Utilitários JWT
│ ├── database.ts # Conexão MongoDB
│ ├── openai.ts # Integração OpenAI
│ └── stripe.ts # Integração Stripe
├── types/ # Tipos TypeScript
└── components/ # Componentes reutilizáveis
- JWT Access Token: Expira em 15 minutos
- Refresh Token: Expira em 7 dias, armazenado no banco
- Renovação Automática: Interceptor Axios renova tokens automaticamente
- Segurança: Senhas hasheadas com bcrypt, tokens seguros
| Plano | Preço | Imagens/mês | Recursos |
|---|---|---|---|
| Gratuito | R$ 0 | 5 | Qualidade padrão |
| Pro | R$ 29 | 100 | HD, Histórico, API |
| Business | R$ 99 | 500 | Ultra HD, Marca personalizada |
O sistema inclui suporte completo para cartões de teste do Stripe, permitindo demonstrações sem cobrança real:
- Visa Aprovado:
4242 4242 4242 4242 - Mastercard:
5555 5555 5555 4444 - American Express:
3782 8224 6310 005 - Visa Brasil:
4000 0007 6000 0002
- Use qualquer data de expiração futura (ex: 12/25)
- Use qualquer CVC (123 para Visa/Master, 1234 para Amex)
- Use qualquer CEP válido
- O fluxo completo funciona, mas sem cobrança real
# No arquivo .env
STRIPE_ALLOW_TEST_CARDS=trueOs cartões de teste estão disponíveis na interface através do botão "Cartões de Teste" no header e seções de preços.
- Modelo: DALL-E 3 da OpenAI
- Formatos: 1024x1024, 1792x1024, 1024x1792
- Qualidades: Standard e HD
- Estilos: Vivid e Natural
- Validação: Filtros de conteúdo automáticos
- Rate Limiting: Nginx com limites por IP
- Logs: Console logs estruturados
- Health Check: Endpoint
/health - MongoDB Express: Interface web para banco
# Instalar Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Instalar Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose# Gerar certificados Let's Encrypt
sudo apt install certbot
sudo certbot certonly --standalone -d seu-dominio.com# Clonar repositório
git clone <seu-repositorio>
cd ai-image-generator-saas
# Configurar variáveis de produção
cp .env.example .env
# Editar .env com valores reais
# Subir aplicação
docker-compose up -dnpm run dev # Desenvolvimento
npm run build # Build de produção
npm run start # Iniciar produção
npm run lint # Linting
npm run type-check # Verificação de tipos-
Erro de conexão MongoDB
docker-compose logs mongo
-
Erro OpenAI API
- Verificar se a API key está correta
- Verificar créditos na conta OpenAI
-
Erro Stripe Webhook
- Verificar se o endpoint está acessível
- Verificar secret do webhook
# Logs da aplicação
docker-compose logs app
# Logs do banco
docker-compose logs mongo
# Logs do Nginx
docker-compose logs nginx- Fork o projeto
- Crie uma branch (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.
Para suporte, entre em contato através do email: suporte@aiimagemaker.com
Desenvolvido com ❤️ usando Next.js e OpenAI