Sua jornada no mundo dev cresce aqui.
Uma plataforma completa para desenvolvedores aprimorarem suas habilidades através de desafios práticos de programação com validação automática.
O CodeUp é uma plataforma educacional que permite aos desenvolvedores:
- ✅ Resolver desafios de programação em Python
- 📤 Submeter soluções através de upload de arquivos
- 🧪 Validação automática com casos de teste personalizados
- 📊 Acompanhar progresso com status de aprovação/reprovação
- 👨💼 Gerenciar desafios (para administradores)
- 🔐 Sistema completo de autenticação e autorização
graph TB
A[Frontend - Next.js] --> B[API - Node.js/Fastify]
A --> C[Validator - PHP]
B --> D[Database - Prisma]
B --> E[Storage - Firebase]
C --> F[Python Runtime]
| Componente | Tecnologia | Versão |
|---|---|---|
| Frontend | Next.js + TypeScript | 14+ |
| Backend API | Node.js + Fastify | 18+ |
| Validador | PHP | 8.3 |
| Banco de Dados | PostgreSQL + Prisma | - |
| Storage | Firebase Storage | - |
| UI/UX | Tailwind CSS + Shadcn/UI | - |
| Autenticação | NextAuth.js | - |
| Containerização | Docker + Docker Compose | - |
- Docker e Docker Compose instalados
- Node.js 18+ (opcional, para desenvolvimento)
- pnpm (gerenciador de pacotes)
git clone https://github.com/seu-usuario/codeup.git
cd codeup# Copie os arquivos de exemplo
cp .env.example .env
cp next/.env.example next/.env
cp nodejs/.env.example nodejs/.env
cp php/.env.example php/.env# Construa e inicie todos os serviços
pnpm docker-compose:prod| Serviço | URL | Descrição |
|---|---|---|
| Frontend | http://localhost:3000 | Interface principal |
| API Node.js | http://localhost:3030 | API REST |
| Validador PHP | http://localhost:8080 | Serviço de validação |
| Firebase Emulator | http://localhost:4000 | Storage emulado |
codeup/
├── 🌐 next/ # Frontend Next.js
│ ├── src/
│ │ ├── app/ # App Router
│ │ ├── components/ # Componentes UI
│ │ ├── modules/ # Módulos específicos
│ │ │ ├── auth/ # Autenticação
│ │ │ ├── challenge/ # Gerenciar desafios
│ │ │ ├── dashboard/ # Dashboard usuário
│ │ │ └── test-case/ # Casos de teste
│ │ └── hooks/ # Custom hooks
│ └── prisma/ # Schema do banco
│
├── 🔧 nodejs/ # API Backend
│ ├── src/
│ │ ├── config/ # Configurações
│ │ ├── routes/ # Rotas da API
│ │ │ ├── challenge/ # CRUD desafios
│ │ │ ├── test-case/ # Casos de teste
│ │ │ ├── run/ # Submissões
│ │ │ └── user/ # Usuários
│ │ ├── services/ # Lógica de negócio
│ │ ├── middlewares/ # Middlewares
│ │ └── schemas/ # Validação Zod
│ └── prisma/ # Migrações
│
├── 🐘 php/ # Validador de Código
│ └── index.php # Executor Python
│
└── 🐳 docker-compose.yml # Orquestração
- Dashboard intuitivo com lista de desafios
- Download de enunciados (PDFs)
- Submit de soluções (.py)
- Feedback automático (Aprovado/Reprovado)
- Histórico de submissões
- Resubmissão de soluções
- CRUD completo de desafios
- Upload de enunciados (PDF)
- Gerenciar casos de teste (entrada/saída)
- Monitorar submissões
- Sistema de permissões
- Execução segura de código Python
- Comparação com casos de teste
- Tratamento de erros
- Feedback detalhado
- Tema escuro com paleta roxa/violeta
- Componentes modernos com Shadcn/UI
- Responsivo para mobile e desktop
- Animações suaves e micro-interações
| Dashboard | Submissão | Gerenciar |
|---|---|---|
![]() |
![]() |
![]() |
cd next
pnpm install
pnpm devcd nodejs
pnpm install
pnpm devcd nodejs
npx prisma migrate dev
npx prisma studioGET /challenge # Listar desafios
POST /challenge # Criar desafio (Admin)
PUT /challenge/:id # Atualizar desafio (Admin)
DELETE /challenge/:id # Deletar desafio (Admin)GET /test-case/:challengeId # Listar casos de teste
POST /test-case # Criar caso de teste (Admin)
PUT /test-case/:id # Atualizar caso (Admin)
DELETE /test-case/:id # Deletar caso (Admin)POST /run # Submeter solução
PUT /run/:id # Atualizar submissão
GET /run/validate/:id # Validar submissãoPOST /user/login # Login
POST /user/register # Registro
GET /user/profile # PerfilO sistema utiliza NextAuth.js com:
- JWT Tokens para sessões
- Credentials Provider para login
- Role-based access (User/Admin)
- Protected routes no frontend e backend
- Middleware auth no frontend e backend
services:
next: # Frontend Next.js (porta 3000)
nodejs: # API Backend (porta 3030)
php: # Validador PHP (porta 8080)
firebase: # Storage Emulator (porta 4000)- Iniciar todos os serviços em build
pnpm docker-compose:prod- Iniciar todos os serviços em modo desenvolvimento
pnpm docker-compose:dev- Derrubar todos os serviços
pnpm docker-compose:down{
"dev": "next dev -p 3001",
"dev:turbopack": "next dev --turbopack -p 3000",
"build": "next build",
"start": "next start",
"lint": "next lint"
}{
"seed": "tsx services/seed.ts",
"dev": "tsx watch src/app.ts",
"build": "tsup src --format esm --external @prisma/generated/prisma",
"start": "node dist/app.js",
"generate": "pnpx prisma generate",
"migrate": "pnpx prisma migrate",
"studio": "pnpx prisma studio",
"format": "pnpx prisma format"
}- Upload: Usuário faz upload da solução (.py)
- Storage: Arquivo é salvo no Firebase Storage
- Trigger: Sistema aciona o validador PHP
- Execução: PHP executa o código Python com os casos de teste
- Comparação: Saída é comparada com a esperada
- Resultado: Feedback é retornado (Aprovado/Reprovado)
sequenceDiagram
participant U as User
participant F as Frontend
participant A as API
participant P as PHP Validator
participant S as Storage
U->>F: Submit .py file
F->>A: POST /run
A->>S: Upload file
A->>P: Validate run
P->>S: Download file
P->>P: Execute Python
P->>A: Return results
A->>F: Update status
F->>U: Show feedback
- Execução isolada de código Python
- Sanitização de entradas
- Rate limiting nas APIs
- CORS configurado
- Validação com Zod schemas
- Autenticação JWT
- Ranking de usuários
- User Levels (níveis de usuário)
- Gamification (pontos, badges, etc.)
- Pet (adicionar um mascote que acompanha seu desenvolvimento)
- Achievements (conquistas)
- Fork o projeto
- Crie uma branch (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add 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 mais detalhes.
Desenvolvido com ❤️ por um desenvolvedor apaixonado por educação e tecnologia.
Encontrou algum problema? Abra uma issue ou entre em contato!
-
Esse é um projeto que ainda está em desenvolvimento e planejo muitas melhoras, porém no momento, possuo outras ocupações.
-
Pretendo redesenhar o design, para adicionar mais recursos e melhorar a experiência do usuário. Em futuro indeterminado, espero poder dedicar mais tempo a ele.
-
Agradeço a compreensão de todos!
CodeUp - Sua jornada no mundo dev cresce aqui! 🚀


