jnfilter @ ef20913e3bb403ae46c5780fe6b6a560cb0c4479

feat: Adiciona documentacao
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d7c20bfad78c574f653e2492f399ce5ba071acfb
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,14 @@
+pages:
+  image:
+    name: pandoc/alpine
+    entrypoint:
+      - ""
+  stage: build
+  script:
+    - mkdir public
+    - pandoc -s --include-in-header=docs/bamboo.min.css -s README.md -o public/index.html
+  artifacts:
+    paths:
+      - public
+  only:
+    - main
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f13190d3875f7a9d4ff6b378279830e17e6524f4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,55 @@
+# Nerdcast filtro para podcast
+
+Um simples filtro para o Nerdcast. Hoje em dia o _feed_ do _podcast_ e bem
+poluído, vários temas, quadros e programas. Esse projeto e um filtro simples
+para tirar alguns programas do _feed_ ou mesmo dividi-los em _feeds_
+diferentes. Os seguintes seguimentos são suportados:
+
+- `nerdcast`
+- `empreendedor`
+- `mamicas`
+- `english`
+- `nerdcash`
+- `bunker`
+- `tech`
+- `genera`
+
+## Para usuarios
+
+Por padrão ele só pega a série principal lançada toda sexta. Para usar basta 
+adicionar a seguinte URL no seu agregador:
+
+```
+https://jnfilter.herokuapp.com/
+```
+
+Mas caso você queira, você pode escolher mais alguns seguimentos. Por exemplo,
+se voce quer ver somente a série principal e canecas de mamicas você
+adicionaria o seguinte URL no seu agregador:
+
+```
+https://jnfilter.herokuapp.com/?q=mamicas,nerdcast
+```
+
+Quer nerdcast e nerdcash? 
+
+```
+https://jnfilter.herokuapp.com/?q=nerdcash,nerdcast
+```
+
+E por aí vai, seguindo os seguimentos listados acima.
+
+## Para programadores
+
+E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e 
+filtrar os itens do _feed_ do podcast. Não tem cache nem nada sendo armazenado,
+todo processamento e feito a partir do feed para cada requisição.
+
+Para rodar basta instalar os requirements e rodar o seguinte código:
+
+```shell
+uvicorn main:app --host=0.0.0.0
+```
+
+E você já pode apontar o seu agregador favorito para sua maquina.
+
diff --git a/docs/bamboo.min.css b/docs/bamboo.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..5289de7f3c2965e1de6f5866adf9756c92f4c3f5
--- /dev/null
+++ b/docs/bamboo.min.css
@@ -0,0 +1,369 @@
+<style type="text/css">
+:root {
+    --b-font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+    --b-font-mono: Consolas, Monaco, monospace;
+    --b-txt: #2e3440;
+    --b-bg-1: #fff;
+    --b-bg-2: #eceff4;
+    --b-line: #eceff4;
+    --b-link: #bf616a;
+    --b-btn-bg: #242933;
+    --b-btn-txt: #fff;
+    --b-focus: #88c0d0
+}
+
+@media (prefers-color-scheme: dark) {
+    :root {
+        --b-txt: #eceff4;
+        --b-bg-1: #2e3440;
+        --b-bg-2: #3b4252;
+        --b-line: #3b4252
+    }
+}
+
+*, :after, :before {
+    box-sizing: border-box
+}
+
+html:focus-within {
+    scroll-behavior: smooth
+}
+
+body {
+    max-width: 70ch;
+    padding: 0 1rem;
+    margin: auto;
+    background: var(--b-bg-1);
+    font-family: var(--b-font-main);
+    text-rendering: optimizeSpeed;
+    line-height: 1.5;
+    color: var(--b-txt);
+    -moz-tab-size: 4;
+    tab-size: 4;
+    word-break: break-word;
+    -webkit-tap-highlight-color: transparent;
+    -webkit-text-size-adjust: 100%
+}
+
+address, audio, blockquote, dd, details, dl, fieldset, figure, h1, h2, h3, h4, h5, h6, hr, iframe, ol, p, pre, table, ul, video {
+    margin: 0 0 1.5rem
+}
+
+h1, h2, h3, h4, h5, h6 {
+    line-height: 1.25;
+    margin-top: 2rem
+}
+
+h1 {
+    font-size: 2rem
+}
+
+h2 {
+    font-size: 1.5rem
+}
+
+h3 {
+    font-size: 1.25rem
+}
+
+h4 {
+    font-size: 1rem
+}
+
+h5 {
+    font-size: .875rem
+}
+
+h6 {
+    font-size: .75rem
+}
+
+a {
+    color: var(--b-link);
+    text-decoration: none
+}
+
+a:hover {
+    text-decoration: underline
+}
+
+img, svg, video {
+    height: auto
+}
+
+embed, iframe, img, object, svg, video {
+    max-width: 100%
+}
+
+iframe {
+    border-style: none
+}
+
+abbr[title] {
+    text-decoration: underline;
+    text-decoration: underline dotted
+}
+
+blockquote {
+    margin-left: 0;
+    padding: .5rem 0 .5rem 1.5rem;
+    border-left: .25rem solid var(--b-txt)
+}
+
+blockquote > :last-child {
+    margin-bottom: 0
+}
+
+small {
+    font-size: .875rem
+}
+
+sub, sup {
+    font-size: .75em;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline
+}
+
+sub {
+    bottom: -.25em
+}
+
+sup {
+    top: -.5em
+}
+
+hr {
+    height: 0;
+    overflow: visible;
+    border: 0;
+    border-bottom: 1px solid var(--b-line)
+}
+
+code, kbd, pre, samp, tt, var {
+    background: var(--b-bg-2);
+    border-radius: .25rem;
+    padding: .125rem .25rem;
+    font-family: var(--b-font-mono);
+    font-size: .875rem
+}
+
+pre {
+    padding: 1rem;
+    border-radius: 0;
+    overflow: auto;
+    white-space: pre
+}
+
+pre code {
+    padding: 0
+}
+
+details {
+    display: block;
+    padding: .5rem 1rem;
+    background: var(--b-bg-2);
+    border: 1px solid var(--b-line);
+    border-radius: .25rem
+}
+
+details > :last-child {
+    margin-bottom: 0
+}
+
+details[open] > summary {
+    margin-bottom: 1.5rem
+}
+
+summary {
+    display: list-item;
+    cursor: pointer;
+    font-weight: 700
+}
+
+summary:focus {
+    box-shadow: none
+}
+
+table {
+    border-collapse: collapse;
+    width: 100%;
+    text-indent: 0
+}
+
+table caption {
+    margin-bottom: .5rem
+}
+
+tr {
+    border-bottom: 1px solid var(--b-line)
+}
+
+td, th {
+    padding: .5rem 0
+}
+
+th {
+    text-align: left
+}
+
+dd, ol, ul {
+    padding-left: 2rem
+}
+
+li > ol, li > ul {
+    margin-bottom: 0
+}
+
+fieldset {
+    padding: .5rem .75rem;
+    border: 1px solid var(--b-line);
+    border-radius: .25rem
+}
+
+legend {
+    padding: 0 .25rem
+}
+
+button, input, select, textarea {
+    margin: 0;
+    padding: .5rem .75rem;
+    max-width: 100%;
+    background: var(--b-bg-2);
+    border: 0;
+    border-radius: .25rem;
+    font: inherit;
+    line-height: 1.125;
+    color: var(--b-txt)
+}
+
+input:not([size]):not([type=button i]):not([type=submit i]):not([type=reset i]):not([type=checkbox i]):not([type=radio i]), select {
+    width: 100%
+}
+
+[type=color i] {
+    min-height: 2.125rem
+}
+
+select:not([multiple]):not([size]) {
+    padding-right: 1.5rem;
+    background-repeat: no-repeat;
+    background-position: right .5rem center;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none
+}
+
+textarea {
+    width: 100%;
+    resize: vertical
+}
+
+textarea:not([rows]) {
+    height: 8rem
+}
+
+[type=button i], [type=reset i], [type=submit i], button {
+    -webkit-appearance: button;
+    display: inline-block;
+    text-align: center;
+    white-space: nowrap;
+    background: var(--b-btn-bg);
+    color: var(--b-btn-txt);
+    border: 0;
+    cursor: pointer;
+    transition: opacity .25s
+}
+
+[type=button i]:hover, [type=reset i]:hover, [type=submit i]:hover, button:hover {
+    opacity: .75
+}
+
+[type=button i][disabled], [type=reset i][disabled], [type=submit i][disabled], button[disabled] {
+    opacity: .5
+}
+
+progress {
+    vertical-align: middle
+}
+
+[type=search i] {
+    -webkit-appearance: textfield;
+    outline-offset: -2px
+}
+
+::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
+    height: auto
+}
+
+::-webkit-input-placeholder {
+    color: inherit;
+    opacity: .5
+}
+
+::-webkit-search-decoration {
+    -webkit-appearance: none
+}
+
+::-webkit-file-upload-button {
+    -webkit-appearance: button;
+    font: inherit
+}
+
+::-moz-focus-inner {
+    border-style: none;
+    padding: 0
+}
+
+:-moz-focusring {
+    outline: 1px dotted ButtonText
+}
+
+:-moz-ui-invalid {
+    box-shadow: none
+}
+
+[aria-busy=true i] {
+    cursor: progress
+}
+
+[aria-controls] {
+    cursor: pointer
+}
+
+[aria-disabled=true i], [disabled] {
+    cursor: not-allowed
+}
+
+:focus, details:focus-within {
+    outline: none;
+    box-shadow: 0 0 0 2px var(--b-focus)
+}
+
+@media (prefers-reduced-motion: reduce) {
+    html:focus-within {
+        scroll-behavior: auto
+    }
+
+    *, :after, :before {
+        animation-delay: -1ms !important;
+        animation-duration: 1ms !important;
+        animation-iteration-count: 1 !important;
+        background-attachment: scroll !important;
+        scroll-behavior: auto !important;
+        transition-delay: 0 !important;
+        transition-duration: 0 !important
+    }
+}
+
+select:not([multiple]):not([size]) {
+    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%232e3440'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")
+}
+
+@media (prefers-color-scheme: dark) {
+    select:not([multiple]):not([size]) {
+        background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23eceff4'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")
+    }
+}
+
+</style >
\ No newline at end of file