2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00
2026-08-31 14:10:20 -03:00

Course Plat

Plataforma de gerenciamento de cursos, turmas, alunos e professores.

Stack

  • Frontend: Next.js 15, React, Tailwind CSS
  • Backend: Next.js API Routes, Server Actions
  • Database: MongoDB
  • Storage: MinIO (S3-compatible) ou Local
  • Auth: NextAuth.js

Quick Start (Desenvolvimento)

1. Clone e instale dependências

git clone <repo-url>
cd course-plat
npm install

2. Configure variáveis de ambiente

cp .env.example .env.local

Edite .env.local com suas configurações:

# Mínimo para desenvolvimento:
NODE_ENV=development
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=qualquer-segredo-aqui-min-32-caracteres
MONGODB_URI=mongodb://localhost:27017/course-plat

3. Inicie os serviços com Docker

# MongoDB + MinIO
docker compose up -d

# Verifique que os containers estão rodando
docker ps

4. Inicie a aplicação

npm run dev

Acesse: http://localhost:3000

Serviços Docker

Serviço Porta Descrição
App 3000 Aplicação Next.js
MongoDB 27017 Banco de dados
Mongo Express 8081 UI do MongoDB (opcional)
MinIO API 9000 Storage S3-compatible
MinIO Console 9001 UI do MinIO

Estrutura de Projetos

course-plat/
├── src/app/                    # App Router Next.js
│   ├── (auth)/                # Rotas de autenticação
│   ├── (protected)/           # Rotas protegidas
│   ├── api/                   # API Routes
│   └── lib/                   # Utilitários e helpers
├── docker/                     # Configurações Docker
│   ├── minio/                 # MinIO setup
│   └── production/            # Configurações de produção
├── storage/                    # Armazenamento local (se usado)
└── .env.local                  # Variáveis de ambiente (não commitar)

Deploy em Produção

Veja DEPLOYMENT.md para instruções completas.

Resumo rápido:

# 1. Configurar ambiente
cp .env.example .env.production
nano .env.production  # preencher variáveis

# 2. Buildar imagem
docker build -f docker/production/Dockerfile -t course-plat:latest .

# 3. Iniciar serviços
docker compose -f docker/production/docker-compose.yml up -d

# 4. Configurar backup (crontab)
0 2 * * * cd /var/www/course-plat && ./docker/production/backup-all.sh

Variáveis de Ambiente

Veja .env.example para todas as variáveis disponíveis.

Principais:

Variável Descrição Default
NODE_ENV Ambiente development
NEXTAUTH_URL URL da app http://localhost:3000
NEXTAUTH_SECRET Segredo auth (obrigatório)
MONGODB_URI String conexão MongoDB (obrigatório)
STORAGE_TYPE s3 ou local s3
S3_ENDPOINT Endpoint MinIO/S3 http://localhost:9000
S3_BUCKET Nome do bucket course-plat

Storage de Arquivos

Sistema Híbrido

A aplicação suporta dois tipos de armazenamento:

1. S3/MinIO (recomendado)

  • Arquivos armazenados em bucket privado
  • Acesso via proxy da aplicação (/api/files/...)
  • Controle de permissões por turma/classe

2. Local

  • Arquivos em disco (./storage/uploads)
  • Útil para desenvolvimento ou servidores pequenos

URLs de Arquivos

Onde Formato
Banco de dados proxy://pasta/arquivo.pdf
Frontend /api/files/pasta/arquivo.pdf

Use getFileUrl(url) de @/app/lib/utils/storage/fileUrl para converter.

Comandos Úteis

# Desenvolvimento
npm run dev          # Inicia dev server
npm run build        # Build para produção
npm run start        # Inicia produção server

# Docker
docker compose up -d           # Inicia serviços
docker compose down            # Para serviços
docker compose logs -f         # Ver logs

# MongoDB (via Docker)
docker exec -it course-plat-mongodb mongosh
docker exec course-plat-mongodb mongodump --archive > backup.gz

# MinIO (via Docker)
docker exec -it course-plat-minio mc alias set local http://localhost:9000 minioadmin minioadmin
docker exec course-plat-minio mc ls local/course-plat

Backup

MongoDB

# Script de backup
./docker/production/backup-mongodb.sh

# Manual
docker exec course-plat-mongodb mongodump --gzip --archive > backup.gz

MinIO

# Script de backup
./docker/minio/backup-minio.sh

Troubleshooting

MongoDB não conecta

# Verificar se container está rodando
docker ps | grep mongo

# Ver logs
docker logs course-plat-mongodb

MinIO Access Denied

# Verificar política do bucket
docker exec course-plat-minio mc anonymous get local/course-plat

# Bucket deve ser "none" (privado)
docker exec course-plat-minio mc anonymous set none local/course-plat

Arquivos antigos não funcionam

Verifique se getFileUrl() está sendo usado para converter URLs. Arquivos antigos com URLs diretas do MinIO precisam ser convertidas para o proxy.

Documentação Adicional

Licença

[Adicionar licença]

S
Description
Course platform repository
Readme
2.7 MiB
Languages
JavaScript 96.5%
CSS 2.6%
Shell 0.8%