mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-26 03:36:08 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			221 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| <html lang="en">
 | |
| 
 | |
|   <head>
 | |
|     <meta charset="utf-8">
 | |
| 
 | |
|     <title>Paperless</title>
 | |
| 
 | |
|     <meta name="description" content="A breakdown of what's different and why Django is amazeballs">
 | |
|     <meta name="author" content="Daniel Quinn">
 | |
| 
 | |
|     <meta name="apple-mobile-web-app-capable" content="yes" />
 | |
|     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
 | |
| 
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
 | |
| 
 | |
|     <link rel="stylesheet" href="css/reveal.css">
 | |
|     <link rel="stylesheet" href="css/theme/league.css" id="theme">
 | |
| 
 | |
|     <!-- Code syntax highlighting -->
 | |
|     <link rel="stylesheet" href="lib/css/zenburn.css">
 | |
| 
 | |
|     <!-- Printing and PDF exports -->
 | |
|     <script>
 | |
|       var link = document.createElement('link');
 | |
|       link.rel = 'stylesheet';
 | |
|       link.type = 'text/css';
 | |
|       link.href = window.location.search.match(/print-pdf/gi) ? 'css/print/pdf.css' : 'css/print/paper.css';
 | |
|       document.getElementsByTagName('head')[0].appendChild( link );
 | |
|     </script>
 | |
| 
 | |
|     <!--[if lt IE 9]>
 | |
|     <script src="lib/js/html5shiv.js"></script>
 | |
|     <![endif]-->
 | |
| 
 | |
|     <style>
 | |
|       .reveal pre code {
 | |
|         background-color: rgba(63,63,63,0.8);
 | |
|       }
 | |
|       li, p {
 | |
|         text-shadow: 3px 3px 3px rgb(0, 0, 0);
 | |
|       }
 | |
|       a.nocolour {
 | |
|           color: rgb(255, 255, 255);
 | |
|       }
 | |
|     </style>
 | |
| 
 | |
|     <link rel="stylesheet" href="contrib/font-awesome-4.3.0/css/font-awesome.min.css">
 | |
| 
 | |
|   </head>
 | |
| 
 | |
|   <body>
 | |
| 
 | |
|     <div class="reveal">
 | |
| 
 | |
|       <!-- Any section element inside of this container is displayed as a slide -->
 | |
|       <div class="slides">
 | |
| 
 | |
|         <section>
 | |
|           <br />
 | |
|           <br />
 | |
|           <h1>Paperless</h1>
 | |
|           <p><small>
 | |
|             <i class="fa fa-twitter"></i>   <a class="nocolour" href="https://twitter.com/searchingfortao">@searchingfortao</a>
 | |
|               |  
 | |
|             <i class="fa fa-github"></i>   <a class="nocolour" href="https://github.com/danielquinn">danielquinn</a>
 | |
|               |  
 | |
|             <i class="fa fa-globe"></i>   <a class="nocolour" href="http://danielquinn.org/">danielquinn.org</a>
 | |
|           </small></p>
 | |
|           <br />
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>My Inspiration</h2>
 | |
|           <img src="img/stack.jpg" style="width: 50%;" /><br />
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <section>
 | |
|             <h2>Paper Sucks</h2>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h2>Paper Loves Being Mysterious</h2>
 | |
|             <p>There's No Ctrl+F</p>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h2>Paper Hates Your Spine</h2>
 | |
|             <p>It's heavy and takes up space</p>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h2>Paper Wants to Breed</h2>
 | |
|             <p>Backups? More Paper!</p>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h2>Paper Hates the Planet</h2>
 | |
|           </section>
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>It's 2016</h2>
 | |
|           <p>We shouldn't even need to use this stuff anymore</p>
 | |
|           <p>So I made Paperless</p>
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>What's it Do?</h2>
 | |
|           <ul>
 | |
|             <li>Consumes documents from a directory, API, or mailbox</li>
 | |
|             <li>OCRs them and puts the text in a database</li>
 | |
|             <li>Automatically tags the db record based on user-rules</li>
 | |
|             <li>Encrypts and stores the original</li>
 | |
|           </ul>
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>It's Just a Wrapper</h2>
 | |
|           <ul>
 | |
|             <li>ImageMagick</li>
 | |
|             <li>Tesseract</li>
 | |
|             <li>GnuPG</li>
 | |
|             <li>Python3/Django</li>
 | |
|           </ul>
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>How's it Work?</h2>
 | |
|           <section>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h3>1: The Consumer</h3>
 | |
|             <p style="padding: 1em;">(Imports documents)</p>
 | |
|             <ul>
 | |
|               <li>Runs in a loop</li>
 | |
|               <li>Reads from a directory</li>
 | |
|               <li>Occasionally checking a mailbox</li>
 | |
|             </ul>
 | |
|           </section>
 | |
|           <section>
 | |
|             <h3>2: The Webserver</h3>
 | |
|             <p style="padding: 1em;">(Lets you find stuff)</p>
 | |
|             <ul>
 | |
|               <li>Currently the Django Admin (I know)</li>
 | |
|               <li>Provides a DRF API</li>
 | |
|               <li>Users are building proper UIs</li>
 | |
|             </ul>
 | |
|           </section>
 | |
|         </section>
 | |
| 
 | |
|         <section data-background="img/pony.png">
 | |
|           <h2>Demo!</h2>
 | |
|           <img src="img/kitten.jpg" style="width: 50%;" />
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>TODO</h2>
 | |
|           <p>It works, but it needs polish</p>
 | |
|           <ul>
 | |
|             <li>The UI is the Django admin</li>
 | |
|             <li>Mail consumption is really raw</li>
 | |
|             <li>Some sort of plugin architecture?</li>
 | |
|             <li>OMG Tests</li>
 | |
|           </ul>
 | |
|           <aside class="notes">
 | |
|             <ul>
 | |
|               <li>
 | |
|                 <strong>Plugin architecture</strong>: there've been requests
 | |
|                 for some overly custom stuff to happen before and after
 | |
|                 consumption, but in the UNIX spirit of "do one job well", I
 | |
|                 think this sort of thing is better written as a plugin -- which
 | |
|                 means I need to figure out a best practise for that.
 | |
|               </li>
 | |
|             </ul>
 | |
|           </aside>
 | |
|         </section>
 | |
| 
 | |
|         <section>
 | |
|           <h2>Fork Me</h2>
 | |
|           <p>
 | |
|             <i class="fa fa-github"></i>  
 | |
|             <a class="nocolour" href="https://github.com/danielquinn/paperless">https://github.com/danielquinn/paperless</a>
 | |
|           </p>
 | |
|           <img src="img/repo.svg" style="width: 300px;" /><br />
 | |
|         </section>
 | |
| 
 | |
|       </div>
 | |
| 
 | |
|     </div>
 | |
| 
 | |
|     <script src="lib/js/head.min.js"></script>
 | |
|     <script src="js/reveal.js"></script>
 | |
| 
 | |
|     <script>
 | |
| 
 | |
|       // Full list of configuration options available at:
 | |
|       // https://github.com/hakimel/reveal.js#configuration
 | |
|       Reveal.initialize({
 | |
|         controls: true,
 | |
|         progress: true,
 | |
|         history: true,
 | |
|         center: true,
 | |
| 
 | |
|         transition: 'convex', // none/fade/slide/convex/concave/zoom
 | |
|         backgroundTransition: 'zoom',
 | |
|         loop: true,
 | |
| 
 | |
|         // Optional reveal.js plugins
 | |
|         dependencies: [
 | |
|           { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
 | |
|           { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
 | |
|           { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
 | |
|           { src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
 | |
|           { src: 'plugin/zoom-js/zoom.js', async: true },
 | |
|           { src: 'plugin/notes/notes.js', async: true }
 | |
|         ]
 | |
|       });
 | |
| 
 | |
|     </script>
 | |
| 
 | |
|   </body>
 | |
| </html>
 | 
