├── .gitignore ├── LICENSE ├── README.md ├── script ├── build └── deploy └── src ├── css └── screen.css ├── img ├── cljs.svg ├── logos │ ├── condense.png │ ├── fullcontact.png │ ├── fy.png │ ├── ledgr.png │ ├── lgs.png │ ├── lym.png │ ├── pilloxa.png │ ├── riverford.png │ ├── status.png │ └── vouch.png ├── react.svg └── screenshot.png ├── index.md ├── postamble.html └── preamble.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | script/cache/*.js 3 | script/cache/*.json 4 | script/target 5 | target 6 | /.planck_cache 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 1.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial code and documentation 12 | distributed under this Agreement, and 13 | b) in the case of each subsequent Contributor: 14 | i) changes to the Program, and 15 | ii) additions to the Program; 16 | 17 | where such changes and/or additions to the Program originate from and are 18 | distributed by that particular Contributor. A Contribution 'originates' 19 | from a Contributor if it was added to the Program by such Contributor 20 | itself or anyone acting on such Contributor's behalf. Contributions do not 21 | include additions to the Program which: (i) are separate modules of 22 | software distributed in conjunction with the Program under their own 23 | license agreement, and (ii) are not derivative works of the Program. 24 | 25 | "Contributor" means any person or entity that distributes the Program. 26 | 27 | "Licensed Patents" mean patent claims licensable by a Contributor which are 28 | necessarily infringed by the use or sale of its Contribution alone or when 29 | combined with the Program. 30 | 31 | "Program" means the Contributions distributed in accordance with this 32 | Agreement. 33 | 34 | "Recipient" means anyone who receives the Program under this Agreement, 35 | including all Contributors. 36 | 37 | 2. GRANT OF RIGHTS 38 | a) Subject to the terms of this Agreement, each Contributor hereby grants 39 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 40 | reproduce, prepare derivative works of, publicly display, publicly 41 | perform, distribute and sublicense the Contribution of such Contributor, 42 | if any, and such derivative works, in source code and object code form. 43 | b) Subject to the terms of this Agreement, each Contributor hereby grants 44 | Recipient a non-exclusive, worldwide, royalty-free patent license under 45 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 46 | transfer the Contribution of such Contributor, if any, in source code and 47 | object code form. This patent license shall apply to the combination of 48 | the Contribution and the Program if, at the time the Contribution is 49 | added by the Contributor, such addition of the Contribution causes such 50 | combination to be covered by the Licensed Patents. The patent license 51 | shall not apply to any other combinations which include the Contribution. 52 | No hardware per se is licensed hereunder. 53 | c) Recipient understands that although each Contributor grants the licenses 54 | to its Contributions set forth herein, no assurances are provided by any 55 | Contributor that the Program does not infringe the patent or other 56 | intellectual property rights of any other entity. Each Contributor 57 | disclaims any liability to Recipient for claims brought by any other 58 | entity based on infringement of intellectual property rights or 59 | otherwise. As a condition to exercising the rights and licenses granted 60 | hereunder, each Recipient hereby assumes sole responsibility to secure 61 | any other intellectual property rights needed, if any. For example, if a 62 | third party patent license is required to allow Recipient to distribute 63 | the Program, it is Recipient's responsibility to acquire that license 64 | before distributing the Program. 65 | d) Each Contributor represents that to its knowledge it has sufficient 66 | copyright rights in its Contribution, if any, to grant the copyright 67 | license set forth in this Agreement. 68 | 69 | 3. REQUIREMENTS 70 | 71 | A Contributor may choose to distribute the Program in object code form under 72 | its own license agreement, provided that: 73 | 74 | a) it complies with the terms and conditions of this Agreement; and 75 | b) its license agreement: 76 | i) effectively disclaims on behalf of all Contributors all warranties 77 | and conditions, express and implied, including warranties or 78 | conditions of title and non-infringement, and implied warranties or 79 | conditions of merchantability and fitness for a particular purpose; 80 | ii) effectively excludes on behalf of all Contributors all liability for 81 | damages, including direct, indirect, special, incidental and 82 | consequential damages, such as lost profits; 83 | iii) states that any provisions which differ from this Agreement are 84 | offered by that Contributor alone and not by any other party; and 85 | iv) states that source code for the Program is available from such 86 | Contributor, and informs licensees how to obtain it in a reasonable 87 | manner on or through a medium customarily used for software exchange. 88 | 89 | When the Program is made available in source code form: 90 | 91 | a) it must be made available under this Agreement; and 92 | b) a copy of this Agreement must be included with each copy of the Program. 93 | Contributors may not remove or alter any copyright notices contained 94 | within the Program. 95 | 96 | Each Contributor must identify itself as the originator of its Contribution, 97 | if 98 | any, in a manner that reasonably allows subsequent Recipients to identify the 99 | originator of the Contribution. 100 | 101 | 4. COMMERCIAL DISTRIBUTION 102 | 103 | Commercial distributors of software may accept certain responsibilities with 104 | respect to end users, business partners and the like. While this license is 105 | intended to facilitate the commercial use of the Program, the Contributor who 106 | includes the Program in a commercial product offering should do so in a manner 107 | which does not create potential liability for other Contributors. Therefore, 108 | if a Contributor includes the Program in a commercial product offering, such 109 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify 110 | every other Contributor ("Indemnified Contributor") against any losses, 111 | damages and costs (collectively "Losses") arising from claims, lawsuits and 112 | other legal actions brought by a third party against the Indemnified 113 | Contributor to the extent caused by the acts or omissions of such Commercial 114 | Contributor in connection with its distribution of the Program in a commercial 115 | product offering. The obligations in this section do not apply to any claims 116 | or Losses relating to any actual or alleged intellectual property 117 | infringement. In order to qualify, an Indemnified Contributor must: 118 | a) promptly notify the Commercial Contributor in writing of such claim, and 119 | b) allow the Commercial Contributor to control, and cooperate with the 120 | Commercial Contributor in, the defense and any related settlement 121 | negotiations. The Indemnified Contributor may participate in any such claim at 122 | its own expense. 123 | 124 | For example, a Contributor might include the Program in a commercial product 125 | offering, Product X. That Contributor is then a Commercial Contributor. If 126 | that Commercial Contributor then makes performance claims, or offers 127 | warranties related to Product X, those performance claims and warranties are 128 | such Commercial Contributor's responsibility alone. Under this section, the 129 | Commercial Contributor would have to defend claims against the other 130 | Contributors related to those performance claims and warranties, and if a 131 | court requires any other Contributor to pay any damages as a result, the 132 | Commercial Contributor must pay those damages. 133 | 134 | 5. NO WARRANTY 135 | 136 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN 137 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 138 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each 140 | Recipient is solely responsible for determining the appropriateness of using 141 | and distributing the Program and assumes all risks associated with its 142 | exercise of rights under this Agreement , including but not limited to the 143 | risks and costs of program errors, compliance with applicable laws, damage to 144 | or loss of data, programs or equipment, and unavailability or interruption of 145 | operations. 146 | 147 | 6. DISCLAIMER OF LIABILITY 148 | 149 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 150 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 151 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION 152 | LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 153 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 154 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 155 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY 156 | OF SUCH DAMAGES. 157 | 158 | 7. GENERAL 159 | 160 | If any provision of this Agreement is invalid or unenforceable under 161 | applicable law, it shall not affect the validity or enforceability of the 162 | remainder of the terms of this Agreement, and without further action by the 163 | parties hereto, such provision shall be reformed to the minimum extent 164 | necessary to make such provision valid and enforceable. 165 | 166 | If Recipient institutes patent litigation against any entity (including a 167 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 168 | (excluding combinations of the Program with other software or hardware) 169 | infringes such Recipient's patent(s), then such Recipient's rights granted 170 | under Section 2(b) shall terminate as of the date such litigation is filed. 171 | 172 | All Recipient's rights under this Agreement shall terminate if it fails to 173 | comply with any of the material terms or conditions of this Agreement and does 174 | not cure such failure in a reasonable period of time after becoming aware of 175 | such noncompliance. If all Recipient's rights under this Agreement terminate, 176 | Recipient agrees to cease use and distribution of the Program as soon as 177 | reasonably practicable. However, Recipient's obligations under this Agreement 178 | and any licenses granted by Recipient relating to the Program shall continue 179 | and survive. 180 | 181 | Everyone is permitted to copy and distribute copies of this Agreement, but in 182 | order to avoid inconsistency the Agreement is copyrighted and may only be 183 | modified in the following manner. The Agreement Steward reserves the right to 184 | publish new versions (including revisions) of this Agreement from time to 185 | time. No one other than the Agreement Steward has the right to modify this 186 | Agreement. The Eclipse Foundation is the initial Agreement Steward. The 187 | Eclipse Foundation may assign the responsibility to serve as the Agreement 188 | Steward to a suitable separate entity. Each new version of the Agreement will 189 | be given a distinguishing version number. The Program (including 190 | Contributions) may always be distributed subject to the version of the 191 | Agreement under which it was received. In addition, after a new version of the 192 | Agreement is published, Contributor may elect to distribute the Program 193 | (including its Contributions) under the new version. Except as expressly 194 | stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 195 | licenses to the intellectual property of any Contributor under this Agreement, 196 | whether expressly, by implication, estoppel or otherwise. All rights in the 197 | Program not expressly granted under this Agreement are reserved. 198 | 199 | This Agreement is governed by the laws of the State of New York and the 200 | intellectual property laws of the United States of America. No party to this 201 | Agreement will bring a legal action under this Agreement more than one year 202 | after the cause of action arose. Each party waives its rights to a jury trial in 203 | any resulting litigation. 204 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cljsrn-org 2 | 3 | Source for http://cljsrn.org website 4 | 5 | # Updating 6 | 7 | The source files for the website are in `src`. These are primarily markdown files, along with images, etc. 8 | 9 | # Building 10 | 11 | If you would like to see what the site would look like with revisions to content in `src` you can build it locally. In order to build the site, [Leiningen](http://leiningen.org) and [Planck](http://planck.fikesfarm.com) are required. 12 | 13 | Run `script/build`. This converts the markdown into HTML and places everything into `target/public`. 14 | 15 | You can then open `target/public/index.html` in your browser to see what it looks like. 16 | 17 | # Contributing 18 | 19 | Please submit PRs to this repo to submit content for addition to http://cljsrn.org. 20 | 21 | # License 22 | 23 | Copyright © 2015–2017 Mike Fikes and Contributors 24 | 25 | Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version. 26 | -------------------------------------------------------------------------------- /script/build: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env plk -Sdeps {:deps,{markdown-clj,{:mvn/version,"0.9.85"}}} -K 2 | (ns build.core 3 | (:require [markdown.core :refer [md->html]] 4 | [planck.core :refer [slurp spit]] 5 | [planck.shell :refer [sh]])) 6 | 7 | (def src "src/") 8 | (def target "target/") 9 | (def public (str target "public/")) 10 | 11 | (def preamble (slurp (str src "preamble.html"))) 12 | (def postamble (slurp (str src "postamble.html"))) 13 | 14 | (defn wrap-html 15 | [body] 16 | (str preamble body postamble)) 17 | 18 | (defn md-to-html 19 | [in out] 20 | (spit out 21 | (wrap-html 22 | (md->html (slurp in))))) 23 | 24 | (defn process-md 25 | [in] 26 | (md-to-html 27 | (str src in) (str public (subs in 0 (- (count in) 2)) "html"))) 28 | 29 | (sh "mkdir" "-p" target) 30 | (sh "rm" "-rf" public) 31 | (sh "mkdir" "-p" public) 32 | 33 | (process-md "index.md") 34 | 35 | (sh "cp" "-r" (str src "img") public) 36 | (sh "cp" "-r" (str src "css") public) 37 | -------------------------------------------------------------------------------- /script/deploy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env planck 2 | (ns deploy.core 3 | (:require [planck.core :refer [exit]] 4 | [planck.shell :refer [sh *sh-dir*]])) 5 | 6 | (def ^:dynamic *destination* nil) 7 | 8 | (defn ensure-succeeded! [x] 9 | (when-not (zero? (:exit x)) 10 | (print (:out x)) 11 | (print (:err x)) 12 | (exit (:exit x)))) 13 | 14 | (defn do! [& args] 15 | (ensure-succeeded! (apply sh args))) 16 | 17 | (binding [*destination* "cljsrn.org" 18 | *sh-dir* "target"] 19 | (do! "tar" "cf" "public.tar" "public") 20 | (do! "scp" "public.tar" (str *destination* ":")) 21 | (do! "ssh" *destination* "tar" "xf" "public.tar" "-C" "/var/cljsrn")) 22 | -------------------------------------------------------------------------------- /src/css/screen.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'core_sans_e'; 3 | src: url('https://fonts.fikesfarm.com/coresanse45-webfont.eot'); 4 | src: url('https://fonts.fikesfarm.com/coresanse45-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('https://fonts.fikesfarm.com/coresanse45-webfont.woff2') format('woff2'), 6 | url('https://fonts.fikesfarm.com/coresanse45-webfont.woff') format('woff'), 7 | url('https://fonts.fikesfarm.com/coresanse45-webfont.ttf') format('truetype'), 8 | url('https://fonts.fikesfarm.com/coresanse45-webfont.svg#core_sans_e45_regular') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | 12 | } 13 | 14 | @font-face { 15 | font-family: 'core_sans_e'; 16 | src: url('https://fonts.fikesfarm.com/coresanse45it-webfont.eot'); 17 | src: url('https://fonts.fikesfarm.com/coresanse45it-webfont.eot?#iefix') format('embedded-opentype'), 18 | url('https://fonts.fikesfarm.com/coresanse45it-webfont.woff2') format('woff2'), 19 | url('https://fonts.fikesfarm.com/coresanse45it-webfont.woff') format('woff'), 20 | url('https://fonts.fikesfarm.com/coresanse45it-webfont.ttf') format('truetype'), 21 | url('https://fonts.fikesfarm.com/coresanse45it-webfont.svg#core_sans_e45_regular_italic') format('svg'); 22 | font-weight: normal; 23 | font-style: italic; 24 | 25 | } 26 | 27 | @font-face { 28 | font-family: 'core_sans_e'; 29 | src: url('https://fonts.fikesfarm.com/coresanse65-webfont.eot'); 30 | src: url('https://fonts.fikesfarm.com/coresanse65-webfont.eot?#iefix') format('embedded-opentype'), 31 | url('https://fonts.fikesfarm.com/coresanse65-webfont.woff2') format('woff2'), 32 | url('https://fonts.fikesfarm.com/coresanse65-webfont.woff') format('woff'), 33 | url('https://fonts.fikesfarm.com/coresanse65-webfont.ttf') format('truetype'), 34 | url('https://fonts.fikesfarm.com/coresanse65-webfont.svg#core_sans_e65_bold') format('svg'); 35 | font-weight: bold; 36 | font-style: normal; 37 | 38 | } 39 | 40 | @font-face { 41 | font-family: 'core_sans_e'; 42 | src: url('https://fonts.fikesfarm.com/coresanse65it-webfont.eot'); 43 | src: url('https://fonts.fikesfarm.com/coresanse65it-webfont.eot?#iefix') format('embedded-opentype'), 44 | url('https://fonts.fikesfarm.com/coresanse65it-webfont.woff2') format('woff2'), 45 | url('https://fonts.fikesfarm.com/coresanse65it-webfont.woff') format('woff'), 46 | url('https://fonts.fikesfarm.com/coresanse65it-webfont.ttf') format('truetype'), 47 | url('https://fonts.fikesfarm.com/coresanse65it-webfont.svg#core_sans_e65_bold_italic') format('svg'); 48 | font-weight: bold; 49 | font-style: italic; 50 | 51 | } 52 | 53 | @font-face { 54 | font-family: 'eco_coding'; 55 | src: url('https://fonts.fikesfarm.com/EcoCoding-webfont.eot'); 56 | src: url('https://fonts.fikesfarm.com/EcoCoding-webfont.eot?#iefix') format('embedded-opentype'), 57 | url('https://fonts.fikesfarm.com/EcoCoding-webfont.woff2') format('woff2'), 58 | url('https://fonts.fikesfarm.com/EcoCoding-webfont.woff') format('woff'), 59 | url('https://fonts.fikesfarm.com/EcoCoding-webfont.ttf') format('truetype'), 60 | url('https://fonts.fikesfarm.com/EcoCoding-webfont.svg#eco_codingregular') format('svg'); 61 | font-weight: normal; 62 | font-style: normal; 63 | 64 | } 65 | 66 | @font-face { 67 | font-family: 'eco_coding'; 68 | src: url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.eot'); 69 | src: url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.eot?#iefix') format('embedded-opentype'), 70 | url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.woff2') format('woff2'), 71 | url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.woff') format('woff'), 72 | url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.ttf') format('truetype'), 73 | url('https://fonts.fikesfarm.com/EcoCodingItalic-webfont.svg#eco_codingitalic') format('svg'); 74 | font-weight: normal; 75 | font-style: italic; 76 | 77 | } 78 | 79 | @font-face { 80 | font-family: 'eco_coding'; 81 | src: url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.eot'); 82 | src: url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.eot?#iefix') format('embedded-opentype'), 83 | url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.woff2') format('woff2'), 84 | url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.woff') format('woff'), 85 | url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.ttf') format('truetype'), 86 | url('https://fonts.fikesfarm.com/EcoCodingBold-webfont.svg#eco_codingbold') format('svg'); 87 | font-weight: bold; 88 | font-style: normal; 89 | 90 | } 91 | 92 | @font-face { 93 | font-family: 'eco_coding'; 94 | src: url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.eot'); 95 | src: url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.eot?#iefix') format('embedded-opentype'), 96 | url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.woff2') format('woff2'), 97 | url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.woff') format('woff'), 98 | url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.ttf') format('truetype'), 99 | url('https://fonts.fikesfarm.com/EcoCodingBoldItalic-webfont.svg#eco_codingbold_italic') format('svg'); 100 | font-weight: bold; 101 | font-style: italic; 102 | 103 | } 104 | 105 | body { 106 | font-size: 16px; 107 | color: #3A3A3A; 108 | font-family: 'core_sans_e', sans-serif; 109 | padding: 28px; 110 | max-width: 42em; 111 | margin: auto; 112 | } 113 | 114 | blockquote { 115 | font-size: 15px; 116 | font-family: 'core_sans_e', sans-serif; 117 | } 118 | 119 | code { 120 | font-size: 14px; 121 | font-family: 'eco_coding', sans-serif; 122 | color: #101010; 123 | } 124 | 125 | pre code { 126 | font-size: 14px; 127 | } 128 | 129 | blockquote code { 130 | font-size: 13px; 131 | } 132 | 133 | #wrapper.container { 134 | margin: auto; 135 | padding-top: 50px; 136 | min-height: 100%; 137 | position: relative; 138 | } 139 | 140 | .row { 141 | padding-bottom: 100px; 142 | } 143 | 144 | footer { 145 | width:100%; 146 | height:70px; 147 | position:absolute; 148 | bottom:0; 149 | left:0; 150 | text-align: center; 151 | font-size: 11px; 152 | } 153 | 154 | nav h1 { 155 | margin: 0; 156 | } 157 | 158 | #sidebar { 159 | font-size: 13px; 160 | background-color: #fff; 161 | border: 0px solid #cecece; 162 | border-radius: 8px; 163 | padding:15px; 164 | } 165 | 166 | content { 167 | background-color: #fff; 168 | border: 0px solid #cecece; 169 | border-radius: 8px; 170 | padding:10px; 171 | } 172 | 173 | #prev-next { 174 | padding: 10px; 175 | text-align: center; 176 | } 177 | 178 | #post-header { 179 | margin-bottom: 53px; 180 | } 181 | #post-header h2 { 182 | font-size: 32px; 183 | margin-bottom: -15px; 184 | } 185 | #post-header #post-meta { 186 | font-size: 13px; 187 | float: right; 188 | margin-top: 25px; 189 | } 190 | #page-header { 191 | margin-bottom: 30px; 192 | } 193 | #page-header h2 { 194 | font-size: 32px; 195 | margin-bottom: -15px; 196 | } 197 | pre { 198 | background-color: #f0f0f0; 199 | } 200 | -------------------------------------------------------------------------------- /src/img/cljs.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 31 | 32 | 33 | 34 | 36 | 37 | 41 | 42 | 46 | 51 | 52 | 54 | 56 | 57 | -------------------------------------------------------------------------------- /src/img/logos/condense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/condense.png -------------------------------------------------------------------------------- /src/img/logos/fullcontact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/fullcontact.png -------------------------------------------------------------------------------- /src/img/logos/fy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/fy.png -------------------------------------------------------------------------------- /src/img/logos/ledgr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/ledgr.png -------------------------------------------------------------------------------- /src/img/logos/lgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/lgs.png -------------------------------------------------------------------------------- /src/img/logos/lym.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/lym.png -------------------------------------------------------------------------------- /src/img/logos/pilloxa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/pilloxa.png -------------------------------------------------------------------------------- /src/img/logos/riverford.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/riverford.png -------------------------------------------------------------------------------- /src/img/logos/status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/status.png -------------------------------------------------------------------------------- /src/img/logos/vouch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/logos/vouch.png -------------------------------------------------------------------------------- /src/img/react.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/img/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cljsrn/cljsrn-org/371ebbe8b711570b186f0ec5cfd863be87ae63a2/src/img/screenshot.png -------------------------------------------------------------------------------- /src/index.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |    4 | 5 |
6 | 7 | # ClojureScript + React Native 8 | 9 | Resources for developers using ClojureScript to build React Native apps. 10 | 11 | ## Discussion 12 | 13 | * Slack: `#cljsrn` channel in [Clojurians](http://clojurians.net) Slack. 14 | * IRC: `#clojurescript` channel on [freenode.net](https://freenode.net) 15 | 16 | ## Wiki 17 | 18 | The [publicly editable Wiki](https://github.com/cljsrn/cljsrn-org/wiki) contains tips and tricks learned by the community. 19 | 20 | ## Using 21 | 22 | ### Re-Natal 23 | 24 | [Re-Natal](https://github.com/drapanjanas/re-natal) is the original and most-referenced stack for building with ClojureScript and React Native, but it is no longer actively developed and is behind React Native by several minor versions. 25 | 26 | ### Krell 27 | 28 | [Krell](https://github.com/vouch-opensource/krell) is a stand-alone approach which relies on the standard ClojureScript compiler and tooling to make developing React Native apps simpler and easier. Krell uses minimal deps.edn and build.edn config to establish a clean REPL-based workflow, embracing established ClojureScript development idioms. 29 | 30 | ### react-native-figwheel-bridge 31 | 32 | [react-native-figwheel-bridge](https://github.com/bhauman/react-native-figwheel-bridge) is a simple approach to setup React Native with ClojureScript + Figwheel + REPL on top of a standard React Native project. Follow the readme, the approach seems to work great as described. 33 | 34 | ### Expo 35 | [Expo](https://expo.io/) is tooling around React Native that lets you build mobile apps using only JavaScript. There is a [leiningen template](https://github.com/seantempesta/expo-cljs-template) which provides a ready-to-use setup for ClojureScript apps. The template provides REPL and Figwheel capabilities using only Clojure scripts directly in user space (as opposed to `re-natal` external tools). This, however, also makes it more difficult to update since the code has to be patched on the user repo. The Expo template is the more recent of all approaches but it supports building apps without any Android or iOS SDK, which is great to get started. 36 | 37 | ## Posts & Articles 38 | 39 | Blog posts and articles pertaining to ClojureScript with React Native and associated tooling. 40 | 41 | - [How to debug react-native app on Android Avd using clojurescript](https://anish-patil.blogspot.com/2019/06/how-to-debug-react-native-app-on.html) (2019-06-16 - anish-patil.blogspot.com) 42 | - [Using shadow-cljs to compile React Native for iOS on GNU/Linux](https://www.blog.nodrama.io/react-native-xcode-linux/) (2019-06-11 - blog.nodrama.com) 43 | - [HTTP Fx for Re-Frame on React Native](https://increasinglyfunctional.com/2019/06/25/http-fx-for-re-frame-on-react-native.html) (2019-06-25 - increasinglyfunctional.com) 44 | - [Developing mobile iOS applications on GNU/Linux with Re-Natal](https://www.blog.nodrama.io/running-xcode-on-linux/) (2019-04-15 - blog.nodrama.com) 45 | - [Getting started with React Native Navigation and ClojureScript](https://anish-patil.blogspot.com/2019/02/getting-started-with-react-native.html) (2019-02-13 — anish-patil.blogspot.com) 46 | - [How to create React Native project with ClojureScript and Android Studio Emulator on Fedora (Linux)](http://anish-patil.blogspot.com/2019/02/how-to-create-react-native-project-with.html) (2019-02-12 — anish-patil.blogspot.com) 47 | - [App Group Data Sync with ClojureScript and Re-Frame](http://increasinglyfunctional.com/2018/10/31/app-group-data-sync-with-clojurescript-and-re-frame.html) (2018-10-31 — increasinglyfunctional.com) 48 | - [I Published an iOS App with ClojureScript and React Native](http://increasinglyfunctional.com/2018/08/17/i-published-an-ios-app-with-clojurescript-and-react-native.html) (2018-08-17 — increasinglyfunctional.com) 49 | - [React Native & ClojureScript - An obscure stack](http://sulami.github.io/posts/react-native-and-clojurescript/) (2018-06-15 — sulami.github.io) 50 | - [React Native in ClojureScript](https://github.com/deg/clojure-then-you-think/wiki/React-Native-in-ClojureScript) (2018-01-31 — github.com) 51 | - [ClojureScript & React Native: bundling for release with advanced optimisations and source maps](http://austinbirch.co.uk/2017/07/28/clojurescript-and-react-native-bundling-for-release-with-advanced-optimisations.html) (2017-07-28 — austinbirch.co.uk) 52 | - [Cleaner ClojureScript React Native Interop](http://blog.fikesfarm.com/posts/2017-07-17-cleaner-clojurescript-react-native-interop.html) (2017-07-17 — blog.fikesfarm.com) 53 | - [Writing ClojureScript Native Apps Is Easy](https://juxt.pro/blog/native/) (2017-04-20 — juxt.pro) 54 | - [Animating react-native — take 2](https://medium.com/@grumplet/animating-react-native-take-2-b2a6368c8861) (2016-12-31 — medium.com) 55 | - [React-Native Animated from Clojurescript](https://medium.com/@grumplet/react-native-animated-from-clojurescript-78cd53ab7aa2) (2016-12-28 — medium.com) 56 | - [From a Clean Install of Ubuntu to Re-natal](https://gadfly361.github.io/gadfly-blog/posts-output/2016-11-13-clean-install-of-ubuntu-to-re-natal/) (2016-11-13 — gadfly361.github.io/gadfly-blog) 57 | - [My experience with Clojurescript and React Native](https://medium.com/@tiensonqin/my-experience-with-clojurescript-and-react-native-81bb1d3bb2c4#.4pd73s8z2) (2016-08-06 — medium.com) 58 | - [React Native: Summing up](https://medium.com/@alwxdev/react-native-summing-up-86838441d289#.jwb21cuwn) (2016-06-24 — medium.com) 59 | - [Create iOS apps on Linux using React Native and ClojureScript](https://johannesgu.wordpress.com/2016/03/28/create-ios-apps-on-linux-using-react-native-and-clojurescript/) (2016-03-28 — johannesgu.wordpress.com) 60 | - [Yes, we can. Cross-platform native mobile applications development](https://medium.com/@alwxdev/yes-we-can-cross-platform-native-mobile-applications-development-e315300d011e#.pd3zwhfam) (2016-01-28 — medium.com) 61 | - [ClojureScript React Native Desktop](http://blog.fikesfarm.com/posts/2015-11-19-clojurescript-react-native-desktop.html) (2015-11-19 — blog.fikesfarm.com) 62 | - [Going native with om.next](https://david.coffee/going-native-with-om.next/) (2015-10-27 — dvcrn.github.io) 63 | - [Using React Native Components in ClojureScript](http://blog.fikesfarm.com/posts/2015-07-24-using-react-native-components-in-clojurescript.html) (2015-07-24 — blog.fikesfarm.com) 64 | - [Reagent React Native](http://blog.fikesfarm.com/posts/2015-07-20-reagent-react-native.html) (2015-07-20 — blog.fikesfarm.com) 65 | - [Develop Now with ClojureScript for React Native](http://blog.fikesfarm.com/posts/2015-07-19-develop-now-with-clojurescript-for-react-native.html) (2015-07-19 — blog.fikesfarm.com) 66 | - [ClojureScript with React Native](http://blog.fikesfarm.com/posts/2015-07-06-clojurescript-with-react-native.html) (2015-07-06 — blog.fikesfarm.com) 67 | 68 | ## Talks & Videos 69 | 70 | Slides, demos, talks, _etc._ pertaining to ClojureScript with React Native and associated tooling. 71 | 72 | - [Screencast: Getting started with React Native + ClojureScript](https://youtu.be/QsUj7HO5xDg) (2020-11-29 — Peter Strömberg aka PEZ) 73 | - [Developing real world React Native application from scratch, clojurescript and re-frame](https://youtu.be/5k2T126JFCY) (2020-11-30 — Andre S. aka Flexsurfer) 74 | - [Building Mobile Applications with Clojurescript](https://singaporeinformer.com/293607/building-mobile-applications-with-clojurescript-singapore-clojure-meetup-singapore-video/) (2018-04-19 — Binny Arora) 75 | - [Functional Mobility: React Native with ClojureScript](http://increasinglyfunctional.com/2017/10/06/clojurescript-react-native-talk/) (2017-10-06 — Joshua Miller) 76 | - [REPL driven mobile development with Clojure(script)](https://www.youtube.com/watch?v=toGEegAzrZA) (2017-09-13 - Srihari Sriraman) 77 | - [Using Clojurescript to launch iOS/Android apps to 1M users](https://youtu.be/ELM_eKZXl3M) (2017-06-09 — Emin Hasanov) 78 | - [Using ClojureScript to Live-Code Mobile Graphics](https://www.youtube.com/watch?v=FFKiYrvB1-0) (2017-06-09 — Nikhilesh Sigatapu) 79 | - [React Native and ClojureScript - will it blend?](https://www.youtube.com/watch?v=wHgfjUQFRJU) (2017-05-08 — Oskars Liukis) 80 | - [ClojureScript in Your Pocket](https://www.youtube.com/watch?v=tHQAMrShHu8) (2017-03-31 — Dom Kiva-Meyer, Lily M. Goh) 81 | - [From zero to app in six weeks](https://www.youtube.com/watch?v=rOcT1Lp94J4) (2017-02-25 - Damiano Rühl) 82 | - [On iOS with React Native and Clojurescript](https://vimeo.com/191066643) (2016-11-10 — Jelle Akkerman) 83 | - [Native mobile apps with ClojureScript](https://www.youtube.com/watch?v=6IYm34nDL64) (2016-09-16 — Viktor Eriksson) 84 | - [Experience report: Clojure on iOS with React Native](https://www.youtube.com/watch?v=UHRITqJGadU) (2016-06-02 — Jelle Akkerman) 85 | - [My Adventures with React Native and ClojureScript](https://e-string.com/articles/adventures-react-native-clojurescript/) (2016-05-05 — Julio Barros) 86 | - [React Native with ClojureScript](https://github.com/langford/ReactNativeWithClojureScriptPreso/blob/master/ReactNativeWithClojureScript.pdf) (2016-02-11 — Michael Langford) 87 | - [Mobile Apps with ClojureScript](https://youtu.be/GDA-g6Ca_dQ) (2015-11-16 — Jearvon Dharrie) 88 | - [Demand Driven iOS apps with Om and React Native](https://youtu.be/oJ8t8Hc9XaE) ([Slides](http://www.slideshare.net/dvcrn/demand-driven-applications-with-omnext-and-react-native-55185632)) (2015-11-13 — David Mohl) 89 | - [Native Mobile Apps with Clojure(Script)](https://groups.google.com/forum/#!topic/boston-clojure/z2sA9rvFV7s) (2015-09-10 — Chris Vermillion) 90 | - [TXJS 2015 (iOS, Ambly portion)](https://youtu.be/nKyHvVIotBo?t=1198) (2015-07-28 — David Nolen) 91 | - [Om Next (GSoC modules and Ambly portions)](https://youtu.be/ByNs9TG30E8?list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ&t=1993) (2015-07-20 — David Nolen) 92 | - [Reagent with React Native](https://youtu.be/4txql-1VXJk) (2015-07-20 — Mike Fikes) 93 | - [Coding ClojureScript React Native](https://youtu.be/Ci4uviG8S0o) (2015-07-19 — Mike Fikes) 94 | - [Quantum Tic Tac Toe React Native Port](https://youtu.be/7HtOTzllwTY) (2015-05-14 — Mike Fikes) 95 | - [Driving React Native with ClojureScript / Om](https://www.youtube.com/watch?v=Dt2zNemLCCk) (2015-04-25 — Mike Fikes) 96 | - [Clojure and ClojureScript Update (React Native and Ambly portions)](https://youtu.be/NvF-GZI20L4?list=PLZdCLR02grLrKAOj8FJ1GGmNM5l7Okz0a&t=1137) (2015-04-21 — David Nolen) 97 | 98 | ## Misc Repos 99 | 100 | * Marko Kocic's react-native, native-base and shadow-cljs [Clojurescript Todo app example](https://github.com/markokocic/rn-native-base-example-todo) 101 | * Matt Meintjes's [Re-Frame React Native TicTacToe](https://github.com/mjmeintjes/cljs-react-native-tictactoe). 102 | * Nicholas Kariniemi's [proof of concept](https://github.com/nicholaskariniemi/ReactNativeCljs) for compiling ClojureScript for use on React Native for Android. 103 | * Artem Yarulin's [react-native-eval](https://github.com/artemyarulin/react-native-eval). 104 | * Viktor Eriksson's [re-navigate](https://github.com/vikeri/re-navigate), an example of using React Native's new Navigation with re-frame/re-natal 105 | * Peter Strömberg's [rn-rf-shadow](https://github.com/PEZ/rn-rf-shadow), a *Getting Started in 3 minutes* example, leveraging shadow-cljs, Expo, reagent, and re-frame to build an app for iOS, Android and web browsers. 106 | 107 | ## Apps 108 | 109 | Apps built using ClojureScript and React Native. 110 | 111 | - [Fy](https://appsto.re/gb/5KjH7.i): boot-react-native + Reagent + Datascript 112 | - [Luno Weather App](https://github.com/alwx/luno-react-native): Re-natal + reagent + React-Native-Material-Design from [Alexander Pantyuhov](https://github.com/alwx). 113 | - [webMailReader](http://fessguid.com): Using React Native under the hood, with part of business logic in ClojureScript. 114 | - [QTTT](https://github.com/mfikes/qttt): A port of Luke Vanderhart's web app to use Om on React Native. [Try it online](https://appetize.io/app/8kap5c0m9r3wjjdm45c416rbug?device=iphone5s&scale=75&orientation=portrait&osVersion=8.4). 115 | - Snapability ([iOS](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1124758443&mt=8) / [Android](https://play.google.com/store/apps/details?id=net.snapability)): An OCR app built with re-natal and re-frame. 116 | - [Status](https://status.im): a web3 browser, messenger, and gateway to a decentralised world of Ethereum. re-natal + re-frame + cljs + golang 117 | - [FullContact](https://fullcontact.com): Contact management apps that help you be awesome with people. Parts of the apps built with React Native + ClojureScript + re-natal + re-frame + figwheel 118 | - [Riverford](https://itunes.apple.com/gb/app/riverford/id1305077010?mt=8): An app for managing your Riverford order of seasonal, organic veg. App built with React Native + ClojureScript + re-frame + expo 119 | - [Scholli](https://gitlab.pollet-computer.de/polly/scholli) ([Android](https://play.google.com/store/apps/details?id=de.pollet_computer.shelly) / [iOS](https://apps.apple.com/app/scholli/id1493194083)): Non-cloud app to control [Shelly devices](https://shelly.cloud/), based on re-natal + reagent. 120 | - [Ezmonic](https://ezmonic.com/) ([Android](https://play.google.com/store/apps/details?id=com.ezmonic) / [iOS](https://apps.apple.com/us/app/ezmonic-lite/id1495848478)): Built with shadow-cljs, re-frame, React Native, and ClojureScript, Ezmonic helps you remember long numbers by automatically finding the shortest [Major System](https://en.wikipedia.org/wiki/Mnemonic_major_system) mnemonic phrase. 121 | 122 | ## Companies 123 | 124 | Companies using ClojureScript and React Native to build solutions. 125 | 126 |

127 |

128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 |
138 |

139 | 140 | 141 |
Maintained by Mike Fikes—submit a PR if you'd like content added.
142 | -------------------------------------------------------------------------------- /src/postamble.html: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/preamble.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ClojureScript + React Native 5 | 6 | 7 | 8 | 9 | 10 | 11 | --------------------------------------------------------------------------------