This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Repository files navigation

DEPRECATED

since 24/06/2020

This repository will no longer receive maintenance, future updates will be applied to the parent project in:flaskeleton-api


Flaskeleton API

Uma aplicação minimalista e completamente funcional contemplando todas as características de uma API completa utilizando Flask, SQLAlchemy, Flask-Migrate, Marshmallow e APIBlueprint.

Setup inicial

Recomendamos utilizar um ambiente virtual python para execução do projeto. Problemas com o SQLAlchemy e conflitos entre pacotes ocorrem facilmente quando utilizado num único ambiente com outros projeto python.

Portanto, indicamos a utilização do VirtualEnvWrapper para isolar a instalação dos pacotes em requirements.txt.

Caso não esteja interessado em utilizar um ambiente virtual python, também tem a opção de rodar num container docker. Recomendamos a instalação do docker-compose, o qual já está integrado com este projeto.

Com o docker-compose já instalado, execute

docker-compose up -d

para subir o container e iniciar a aplicação e

docker-compose down

para matar o container e encerrar a aplicação.

Para auxiliar no processo de deploy, debug e testes, o arquivo Makefile contém alguns comandos úteis que podem ser acessados através de

make help

Estrutura do projeto

A aplicação consiste em um pacote principal app que contém toda a aplicação. Dentro do pacote principal são encontrados pacotes das camadas de controle, modelo, visualização (endpoints) e acesso aos dados.

|-- app
| | -- controllers
| | -- dao
| | -- errors
| | -- models
| | -- resources
| | ...

Além dos pacotes principais, pacotes como docs e templates são auxiliares e utilizados pela API Blueprint, além do pacote migrations utilizado pela extensão Flask-Migrate.

Flask-Migrate

A aplicação é completamente funcional e autocontida, ou seja, funciona sem dependências externas. Para auxiliar nesse processo foi utilizado juntamente com o ORM SQLAlchemy a extensão Flask-Migrate. É ela a responsável por construir a base de dados, migrar alterações e manter a consistência dos dados. Para tanto, é necessário efetuar, antes de iniciar a aplicação, a construção da base de dados.

A base de dados, nessa aplicação, é mantida utilizando o SQLite3. Portanto, antes de executar a aplicação, certifique-se de que está rodando corretamente em sua máquina. O SQLite3 é uma excelente escolha para uma aplicação pequena, como essa, que serve de exemplo para uso do ORM e principais funcionalidades do framework Flask.

Ao executar pela primeira vez, rode o comando

flask db migrate

para garantir a criação de tabelas e gerar um script de revisão que levará quaisquer mudanças nos seus models para suas tabelas.

Em seguida, execute

flask db upgrade

para de fato atualizar as tabelas da base de dados.

Ao concluir com sucesso pela primeira vez os comandos acima, note a criação de um arquivo chamado flaskeleton.db. Esse é o banco de dados SQLite3 da aplicação.

Caso suba a aplicação em docker container, um comando no Makefile está disponível para criação das tabelas dentro da base de dados no container.

make create-db

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://127.0.0.1:{PORTA}/flaskeleton-api/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Sempre que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html que é servido através do endpoint da aplicação.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

About

Skeleton de uma Flask API completamente funcional que auxilia no desenvolvimento de novas aplicações.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages