{"id":30000460,"url":"https://github.com/alan-oliveir/gestao-escolar","last_synced_at":"2026-05-18T15:06:01.411Z","repository":{"id":304760731,"uuid":"1015754272","full_name":"Alan-oliveir/gestao-escolar","owner":"Alan-oliveir","description":"Este projeto é uma API desenvolvida com FastAPI para gerenciar alunos, cursos e matrículas em uma instituição de ensino.","archived":false,"fork":false,"pushed_at":"2025-07-15T02:20:22.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-15T06:33:15.894Z","etag":null,"topics":["cloud","devops","docker","gcp-cloud-run"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alan-oliveir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-08T01:56:28.000Z","updated_at":"2025-07-15T02:20:25.000Z","dependencies_parsed_at":"2025-07-15T06:33:18.774Z","dependency_job_id":"58e72cab-d8e0-4e81-bc49-5c9ddab84fd8","html_url":"https://github.com/Alan-oliveir/gestao-escolar","commit_stats":null,"previous_names":["alan-oliveir/gestao-escolar"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Alan-oliveir/gestao-escolar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alan-oliveir%2Fgestao-escolar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alan-oliveir%2Fgestao-escolar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alan-oliveir%2Fgestao-escolar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alan-oliveir%2Fgestao-escolar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alan-oliveir","download_url":"https://codeload.github.com/Alan-oliveir/gestao-escolar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alan-oliveir%2Fgestao-escolar/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268837794,"owners_count":24314982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-05T02:00:12.334Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","devops","docker","gcp-cloud-run"],"created_at":"2025-08-05T05:09:07.528Z","updated_at":"2026-05-18T15:05:56.378Z","avatar_url":"https://github.com/Alan-oliveir.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎓 API de Gestão Escolar - Imersão DevOps\n\nEsta é uma API RESTful moderna desenvolvida com **FastAPI** para gerenciar alunos, cursos e matrículas de uma instituição de ensino. O projeto demonstra práticas de DevOps, incluindo containerização com Docker, documentação interativa com Scalar, e deploy na nuvem com Google Cloud Run.\n\n## 🚀 Características\n\n- ✅ **API RESTful** completa com FastAPI\n- ✅ **Documentação interativa** moderna com Scalar\n- ✅ **Containerização** com Docker\n- ✅ **Deploy na nuvem** com Google Cloud Run\n- ✅ **Banco de dados** SQLite com SQLAlchemy\n- ✅ **Validação de dados** com Pydantic\n- ✅ **Estrutura modular** com routers separados\n\n## 🛠️ Tecnologias Utilizadas\n\n- **[FastAPI](https://fastapi.tiangolo.com/)** - Framework web moderno e rápido\n- **[SQLAlchemy](https://www.sqlalchemy.org/)** - ORM para Python\n- **[Pydantic](https://pydantic.dev/)** - Validação de dados\n- **[Scalar](https://scalar.com/)** - Documentação interativa moderna\n- **[Docker](https://www.docker.com/)** - Containerização\n- **[Google Cloud Run](https://cloud.google.com/run)** - Deploy serverless\n- **[SQLite](https://www.sqlite.org/)** - Banco de dados leve\n\n## 📋 Pré-requisitos\n\nAntes de começar, certifique-se de ter instalado:\n\n- **[Python 3.10+](https://www.python.org/downloads/)**\n- **[Git](https://git-scm.com/downloads)**\n- **[Docker](https://www.docker.com/get-started/)** (opcional, para containerização)\n- **[Google Cloud CLI](https://cloud.google.com/sdk/docs/install)** (para deploy na nuvem)\n\n## 🏃‍♂️ Executando o Projeto\n\n### Opção 1: Executar Localmente\n\n1. **Clone o repositório:**\n   ```bash\n   git clone \u003cseu-repositorio\u003e\n   cd api-gestao-escolar\n   ```\n\n2. **Crie e ative um ambiente virtual:**\n   ```bash\n   # Criar ambiente virtual\n   python3 -m venv venv\n   \n   # Ativar no Linux/Mac\n   source venv/bin/activate\n   \n   # Ativar no Windows\n   # Primeiro, execute como administrador:\n   Set-ExecutionPolicy RemoteSigned\n   # Depois ative:\n   venv\\Scripts\\activate\n   ```\n\n3. **Instale as dependências:**\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Execute a aplicação:**\n   ```bash\n   uvicorn app:app --reload\n   ```\n\n5. **Acesse a documentação:**\n   - **Documentação Scalar (moderna):** [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)\n   - **API Base:** [http://127.0.0.1:8000](http://127.0.0.1:8000)\n\n### Opção 2: Executar com Docker\n\n1. **Construa a imagem Docker:**\n   ```bash\n   docker build -t api-gestao-escolar .\n   ```\n\n2. **Execute o container:**\n   ```bash\n   docker run -p 8000:8000 api-gestao-escolar\n   ```\n\n3. **Acesse a aplicação:**\n   - **Documentação:** [http://localhost:8000/docs](http://localhost:8000/docs)\n\n## ☁️ Deploy no Google Cloud\n\n### Configuração Inicial\n\n1. **Autentique no Google Cloud:**\n   ```bash\n   gcloud auth login\n   gcloud config set project SEU_PROJECT_ID\n   ```\n\n2. **Deploy direto no Cloud Run:**\n   ```bash\n   gcloud run deploy api-gestao-escolar \\\n     --source . \\\n     --platform managed \\\n     --region us-central1 \\\n     --allow-unauthenticated \\\n     --port 8000\n   ```\n\n### Deploy via Docker (Alternativo)\n\n1. **Configure o Docker para o Google Cloud:**\n   ```bash\n   gcloud auth configure-docker\n   ```\n\n2. **Construa e envie a imagem:**\n   ```bash\n   docker build -t gcr.io/SEU_PROJECT_ID/api-gestao-escolar .\n   docker push gcr.io/SEU_PROJECT_ID/api-gestao-escolar\n   ```\n\n3. **Deploy no Cloud Run:**\n   ```bash\n   gcloud run deploy api-gestao-escolar \\\n     --image gcr.io/SEU_PROJECT_ID/api-gestao-escolar \\\n     --platform managed \\\n     --region us-central1 \\\n     --allow-unauthenticated \\\n     --port 8000\n   ```\n\n## 📁 Estrutura do Projeto\n\n```\napi-gestao-escolar/\n│\n├── app.py                  # Aplicação principal FastAPI\n├── database.py             # Configuração do banco SQLite\n├── models.py               # Modelos SQLAlchemy\n├── schemas.py              # Schemas Pydantic com validação\n├── requirements.txt        # Dependências Python\n├── Dockerfile             # Configuração Docker\n├── .dockerignore          # Arquivos ignorados pelo Docker\n├── README.md              # Documentação do projeto\n│\n└── routers/               # Módulos de rotas\n    ├── alunos.py          # Endpoints de alunos\n    ├── cursos.py          # Endpoints de cursos\n    └── matriculas.py      # Endpoints de matrículas\n```\n\n## 🔗 Endpoints da API\n\n### 👨‍🎓 Alunos\n- `GET /alunos` - Listar todos os alunos\n- `POST /alunos` - Criar novo aluno\n- `GET /alunos/{id}` - Buscar aluno por ID\n- `PUT /alunos/{id}` - Atualizar aluno\n- `DELETE /alunos/{id}` - Excluir aluno\n- `GET /alunos/nome/{nome}` - Buscar por nome\n- `GET /alunos/email/{email}` - Buscar por email\n\n### 📚 Cursos\n- `GET /cursos` - Listar todos os cursos\n- `POST /cursos` - Criar novo curso\n- `GET /cursos/{codigo}` - Buscar curso por código\n- `PUT /cursos/{codigo}` - Atualizar curso\n\n### 📋 Matrículas\n- `POST /matriculas` - Criar nova matrícula\n- `GET /matriculas/aluno/{nome}` - Listar cursos do aluno\n- `GET /matriculas/curso/{codigo}` - Listar alunos do curso\n\n## 🎯 Funcionalidades Principais\n\n### Gestão de Alunos\n- Cadastro completo com validação de email\n- Busca por nome (parcial) e email\n- Atualização e exclusão de registros\n\n### Gestão de Cursos\n- Cadastro com código único\n- Busca por código do curso\n- Atualização de informações\n\n### Sistema de Matrículas\n- Vinculação entre alunos e cursos\n- Consulta de cursos por aluno\n- Consulta de alunos por curso\n\n## 💾 Banco de Dados\n\nO projeto utiliza **SQLite** como banco de dados, que é:\n- **Leve e portável** - Perfeito para desenvolvimento e demonstração\n- **Sem configuração** - Criado automaticamente na primeira execução\n- **Arquivo único** - Armazenado como `escola.db`\n\n### Reiniciar o Banco\nPara reiniciar o banco de dados (⚠️ **apaga todos os dados**):\n```bash\nrm escola.db\n```\n\n## 🧪 Testando a API\n\n### Usando a Documentação Interativa\n1. Acesse [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)\n2. Explore os endpoints disponíveis\n3. Teste diretamente na interface Scalar\n\n### Usando curl (exemplos)\n```bash\n# Criar um aluno\ncurl -X POST \"http://127.0.0.1:8000/alunos\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"nome\": \"João Silva\",\n    \"email\": \"joao@email.com\",\n    \"telefone\": \"(11) 99999-9999\"\n  }'\n\n# Listar alunos\ncurl -X GET \"http://127.0.0.1:8000/alunos\"\n\n# Criar um curso\ncurl -X POST \"http://127.0.0.1:8000/cursos\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"nome\": \"FastAPI para Iniciantes\",\n    \"codigo\": \"FAST001\",\n    \"descricao\": \"Curso introdutório de FastAPI\"\n  }'\n```\n\n## 🔧 Desenvolvimento\n\n### Executar em Modo de Desenvolvimento\n```bash\nuvicorn app:app --reload --host 0.0.0.0 --port 8000\n```\n\n### Instalar Dependências de Desenvolvimento\n```bash\npip install -r requirements.txt\n```\n\n## 🚀 Sobre a Imersão DevOps\n\nEste projeto foi desenvolvido durante a **Imersão Cloud DevOps da Alura e Google Cloud**, onde aprendemos:\n\n- **Fundamentos do DevOps** - Cultura e práticas que unem desenvolvimento e operações\n- **Automação de Processos** - Pipelines eficientes e deploy contínuo\n- **Containerização** - Docker para ambientes consistentes\n- **Deploy na Nuvem** - Google Cloud Run para aplicações escaláveis\n- **Monitoramento e Observabilidade** - Práticas para aplicações em produção\n\n### Por que DevOps?\n- ✅ **Redução de falhas** em produção\n- ✅ **Escalabilidade** com segurança\n- ✅ **Entrega contínua** de valor ao cliente\n- ✅ **Automação** de processos repetitivos\n\n## 🤝 Contribuindo\n\nContribuições são bem-vindas! Sinta-se à vontade para:\n\n1. Fazer fork do projeto\n2. Criar uma branch para sua feature (`git checkout -b feature/nova-feature`)\n3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)\n4. Push para a branch (`git push origin feature/nova-feature`)\n5. Abrir um Pull Request\n\n## 📄 Licença\n\nEste projeto está sob a licença MIT. Veja o arquivo `LICENSE` para mais detalhes.\n\n## ❤️ Agradecimentos e Créditos \n\n**Este projeto foi adaptado da Imersão Cloud DevOps**\n\n- **Alura:** [https://www.alura.com.br](https://www.alura.com.br)\n- **Google Cloud:** [https://cloud.google.com](https://cloud.google.com)\n\n## 📞 Contato\n\nDesenvolvido por Alan de O. Gonçalves baseado no projeto feito durante a imersão.\n\n[![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/Alan-oliveir)\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/alan-ogoncalves)\n---\n\n⭐ **Se este projeto te ajudou, considere dar uma estrela no repositório!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falan-oliveir%2Fgestao-escolar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falan-oliveir%2Fgestao-escolar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falan-oliveir%2Fgestao-escolar/lists"}