Search Form
Search Results
Sort by
- · John Hallett
A hands-on course for people who want to build their own community web app. Start with components and state, then build a working member feed, profiles, and notifications on top of a real API.Includes 24 short lessons, project files, and access to a private space where you can ask the instructor and other students questions.
$150
- · John Hallett
Learn Java from the ground up by building the backend for a small community platform: user accounts, posts, comments, and moderation tools.No prior experience needed. Comes with weekly live Q&A sessions and a study group space for students.
$200
- · John Hallett
A beginner-friendly Python course built around community projects. You'll write scripts that welcome new members, summarise discussions, and export activity reports.Self-paced, with a members-only space where students share their projects and help each other.
$100
- · Sarah Rahimi
Editable posters, flyers and social images for promoting a repair café or maker workshop. I made the first versions for our monthly fix-it days around Utrecht, and sign-ups went from about 20 to 35 per session compared with our old plain-text notices.The pack has A3 and A4 posters, a half-page flyer, square and story-sized social images, and a short guide on where posters actually get noticed (laundrettes and the library noticeboard, mostly).
$10
- · Emily Smith
We've started running speed-friending rounds before our listening parties here in Manchester, and they've been such a lovely way to get new faces talking. So I've packed everything we use into one kit!You get 60 conversation cards (from "the first gig you ever went to" to "the album you'd save in a fire"), a rotation plan for groups of 10 to 40, a running order for the host and printable name badges. It's built around music, but the format works for any meetup where people arrive not knowing each other.
$10
- · John Hallett
Sixty minutes, one video call and a shared document: that's all this puzzle game needs. Teams of four to eight work through a chain of linked puzzles, each one unlocking the next.Comes with a host guide, hint cards and a printable answer key. It works well as a warm-up for a new group or as an end-of-year social.
Free
- · John Hallett
Leaderboards that never reset end up rewarding the same five people forever. This planner helps you run short seasons instead: four to eight weeks with a theme, a clear points table, small prizes and a fresh start for everyone at the end.It includes a season calendar, points table templates for different kinds of communities, announcement posts for each stage and tips on keeping things friendly rather than cut-throat.Free download.
Free
- · John Hallett
Sixty badge icons for rewarding helpful members: first post, welcome committee, problem solver, event regular, streaks and more. Each one comes in three colour styles, sized to work as profile badges.Also includes a short list of badge ideas that encourage helpful behaviour rather than just more posting.
Free
- · John Hallett
Everything you need to run a quiz night for your community, online or in a room: ten ready-made rounds, a blank round for local questions, answer sheets, a scoring spreadsheet and a host script with timings.Free. Swap in your own questions and keep the format.
Free
t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:6;return y(t,e,"round")}function m(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g;return Math.abs(t-e)0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return t1||n1?null:m(t,e)&&m(n,r)?w:function(i){if(i0?i*e/t:0===e&&n>0?i*r/n:0;if(i>=1)return n0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;r(this,t),this.m=[e,n,i,o,u,a],this.i=null,this.w=null,this.s=null}return o(t,[{key:"determinant",get:function(){var t=this.m;return t[0]*t[3]-t[1]*t[2]}},{key:"isIdentity",get:function(){if(null===this.i){var t=this.m;this.i=1===t[0]&&0===t[1]&&0===t[2]&&1===t[3]&&0===t[4]&&0===t[5]}return this.i}},{key:"point",value:function(t,e){var n=this.m;return{x:n[0]*t+n[2]*e+n[4],y:n[1]*t+n[3]*e+n[5]}}},{key:"translateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t&&!e)return this;var n=this.m;return n[4]+=n[0]*t+n[2]*e,n[5]+=n[1]*t+n[3]*e,this.w=this.s=this.i=null,this}},{key:"rotateSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(t%=360){var e=S(t*=I),n=E(t),r=this.m,i=r[0],o=r[1];r[0]=i*n+r[2]*e,r[1]=o*n+r[3]*e,r[2]=r[2]*n-i*e,r[3]=r[3]*n-o*e,this.w=this.s=this.i=null}return this}},{key:"scaleSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(1!==t||1!==e){var n=this.m;n[0]*=t,n[1]*=t,n[2]*=e,n[3]*=e,this.w=this.s=this.i=null}return this}},{key:"skewSelf",value:function(t,e){if(e%=360,(t%=360)||e){var n=this.m,r=n[0],i=n[1],o=n[2],u=n[3];t&&(t=P(t*I),n[2]+=r*t,n[3]+=i*t),e&&(e=P(e*I),n[0]+=o*e,n[1]+=u*e),this.w=this.s=this.i=null}return this}},{key:"resetSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,u=this.m;return u[0]=t,u[1]=e,u[2]=n,u[3]=r,u[4]=i,u[5]=o,this.w=this.s=this.i=null,this}},{key:"recomposeSelf",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return this.isIdentity||this.resetSelf(),t&&(t.x||t.y)&&this.translateSelf(t.x,t.y),e&&this.rotateSelf(e),n&&(n.x&&this.skewSelf(n.x,0),n.y&&this.skewSelf(0,n.y)),!r||1===r.x&&1===r.y||this.scaleSelf(r.x,r.y),i&&(i.x||i.y)&&this.translateSelf(i.x,i.y),this}},{key:"decompose",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.m,r=n[0]*n[0]+n[1]*n[1],i=[[n[0],n[1]],[n[2],n[3]]],o=N(r);if(0===o)return{origin:{x:p(n[4]),y:p(n[5])},translate:{x:p(t),y:p(e)},scale:{x:0,y:0},skew:{x:0,y:0},rotate:0};i[0][0]/=o,i[0][1]/=o;var u=n[0]*n[3]-n[1]*n[2]1,l=u%e.duration;u=(l+=a?e.duration:0)||e.duration}var s=(e.fps?1e3/e.fps:0)*e.speed,f=Math.max(0,u);f0&&-1===e.fill&&u>=e.maxFiniteDuration;(u=n+l&&!t._rollingBack&&(t.offset=a,n=a,t._apply(a,i)===t._animations.length))return void t.pause(!0);t._id=window.requestAnimationFrame(o)};this._id=window.requestAnimationFrame(o)}},{key:"_pause",value:function(){this._id&&window.cancelAnimationFrame(this._id),this._running=!1}},{key:"play",value:function(){if(!this._running)return this._rollingBack?this._rollback(this.offset):this._start(this.offset)}},{key:"stop",value:function(){this._pause(),this.offset=0,this.rollbackStartOffset=0,this._rollingBack=!1,this._apply(0)}},{key:"reachedToEnd",value:function(){return this.iterations>0&&this.offset>=this.iterations*this.duration}},{key:"restart",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.stop(t),this.play(t)}},{key:"pause",value:function(){this._pause()}},{key:"reverse",value:function(){this.direction=-this.direction}}],[{key:"build",value:function(t,e){delete t.animationSettings,t.options=vt(t.options,t.root,"91c80d77"),t.animations.map((function(e){e.settings=vt(e.s,t.root,"91c80d77"),delete e.s,t.animationSettings||(t.animationSettings=e.settings)}));var n=t.version;if(!(t=st(t,e)))return null;var r=t.options||{},i=new this(t.animations,t.animationSettings,n);return{el:t.svg,options:r,player:i}}},{key:"push",value:function(t){return this.build(t)}},{key:"init",value:function(){var t=this,e=window.__SVGATOR_PLAYER__&&window.__SVGATOR_PLAYER__["91c80d77"];Array.isArray(e)&&e.splice(0).forEach((function(e){return t.build(e)}))}}]),t}();!function(){for(var t=0,e=["ms","moz","webkit","o"],n=0;n2&&void 0!==arguments[2]?arguments[2]:n,r=!1,i=null,o=function(){for(var o=0,u=n.innerHeight,a=0,l=n.innerWidth,s=t.parentNode;s instanceof Element;){var f=n.getComputedStyle(s);if("visible"!==f.overflowY||"visible"!==f.overflowX){var c=s.getBoundingClientRect();"visible"!==f.overflowY&&(o=Math.max(o,c.top),u=Math.min(u,c.bottom)),"visible"!==f.overflowX&&(a=Math.max(a,c.left),l=Math.min(l,c.right))}if(s===s.parentNode)break;s=s.parentNode}r=!1;var h=t.getBoundingClientRect(),v=Math.min(h.height,Math.max(0,o-h.top)),d=Math.min(h.height,Math.max(0,h.bottom-u)),y=Math.min(h.width,Math.max(0,a-h.left)),g=Math.min(h.width,Math.max(0,h.right-l)),p=(h.height-v-d)/h.height,m=(h.width-y-g)/h.width,b=Math.round(p*m*100);null!==i&&i===b||(i=b,e(b))};return function(t){r&&clearTimeout(r),r=setTimeout((function(){return o()}),100)}}(this.el,this.onVisibilityUpdate.bind(this),o.window),this.bindScrollWatchers(),this.visibilityCalculator()}return o(t,[{key:"bindScrollWatchers",value:function(){for(var t=this.el.parentNode;t&&(this._handlers.push({element:t,event:"scroll",handler:this.visibilityCalculator}),t.addEventListener("scroll",this.visibilityCalculator),t!==t.parentNode&&t!==document);)t=t.parentNode}},{key:"onVisibilityUpdate",value:function(t){var e=this.currentVisibility>=this.thresholdPercent,n=t>=this.thresholdPercent;if(null===this.currentVisibility||e!==n)return this.currentVisibility=t,void this.onThresholdChange(n);this.currentVisibility=t}},{key:"destruct",value:function(){this._handlers.forEach((function(t){t.element.removeEventListener(t.event,t.handler)}))}}]),t}();function pt(t){return p(t)+""}function mt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length?t.map(pt).join(e):""}function bt(t){return pt(t.x)+","+pt(t.y)}function wt(t){if(!t)return"transparent";if(null==t.a||t.a>=1){var e=function(t){return 1===(t=parseInt(t).toString(16)).length?"0"+t:t},n=function(t){return t.charAt(0)===t.charAt(1)},r=e(t.r),i=e(t.g),o=e(t.b);return n(r)&&n(i)&&n(o)&&(r=r.charAt(0),i=i.charAt(0),o=o.charAt(0)),"#"+r+i+o}return"rgba("+t.r+","+t.g+","+t.b+","+t.a+")"}function kt(t){return t?"url(#"+t+")":"none"}var _t={f:null,i:V,u:function(t,e){return function(n){var r=e(n);t.setAttribute("rx",pt(r.x)),t.setAttribute("ry",pt(r.y))}}},At={f:null,i:function(t,e,n){return 0===t?e:1===t?n:{width:C(t,e.width,n.width),height:C(t,e.height,n.height)}},u:function(t,e){return function(n){var r=e(n);t.setAttribute("width",pt(r.width)),t.setAttribute("height",pt(r.height))}}};Object.freeze({M:2,L:2,Z:0,H:1,V:1,C:6,Q:4,T:2,S:4,A:7});var xt={},Ot=null;function St(t){var e=function(){if(Ot)return Ot;if("object"!==("undefined"==typeof document?"undefined":n(document))||!document.createElementNS)return{};var t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t&&t.style?(t.style.position="absolute",t.style.opacity="0.01",t.style.zIndex="-9999",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",Ot={svg:t}):{}}().svg;if(!e)return function(t){return null};var r=document.createElementNS(e.namespaceURI,"path");r.setAttributeNS(null,"d",t),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"stroke","none"),e.appendChild(r);var i=r.getTotalLength();return function(t){var e=r.getPointAtLength(i*t);return{x:e.x,y:e.y}}}function Et(t){return xt[t]?xt[t]:xt[t]=St(t)}function jt(t,e,n,r){if(!t||!r)return!1;var i=["M",t.x,t.y];if(e&&n&&(i.push("C"),i.push(e.x),i.push(e.y),i.push(n.x),i.push(n.y)),e?!n:n){var o=e||n;i.push("Q"),i.push(o.x),i.push(o.y)}return e||n||i.push("L"),i.push(r.x),i.push(r.y),i.join(" ")}function Mt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=jt(t,e,n,r),u=Et(o);try{return u(i)}catch(t){return null}}function Pt(t,e,n){return t+(e-t)*n}function Bt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i={x:Pt(t.x,e.x,n),y:Pt(t.y,e.y,n)};return r&&(i.a=It(t,e)),i}function It(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}function Tt(t,e,n,r){var i=1-r;return i*i*t+2*i*r*e+r*r*n}function Nt(t,e,n,r){return 2*(1-r)*(e-t)+2*r*(n-e)}function Rt(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=Mt(t,e,null,n,r);return o||(o={x:Tt(t.x,e.x,n.x,r),y:Tt(t.y,e.y,n.y,r)}),i&&(o.a=Ft(t,e,n,r)),o}function Ft(t,e,n,r){return Math.atan2(Nt(t.y,e.y,n.y,r),Nt(t.x,e.x,n.x,r))}function Dt(t,e,n,r,i){var o=i*i;return i*o*(r-t+3*(e-n))+3*o*(t+n-2*e)+3*i*(e-t)+t}function Ct(t,e,n,r,i){var o=1-i;return 3*(o*o*(e-t)+2*o*i*(n-e)+i*i*(r-n))}function qt(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],u=Mt(t,e,n,r,i);return u||(u={x:Dt(t.x,e.x,n.x,r.x,i),y:Dt(t.y,e.y,n.y,r.y,i)}),o&&(u.a=Lt(t,e,n,r,i)),u}function Lt(t,e,n,r,i){return Math.atan2(Ct(t.y,e.y,n.y,r.y,i),Ct(t.x,e.x,n.x,r.x,i))}function Vt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(zt(e)){if(Yt(n))return Rt(e,n.start,n,t,r)}else if(zt(n)){if(Ut(e))return Rt(e,e.end,n,t,r)}else{if(Ut(e))return Yt(n)?qt(e,e.end,n.start,n,t,r):Rt(e,e.end,n,t,r);if(Yt(n))return Rt(e,n.start,n,t,r)}return Bt(e,n,t,r)}function Gt(t,e,n){var r=Vt(t,e,n,!0);return r.a=function(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t+Math.PI:t}(r.a)/b,r}function zt(t){return!t.type||"corner"===t.type}function Yt(t){return null!=t.start&&!zt(t)}function Ut(t){return null!=t.end&&!zt(t)}var Wt=new R;var $t={f:function(t){return t?t.join(" "):""},i:function(t,e,r){if(0===t)return e;if(1===t)return r;var i=e.length;if(i!==r.length)return F(t,e,r);for(var o,u=new Array(i),a=0;a1&&void 0!==arguments[1]?arguments[1]:" ";return t&&t.length>0&&(t=t.map((function(t){return p(t,4)}))),mt(t,e)},i:function(t,e,n){var r,i,o,u=e.length,a=n.length;if(u!==a)if(0===u)e=U(u=a,0);else if(0===a)a=u,n=U(u,0);else{var l=(o=(r=u)*(i=a)/function(t,e){for(var n;e;)n=e,e=t%e,t=n;return t||1}(r,i))0?(e=t,n=0,r=this.maxFiniteDuration,er?r:e):Math.max(t,0),this._apply(this.offset),i&&this.play(!1)}},{key:"seek",value:function(t){return this.seekTo(Math.round(t/100*this.maxFiniteDuration))}},{key:"seekBy",value:function(t){return this.seekTo(this.offset+t)}},{key:"toggle",value:function(){return this._running?this.pause():this.reachedToEnd()?this.restart():this.play()}},{key:"set",value:function(t,e){if(me.includes(t)){var n=this._running;n&&this.pause(!1,!1),this._settings[t]=e,n?this.play(!1):this._apply(this.offset,{},!1)}}},{key:"destruct",value:function(){var t=this;this.stop(),this._handlers.forEach((function(t){t.element?t.element.removeEventListener(t.event,t.handler):t.callback&&t.callback.call&&t.callback.call()}));var e=function(){},n=Object.getOwnPropertyNames(Object.getPrototypeOf(this));n.push.apply(n,v(Object.getOwnPropertyNames(this))),n.forEach((function(n){"function"==typeof t[n]?t[n]=e:delete t[n]}))}}],[{key:"build",value:function(t){var e=h(a(u),"build",this).call(this,t,ce);if(!e)return null;var n=e.el,r=e.options,i=e.player,o=new ye(i),l=new ge(o);o.on=l.on,o.off=l.off,i.trigger=l.trigger;var s=n.svgatorPlayer&&n.svgatorPlayer.ready&&n.svgatorPlayer.ready.call&&n.svgatorPlayer.ready.call();n.svgatorPlayer=o,function(t){var e,n,r=t&&1===(null===(e=t.ownerDocument)||void 0===e||null===(n=e.childNodes)||void 0===n?void 0:n.length)&&window.parent!==window,i=null==t?void 0:t.firstElementChild;if(!r||!i||"a"!==i.tagName||i.getAttribute("target"))return;i.setAttributeNS(null,"target","_parent")}(n),function(t,e,n){if("click"===n.start){var r=function(){switch(n.click){case"freeze":return!t._running&&t.reachedToEnd()?t.restart():t.toggle();case"restart":return t.offset>0?t.restart():t.play();case"reverse":return t._running?t.reverse():t.reachedToEnd()?1===t.fill?t.reverse(!0):t.restart():t.play();case"none":default:if(t._running)return;return t.reachedToEnd()?t.restart():t.play()}};return t._handlers.push({element:e,event:"click",handler:r}),void e.addEventListener("click",r)}if("hover"===n.start){var i=function(){return t.reachedToEnd()?t.restart():t._rollingBack?t.reverse():t.play()};t._handlers.push({element:e,event:"mouseenter",handler:i}),e.addEventListener("mouseenter",i);var o=function(){switch(n.hover){case"freeze":return t.pause();case"reset":return t.stop();case"reverse":if(t.reverse(),t._running)return;return t.play();case"none":default:return}};return t._handlers.push({element:e,event:"mouseleave",handler:o}),void e.addEventListener("mouseleave",o)}if("scroll"===n.start){var u=new gt(e,n.scroll||25,(function(e){e?t.reachedToEnd()?t.restart():t.play():t.pause()}));return void t._handlers.push({callback:function(){return u.destruct()}})}if("programmatic"===n.start)return;t.play()}(i,n,r),function(t,e,n){var r;"function"==typeof Event?r=new Event("ready"):(r=document.createEvent("Event")).initEvent("ready",!0,!0);if(t.dispatchEvent(r),!n||!n.length)return;n.forEach((function(t){return e.ready(t)}))}(n,n.svgatorPlayer,s)}}]),u}(yt);return be.init(),be}));
(function(s,i,o,w,d,a,b){(a=Array.from(d.querySelectorAll('svg#' + i.root)).filter(n=> !n.svgatorPlayer)[0]||{}).svgatorPlayer={ready:(function(a){b=[];return function(c){return c?(b.push(c),a.svgatorPlayer):b}})(a)};w[o]=w[o]||{};w[o][s]=w[o][s]||[];w[o][s].push(i);})('91c80d77',{"root":"eXfEgBd9WuA1","version":"2022-05-04","animations":[{"elements":{"eXfEgBd9WuA53":{"d":[{"t":0,"v":["M",0,32,"C",0,14.326888,14.326888,0,32,0,"L",928,0,"C",945.673112,0,960,14.326888,960,32,"L",960,528,"C",960,545.673112,945.673112,560,928,560,"L",32,560,"C",14.326888,560,0,545.673112,0,528,"L",0,32,"Z"]},{"t":1000,"v":["M",0,32,"C",0,14.326888,14.326888,0,32,0,"L",928,0,"C",945.673112,0,960,14.326888,960,32,"L",960,528,"C",960,545.673112,945.673112,560,928,560,"L",32,560,"C",14.326888,560,0,545.673112,0,528,"L",0,32,"Z"],"e":[0.42,0,0.58,1]},{"t":2000,"v":["M",332.30772,67,"C",332.30772,49.326888,346.634608,35,364.30772,35,"L",595.69228,35,"C",613.365392,35,627.69228,49.326888,627.69228,67,"L",627.69228,493,"C",627.69228,510.673112,613.365392,525,595.69228,525,"L",364.30772,525,"C",346.634608,525,332.30772,510.673112,332.30772,493,"L",332.30772,67,"Z"]},{"t":5000,"v":["M",332.30772,67,"C",332.30772,49.326888,346.634608,35,364.30772,35,"L",595.69228,35,"C",613.365392,35,627.69228,49.326888,627.69228,67,"L",627.69228,493,"C",627.69228,510.673112,613.365392,525,595.69228,525,"L",364.30772,525,"C",346.634608,525,332.30772,510.673112,332.30772,493,"L",332.30772,67,"Z"],"e":[0.42,0,0.58,1]},{"t":6000,"v":["M",0,32,"C",0,14.326888,14.326888,0,32,0,"L",928,0,"C",945.673112,0,960,14.326888,960,32,"L",960,528,"C",960,545.673112,945.673112,560,928,560,"L",32,560,"C",14.326888,560,0,545.673112,0,528,"L",0,32,"Z"]}]},"eXfEgBd9WuA55":{"transform":{"data":{"t":{"x":-639.999985,"y":-360.000106}},"keys":{"o":[{"t":2300,"v":{"x":639.999985,"y":840.000107,"type":"corner"},"e":[0.42,0,0.58,1]},{"t":4700,"v":{"x":639.999985,"y":-509.999893,"type":"corner"},"e":[0.42,0,0.58,1]}]}},"opacity":[{"t":0,"v":0},{"t":2300,"v":0},{"t":3000,"v":1},{"t":4000,"v":1},{"t":4700,"v":0}]},"eXfEgBd9WuA64":{"opacity":[{"t":0,"v":0},{"t":2000,"v":0,"e":[0.42,0,0.58,1]},{"t":2500,"v":0.8},{"t":4600,"v":0.8,"e":[0.42,0,0.58,1]},{"t":5000,"v":0}]},"eXfEgBd9WuA65":{"d":[{"t":0,"v":["M",-360.000209,40,"C",-360.000209,40,679.999582,40,679.999582,40,"L",679.999582,88,"C",679.999582,105.673112,665.672694,120,647.999582,120,"L",-328,120,"C",-345.673112,120,-360,105.673112,-360,88,"L",-360.000209,40,"Z"],"e":[0.42,0,0.58,1]},{"t":1000,"v":["M",-360.000209,40,"C",-360.000209,40,679.999582,40,679.999582,40,"L",679.999582,88,"C",679.999582,105.673112,665.672694,120,647.999582,120,"L",-328,120,"C",-345.673112,120,-360,105.673112,-360,88,"L",-360.000209,40,"Z"],"e":[0.42,0,0.58,1]},{"t":2000,"v":["M",-0.000209,0,"C",-0.000209,0,319.999582,0,319.999582,0,"L",319.999582,48,"C",319.999582,65.673112,305.672694,80,287.999582,80,"L",32,80,"C",14.326888,80,0,65.673112,0,48,"L",-0.000209,0,"Z"],"e":[0.42,0,0.58,1]},{"t":5000,"v":["M",-0.000209,0,"C",-0.000209,0,319.999582,0,319.999582,0,"L",319.999582,48,"C",319.999582,65.673112,305.672694,80,287.999582,80,"L",32,80,"C",14.326888,80,0,65.673112,0,48,"L",-0.000209,0,"Z"],"e":[0.42,0,0.58,1]},{"t":6000,"v":["M",-360.000209,40,"C",-360.000209,40,679.999582,40,679.999582,40,"L",679.999582,88,"C",679.999582,105.673112,665.672694,120,647.999582,120,"L",-328,120,"C",-345.673112,120,-360,105.673112,-360,88,"L",-360.000209,40,"Z"]}]},"eXfEgBd9WuA68":{"transform":{"data":{"t":{"x":-184,"y":-120}},"keys":{"o":[{"t":1000,"v":{"x":1046,"y":80,"type":"corner"},"e":[0.42,0,0.58,1]},{"t":2000,"v":{"x":706,"y":120,"type":"corner"}},{"t":5000,"v":{"x":706,"y":120,"type":"corner"},"e":[0.42,0,0.58,1]},{"t":6000,"v":{"x":1046,"y":80,"type":"corner"}}]}}},"eXfEgBd9WuA69":{"transform":{"data":{"t":{"x":-238,"y":-120}},"keys":{"o":[{"t":1300,"v":{"x":238,"y":120,"type":"corner"},"e":[1,0,0,1]},{"t":2000,"v":{"x":238,"y":600,"type":"corner"}},{"t":4200,"v":{"x":238,"y":600,"type":"corner"},"e":[1,0,0,1]},{"t":4800,"v":{"x":238,"y":120,"type":"corner"}}]}}},"eXfEgBd9WuA72":{"transform":{"data":{"t":{"x":-178,"y":-120}},"keys":{"o":[{"t":1100,"v":{"x":178,"y":120,"type":"corner"},"e":[1,0,0,1]},{"t":1800,"v":{"x":178,"y":600,"type":"corner"}},{"t":4300,"v":{"x":178,"y":600,"type":"corner"},"e":[1,0,0,1]},{"t":4900,"v":{"x":178,"y":120,"type":"corner"}}]}}},"eXfEgBd9WuA75":{"transform":{"data":{"t":{"x":-118,"y":-120}},"keys":{"o":[{"t":1000,"v":{"x":118,"y":120,"type":"corner"},"e":[1,0,0,1]},{"t":1600,"v":{"x":118,"y":600,"type":"corner"}},{"t":4400,"v":{"x":118,"y":600,"type":"corner"},"e":[1,0,0,1]},{"t":5000,"v":{"x":118,"y":120,"type":"corner"}}]}}},"eXfEgBd9WuA78":{"transform":{"data":{"t":{"x":-118,"y":-120}},"keys":{"o":[{"t":1000,"v":{"x":58,"y":120,"type":"corner"},"e":[0.42,0,1,1]},{"t":2000,"v":{"x":238,"y":120,"type":"corner"}},{"t":4400,"v":{"x":238,"y":120,"type":"corner"}},{"t":5000,"v":{"x":58,"y":120,"type":"corner"}}]}}},"eXfEgBd9WuA81":{"transform":{"data":{"t":{"x":-118,"y":-120}},"keys":{"o":[{"t":1000,"v":{"x":-2,"y":120,"type":"cusp","end":{"x":64.383677,"y":235.548962}},"e":[0.42,0,0.58,1]},{"t":2100,"v":{"x":58,"y":600,"type":"cusp","start":{"x":66.108936,"y":461.411592}}},{"t":4400,"v":{"x":58,"y":599.610059,"type":"cusp","end":{"x":-16.139229,"y":484.970133}},"e":[0.42,0,0.58,1]},{"t":5000,"v":{"x":-2,"y":119.998159,"type":"cusp","start":{"x":-45.238046,"y":245.094861}}}]}}},"eXfEgBd9WuA84":{"opacity":[{"t":0,"v":0},{"t":2000,"v":0},{"t":2500,"v":1},{"t":4200,"v":1},{"t":4700,"v":0}]},"eXfEgBd9WuA87":{"opacity":[{"t":0,"v":0},{"t":2000,"v":0},{"t":2500,"v":1},{"t":4200,"v":1},{"t":4700,"v":0}]},"eXfEgBd9WuA90":{"opacity":[{"t":0,"v":1},{"t":500,"v":1},{"t":1000,"v":0},{"t":5700,"v":0},{"t":6200,"v":1},{"t":6630,"v":1}]},"eXfEgBd9WuA91":{"opacity":[{"t":0,"v":1},{"t":500,"v":1},{"t":1000,"v":0},{"t":5700,"v":0},{"t":6200,"v":1},{"t":6630,"v":1}]},"eXfEgBd9WuA92":{"transform":{"data":{"s":{"x":0.111111,"y":0.111111},"t":{"x":-180.000471,"y":-180.000003}},"keys":{"o":[{"t":1000,"v":{"x":180.00004,"y":80.00002,"type":"cusp","end":{"x":180.00004,"y":80}},"e":[0.42,0,0.58,1]},{"t":2000,"v":{"x":640.00004,"y":120.00002,"type":"cusp","start":{"x":640.591319,"y":119.998161}}},{"t":4200,"v":{"x":640.520368,"y":119.998391,"type":"cusp","end":{"x":636.211227,"y":360}},"e":[0.42,0,0.58,1]},{"t":6500,"v":{"x":180.00004,"y":80.00002,"type":"cusp","start":{"x":475.892192,"y":286.346583}}}]}}},"eXfEgBd9WuA100":{"transform":{"data":{"t":{"x":-600,"y":-400.000091}},"keys":{"o":[{"t":0,"v":{"x":600,"y":400.000092,"type":"corner"},"e":[0.42,0,0.58,1]},{"t":1000,"v":{"x":600,"y":-719.999909,"type":"corner"},"e":[0.362921,0.233259,0.568116,1]},{"t":5700,"v":{"x":600,"y":-720.000092,"type":"corner"},"e":[0.42,0,0.58,1]},{"t":6500,"v":{"x":600,"y":399.999908,"type":"corner"},"e":[0.42,0,0.58,1]}]}},"opacity":[{"t":500,"v":1,"e":[0.42,0,0.58,1]},{"t":1000,"v":0},{"t":5700,"v":0,"e":[0.42,0,0.58,1]},{"t":6000,"v":1}]}},"s":"MDLA1Zjk3M2U4MGEw5MU84ZTdkMOTA4NUJROGIM4YTNlNTY1NDBRjNGM0YzQ4MY2U4MDg1OGU4OMTdmTzkwODUE4YjhhM2U1NjRQ5NGQ0OFkzZGTg1OTBIODE4SZTdkOTBNODUA4YjhhOGYzZTWU2NGY0ODNlOTDI4NTg4ODgzGZVA1NlU0ZDQE4M2VVN2Q4ODOkwODE4ZThhND2Q5MDgxM2U1XNjkwTjhlOTEQ4MTQ4SzNlUDOhmOGM4MTgxOUDAzZTU2NGM0SYTU0NDgzZTgYyOGM4ZjNlNTBY0ZDRjNGM5OHQ|"}],"options":"MDIAxZTljNDM5NEDk1ODJWOTM5SNUk0MzViNDML5NDg0OTM5MDFhkOGQ0MzRkNFDM5NDg0OTM5EMDhkOGRCNDMA1YjUzNTY5ZQL|"},'__SVGATOR_PLAYER__',window,document)
]]>
- · John Hallett
Better search for UNA communities that have outgrown the built-in one. Members can search posts, discussions, groups, events and profiles from one box, with typo tolerance, filters by type and date, and suggestions as they type.Admins get a report of the most common searches and the ones that returned nothing. That second list turns out to be one of the best sources of ideas for new help pages.One-time purchase, including a year of updates.
$555
- · John Hallett
Five things to check every quarter to keep a community site safe: two-factor sign-in for admins and moderators, a permissions review, spam and bot protection on sign-up, an update routine and off-site backups.Each item has short steps and a note on what to do if something doesn't pass. It takes about an hour once you've been through it the first time, and it costs nothing.
Free
- · John Hallett
When your feed starts to feel slow, the cause is usually one of a handful of things. This guide goes through them in order: caching, image sizes, database housekeeping, background jobs and when a CDN is worth it.Each section starts with a quick test, so you can see whether it applies to your site before you change anything.
Free
- · John Hallett
The checklist I wish I'd had the first time I moved a community onto my own server. It covers choosing a VPS, PHP and database settings, cron jobs, outgoing mail, SSL and a backup routine you will actually test.Free, one page, and updated whenever someone in UNA Builders finds a step I missed.
Free
- · John Hallett
Run a proper affiliate program from inside your UNA site. Partners get their own tracked links and a dashboard with clicks, sign-ups and earnings. You get commission rules per product or membership level, a monthly payout report and checks for self-referrals.It works with Market products and paid membership levels. Commissions are calculated when an order is confirmed, and you approve payouts by hand, so nothing goes out without a check.Available as a one-off licence or as a monthly plan that includes updates and priority support. The monthly plan starts with a free trial.
$29/month
- · John Hallett
Forty icebreakers for meetups, workshops and virtual events, sorted by group size and how much energy the room has. There are quick ones for the first five minutes, longer ones for socials and a few that work in text-only chats.Printable cards included.
Free
- · John Hallett
A year of post ideas for the quiet weeks. Every week has a prompt (welcome threads, show-and-tell days, member spotlights, open questions and monthly recaps), plus seasonal ideas and a column to note which posts got the most replies.Comes as a spreadsheet and a printable wall planner. Free for anyone running a community.
Free
- · John Hallett
How to get your members inviting friends without turning your community into a sales funnel. The playbook covers invite links, rewards that feel like a thank-you rather than a bribe, spotting referral abuse early and a simple tracking sheet for your first three months.It also includes notes from our own invite experiments. A personal invite with a short note from an existing member beat every reward we tried.
Free
- · John Hallett
Running an 18+ space takes more than a checkbox at sign-up. This free guide is for communities with adult spaces, such as wine and beer clubs, frank health discussions or mature book clubs. It walks through confirming age when members join, keeping adult spaces opt-in and hidden from guests, and blurring sensitive images until a member chooses to view them.There is also a moderation checklist for handling reports in adult spaces and template wording for your join page.
Free
- · John Hallett
Free, editable templates for the documents every new community needs and nobody enjoys writing: a code of conduct, a moderation policy, a short privacy note for members and an onboarding FAQ.Each template has plain-language examples and comments on what to adapt for your audience. Use them as they are or as a starting point for your own.
Free
- · John Hallett
A monthly subscription for community owners who sell memberships, courses or digital downloads. Each month you get a fresh pack of product page layouts, pricing table copy, checkout reminder emails and launch announcement posts, all written for communities rather than generic online stores.Every pack fits the Market and paid membership levels in UNA, and the copy is plain text you can paste anywhere. Start with the free trial, cancel whenever you like and keep everything you have already downloaded.
$10/month
- · John Hallett
A feature-request and feedback board for your UNA community. Members post ideas, upvote the ones they care about and follow along as you move them through statuses like Planned, In progress and Done.It includes a public roadmap view, duplicate merging for moderators and a weekly digest of the most-voted ideas. I built it for this network after good suggestions kept getting buried in long comment threads.One-time purchase with free updates for minor releases. Setup takes about ten minutes.
$100