jnfilter @ ef20913e3bb403ae46c5780fe6b6a560cb0c4479

feat: Adiciona documentacao
  1diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..d7c20bfad78c574f653e2492f399ce5ba071acfb
  4--- /dev/null
  5+++ b/.gitlab-ci.yml
  6@@ -0,0 +1,14 @@
  7+pages:
  8+  image:
  9+    name: pandoc/alpine
 10+    entrypoint:
 11+      - ""
 12+  stage: build
 13+  script:
 14+    - mkdir public
 15+    - pandoc -s --include-in-header=docs/bamboo.min.css -s README.md -o public/index.html
 16+  artifacts:
 17+    paths:
 18+      - public
 19+  only:
 20+    - main
 21diff --git a/README.md b/README.md
 22new file mode 100644
 23index 0000000000000000000000000000000000000000..f13190d3875f7a9d4ff6b378279830e17e6524f4
 24--- /dev/null
 25+++ b/README.md
 26@@ -0,0 +1,55 @@
 27+# Nerdcast filtro para podcast
 28+
 29+Um simples filtro para o Nerdcast. Hoje em dia o _feed_ do _podcast_ e bem
 30+poluído, vários temas, quadros e programas. Esse projeto e um filtro simples
 31+para tirar alguns programas do _feed_ ou mesmo dividi-los em _feeds_
 32+diferentes. Os seguintes seguimentos são suportados:
 33+
 34+- `nerdcast`
 35+- `empreendedor`
 36+- `mamicas`
 37+- `english`
 38+- `nerdcash`
 39+- `bunker`
 40+- `tech`
 41+- `genera`
 42+
 43+## Para usuarios
 44+
 45+Por padrão ele só pega a série principal lançada toda sexta. Para usar basta 
 46+adicionar a seguinte URL no seu agregador:
 47+
 48+```
 49+https://jnfilter.herokuapp.com/
 50+```
 51+
 52+Mas caso você queira, você pode escolher mais alguns seguimentos. Por exemplo,
 53+se voce quer ver somente a série principal e canecas de mamicas você
 54+adicionaria o seguinte URL no seu agregador:
 55+
 56+```
 57+https://jnfilter.herokuapp.com/?q=mamicas,nerdcast
 58+```
 59+
 60+Quer nerdcast e nerdcash? 
 61+
 62+```
 63+https://jnfilter.herokuapp.com/?q=nerdcash,nerdcast
 64+```
 65+
 66+E por aí vai, seguindo os seguimentos listados acima.
 67+
 68+## Para programadores
 69+
 70+E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e 
 71+filtrar os itens do _feed_ do podcast. Não tem cache nem nada sendo armazenado,
 72+todo processamento e feito a partir do feed para cada requisição.
 73+
 74+Para rodar basta instalar os requirements e rodar o seguinte código:
 75+
 76+```shell
 77+uvicorn main:app --host=0.0.0.0
 78+```
 79+
 80+E você já pode apontar o seu agregador favorito para sua maquina.
 81+
 82diff --git a/docs/bamboo.min.css b/docs/bamboo.min.css
 83new file mode 100644
 84index 0000000000000000000000000000000000000000..5289de7f3c2965e1de6f5866adf9756c92f4c3f5
 85--- /dev/null
 86+++ b/docs/bamboo.min.css
 87@@ -0,0 +1,369 @@
 88+<style type="text/css">
 89+:root {
 90+    --b-font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
 91+    --b-font-mono: Consolas, Monaco, monospace;
 92+    --b-txt: #2e3440;
 93+    --b-bg-1: #fff;
 94+    --b-bg-2: #eceff4;
 95+    --b-line: #eceff4;
 96+    --b-link: #bf616a;
 97+    --b-btn-bg: #242933;
 98+    --b-btn-txt: #fff;
 99+    --b-focus: #88c0d0
100+}
101+
102+@media (prefers-color-scheme: dark) {
103+    :root {
104+        --b-txt: #eceff4;
105+        --b-bg-1: #2e3440;
106+        --b-bg-2: #3b4252;
107+        --b-line: #3b4252
108+    }
109+}
110+
111+*, :after, :before {
112+    box-sizing: border-box
113+}
114+
115+html:focus-within {
116+    scroll-behavior: smooth
117+}
118+
119+body {
120+    max-width: 70ch;
121+    padding: 0 1rem;
122+    margin: auto;
123+    background: var(--b-bg-1);
124+    font-family: var(--b-font-main);
125+    text-rendering: optimizeSpeed;
126+    line-height: 1.5;
127+    color: var(--b-txt);
128+    -moz-tab-size: 4;
129+    tab-size: 4;
130+    word-break: break-word;
131+    -webkit-tap-highlight-color: transparent;
132+    -webkit-text-size-adjust: 100%
133+}
134+
135+address, audio, blockquote, dd, details, dl, fieldset, figure, h1, h2, h3, h4, h5, h6, hr, iframe, ol, p, pre, table, ul, video {
136+    margin: 0 0 1.5rem
137+}
138+
139+h1, h2, h3, h4, h5, h6 {
140+    line-height: 1.25;
141+    margin-top: 2rem
142+}
143+
144+h1 {
145+    font-size: 2rem
146+}
147+
148+h2 {
149+    font-size: 1.5rem
150+}
151+
152+h3 {
153+    font-size: 1.25rem
154+}
155+
156+h4 {
157+    font-size: 1rem
158+}
159+
160+h5 {
161+    font-size: .875rem
162+}
163+
164+h6 {
165+    font-size: .75rem
166+}
167+
168+a {
169+    color: var(--b-link);
170+    text-decoration: none
171+}
172+
173+a:hover {
174+    text-decoration: underline
175+}
176+
177+img, svg, video {
178+    height: auto
179+}
180+
181+embed, iframe, img, object, svg, video {
182+    max-width: 100%
183+}
184+
185+iframe {
186+    border-style: none
187+}
188+
189+abbr[title] {
190+    text-decoration: underline;
191+    text-decoration: underline dotted
192+}
193+
194+blockquote {
195+    margin-left: 0;
196+    padding: .5rem 0 .5rem 1.5rem;
197+    border-left: .25rem solid var(--b-txt)
198+}
199+
200+blockquote > :last-child {
201+    margin-bottom: 0
202+}
203+
204+small {
205+    font-size: .875rem
206+}
207+
208+sub, sup {
209+    font-size: .75em;
210+    line-height: 0;
211+    position: relative;
212+    vertical-align: baseline
213+}
214+
215+sub {
216+    bottom: -.25em
217+}
218+
219+sup {
220+    top: -.5em
221+}
222+
223+hr {
224+    height: 0;
225+    overflow: visible;
226+    border: 0;
227+    border-bottom: 1px solid var(--b-line)
228+}
229+
230+code, kbd, pre, samp, tt, var {
231+    background: var(--b-bg-2);
232+    border-radius: .25rem;
233+    padding: .125rem .25rem;
234+    font-family: var(--b-font-mono);
235+    font-size: .875rem
236+}
237+
238+pre {
239+    padding: 1rem;
240+    border-radius: 0;
241+    overflow: auto;
242+    white-space: pre
243+}
244+
245+pre code {
246+    padding: 0
247+}
248+
249+details {
250+    display: block;
251+    padding: .5rem 1rem;
252+    background: var(--b-bg-2);
253+    border: 1px solid var(--b-line);
254+    border-radius: .25rem
255+}
256+
257+details > :last-child {
258+    margin-bottom: 0
259+}
260+
261+details[open] > summary {
262+    margin-bottom: 1.5rem
263+}
264+
265+summary {
266+    display: list-item;
267+    cursor: pointer;
268+    font-weight: 700
269+}
270+
271+summary:focus {
272+    box-shadow: none
273+}
274+
275+table {
276+    border-collapse: collapse;
277+    width: 100%;
278+    text-indent: 0
279+}
280+
281+table caption {
282+    margin-bottom: .5rem
283+}
284+
285+tr {
286+    border-bottom: 1px solid var(--b-line)
287+}
288+
289+td, th {
290+    padding: .5rem 0
291+}
292+
293+th {
294+    text-align: left
295+}
296+
297+dd, ol, ul {
298+    padding-left: 2rem
299+}
300+
301+li > ol, li > ul {
302+    margin-bottom: 0
303+}
304+
305+fieldset {
306+    padding: .5rem .75rem;
307+    border: 1px solid var(--b-line);
308+    border-radius: .25rem
309+}
310+
311+legend {
312+    padding: 0 .25rem
313+}
314+
315+button, input, select, textarea {
316+    margin: 0;
317+    padding: .5rem .75rem;
318+    max-width: 100%;
319+    background: var(--b-bg-2);
320+    border: 0;
321+    border-radius: .25rem;
322+    font: inherit;
323+    line-height: 1.125;
324+    color: var(--b-txt)
325+}
326+
327+input:not([size]):not([type=button i]):not([type=submit i]):not([type=reset i]):not([type=checkbox i]):not([type=radio i]), select {
328+    width: 100%
329+}
330+
331+[type=color i] {
332+    min-height: 2.125rem
333+}
334+
335+select:not([multiple]):not([size]) {
336+    padding-right: 1.5rem;
337+    background-repeat: no-repeat;
338+    background-position: right .5rem center;
339+    -moz-appearance: none;
340+    -webkit-appearance: none;
341+    appearance: none
342+}
343+
344+textarea {
345+    width: 100%;
346+    resize: vertical
347+}
348+
349+textarea:not([rows]) {
350+    height: 8rem
351+}
352+
353+[type=button i], [type=reset i], [type=submit i], button {
354+    -webkit-appearance: button;
355+    display: inline-block;
356+    text-align: center;
357+    white-space: nowrap;
358+    background: var(--b-btn-bg);
359+    color: var(--b-btn-txt);
360+    border: 0;
361+    cursor: pointer;
362+    transition: opacity .25s
363+}
364+
365+[type=button i]:hover, [type=reset i]:hover, [type=submit i]:hover, button:hover {
366+    opacity: .75
367+}
368+
369+[type=button i][disabled], [type=reset i][disabled], [type=submit i][disabled], button[disabled] {
370+    opacity: .5
371+}
372+
373+progress {
374+    vertical-align: middle
375+}
376+
377+[type=search i] {
378+    -webkit-appearance: textfield;
379+    outline-offset: -2px
380+}
381+
382+::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
383+    height: auto
384+}
385+
386+::-webkit-input-placeholder {
387+    color: inherit;
388+    opacity: .5
389+}
390+
391+::-webkit-search-decoration {
392+    -webkit-appearance: none
393+}
394+
395+::-webkit-file-upload-button {
396+    -webkit-appearance: button;
397+    font: inherit
398+}
399+
400+::-moz-focus-inner {
401+    border-style: none;
402+    padding: 0
403+}
404+
405+:-moz-focusring {
406+    outline: 1px dotted ButtonText
407+}
408+
409+:-moz-ui-invalid {
410+    box-shadow: none
411+}
412+
413+[aria-busy=true i] {
414+    cursor: progress
415+}
416+
417+[aria-controls] {
418+    cursor: pointer
419+}
420+
421+[aria-disabled=true i], [disabled] {
422+    cursor: not-allowed
423+}
424+
425+:focus, details:focus-within {
426+    outline: none;
427+    box-shadow: 0 0 0 2px var(--b-focus)
428+}
429+
430+@media (prefers-reduced-motion: reduce) {
431+    html:focus-within {
432+        scroll-behavior: auto
433+    }
434+
435+    *, :after, :before {
436+        animation-delay: -1ms !important;
437+        animation-duration: 1ms !important;
438+        animation-iteration-count: 1 !important;
439+        background-attachment: scroll !important;
440+        scroll-behavior: auto !important;
441+        transition-delay: 0 !important;
442+        transition-duration: 0 !important
443+    }
444+}
445+
446+select:not([multiple]):not([size]) {
447+    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")
448+}
449+
450+@media (prefers-color-scheme: dark) {
451+    select:not([multiple]):not([size]) {
452+        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")
453+    }
454+}
455+
456+</style >
457\ No newline at end of file