<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>markmoffat</title> <link>https://markmoffat.com</link> <description>Mark Moffat portfolio</description> <lastBuildDate>Sat, 16 Dec 2023 10:26:08 GMT</lastBuildDate> <docs>https://validator.w3.org/feed/docs/rss2.html</docs> <generator>squido</generator> <atom:link href="https://markmoffat.com/rss" rel="self" type="application/rss+xml"/> <item> <title><![CDATA[runify - Calculate all the vital metrics to plan your run]]></title> <link>https://markmoffat.com/runify-calculate-all-the-vital-metrics-to-plan-your-run/</link> <guid>https://markmoffat.com/runify-calculate-all-the-vital-metrics-to-plan-your-run/</guid> <pubDate>Sat, 16 Dec 2023 01:00:00 GMT</pubDate> <description><![CDATA[Don't run without a plan. Calculate your distance, your pace and speed using our easy-to-use calculators]]></description> <content:encoded><![CDATA[<img src="/content/images/runify-screenshot.png" class="img-fluid mb-5"> <p><a href="https://runify.markmoffat.com">runify</a> helps you to calculate all the vital metrics to plan your run/walk or crawl.</p> <h3 id="features">Features</h3> <ul> <li>Run Distance Calculator - Set your speed and how far you will run in a certain time period</li> <li>Run Pace Calculator - Set your pace and calculate your times for various distances</li> <li>Run Speed Calculator - Calculate the speed you need to run to acheive a distance within a certain time</li> </ul> <h3 id="benefits">Benefits</h3> <ul> <li>Know your pace - Setting and keeping a pace is essential to your planning of a run. You want to run a 1/2 marathon in a certain time? Knowing and training at that pace is essential. Calculate your pace to acheive your goals!</li> <li>Set your goals - Setting goals is essential to your progress in running longer distances or faster over a set distance. Use our calculators to set a goal to run a 1/2 marathon within a certain time. Goals = progress!</li> <li>Be consistent - Ensuring you are consistent and sticking to a steady pace allows you to plan out your run. Consistently increasing and dropping speed allows you to train better using intervals and get faster over your favourite distances.</li> </ul> ]]></content:encoded> </item> <item> <title><![CDATA[nextjs-checkout - A superfast shopping cart built with Next.js]]></title> <link>https://markmoffat.com/nextjs-checkout-a-superfast-shopping-cart-built-with-nextjs/</link> <guid>https://markmoffat.com/nextjs-checkout-a-superfast-shopping-cart-built-with-nextjs/</guid> <pubDate>Fri, 16 Jun 2023 01:00:00 GMT</pubDate> <description><![CDATA[nextjs-checkout is a superfast and full featured shopping cart built with Next.js and Prisma ORM.]]></description> <content:encoded><![CDATA[<img src="https://nextjs-checkout.markmoffat.com/screenshot.jpg" class="img-fluid mt-4 mb-4"> <p><a href="https://nextjs-checkout.markmoffat.com">nextjs-checkout</a> is a superfast and full featured shopping cart which can be used to sell your eCommerce goods. Built with <a href="https://nextjs.org/">Next.js</a> and Prisma ORM you can use <a href="https://nextjs-checkout.markmoffat.com">nextjs-checkout</a> as-is or extend it to meet your needs.</p> <h3 id="features">Features</h3> <ul> <li>Supports <a href="https://stripe.com">Stripe</a> and <a href="https://verifone.cloud">Verifone</a> payments</li> <li>Has a Dashboard visualising orders and customers</li> <li>Uses <a href="https://www.prisma.io/">Prisma ORM</a> meaning a wide range of databases are supported</li> </ul> <p>So checkout the <a href="https://nextjs-checkout.markmoffat.com">demo</a>, or jump onto <a href="https://github.com/mrvautin/nextjs-checkout">Github</a> to get started building your eCommmerce business!</p> ]]></content:encoded> </item> <item> <title><![CDATA[helpkb - An open-source and easy to use knowledge base / FAQ]]></title> <link>https://markmoffat.com/helpkb-open-source-and-easy-to-use-knowledge-base-faq/</link> <guid>https://markmoffat.com/helpkb-open-source-and-easy-to-use-knowledge-base-faq/</guid> <pubDate>Mon, 29 May 2023 01:00:00 GMT</pubDate> <description><![CDATA[An open-source and easy to use knowledge base / FAQ]]></description> <content:encoded><![CDATA[<img src="/content/images/helpkb.png" width="200px" height="200px" class="img-fluid"> <p><a href="https://helpkb.markmoffat.com">helpkb</a> is a superfast and easy to use knowledge base / FAQ to help your customers get the info they need, when they need it most.</p> <p>It's been proven that empowering your customers and staff to self serve and access information quickly and easily will boost customer satisfaction, reduce queries and make everyone's life easier. We've created <a href="https://helpkb.markmoffat.com">helpkb</a> to do just that. A FREE, super fast and easy to use knowledge base or FAQ so information is always on hand.</p> <p>So checkout the <a href="https://helpkb-docs.markmoffat.com">documentation / demo</a>, and follow our <a href="https://helpkb-docs.markmoffat.com/article/getting-started">guide</a> to get started building your knowledge base / FAQ today!</p> <h4 id="screenshot%3A">Screenshot:</h4> <p><img src="/content/images/helpkb-screenshot.jpg" alt="helpkb screenshot"></p> ]]></content:encoded> </item> <item> <title><![CDATA[squido - A dead simple no-code static HTML website builder]]></title> <link>https://markmoffat.com/squido-a-dead-simple-no-code-static-html-website-builder/</link> <guid>https://markmoffat.com/squido-a-dead-simple-no-code-static-html-website-builder/</guid> <pubDate>Tue, 13 Apr 2021 01:00:00 GMT</pubDate> <description><![CDATA[A dead simple no-code static HTML website builder]]></description> <content:encoded><![CDATA[<img src="https://raw.githubusercontent.com/mrvautin/squido/main/docs/images/squido.svg" width="200px" height="200px" class="img-fluid"> <p><a href="https://squido.markmoffat.com/">squido</a> is a dead simple static website builder which can be hosted anywhere for super fast static HTML websites and very little effort.</p> <p>The advantage of <a href="https://squido.markmoffat.com/">squido</a> is that is has all the basics to build and deploy a static website built into the core. This means you don't have to waste time learning the ins and outs, writing code and play around with deployment. You simply do the writing and customization of style / layout and hit deploy.</p> <p>Static websites have many benefits seen <a href="https://mrvautin.com/advantages-and-disadvantages-of-a-static-html-website-vs-a-complex-dynamic-website">here</a> but sometimes it's best to simply try for <a href="https://squido-docs.markmoffat.com/getting-started/">yourself</a>.</p> <p>So checkout the <a href="https://squido-docs.markmoffat.com">documentation</a>, clone one of the <a href="https://squido.markmoffat.com/demo-websites/">demo repos</a> and get started building your website today!</p> <p><img src="https://squido.markmoffat.com/content/images/screenshot.png" alt="squido screenshot"></p> ]]></content:encoded> </item> <item> <title><![CDATA[expressCart - A full featured Node.js Shopping Cart]]></title> <link>https://markmoffat.com/expresscart-a-full-featured-node-js-shopping-cart/</link> <guid>https://markmoffat.com/expresscart-a-full-featured-node-js-shopping-cart/</guid> <pubDate>Mon, 15 Feb 2021 00:00:00 GMT</pubDate> <description><![CDATA[A full featured Node.js Shopping Cart]]></description> <content:encoded><![CDATA[<p><img src="/content/images/expressCart-homepage.png" alt="expressCart - A full featured Node.js Shopping Cart"></p> <h1 id="expresscart---a-full-featured-node.js-shopping-cart">expressCart - A full featured Node.js Shopping Cart</h1> <p>expressCart is a Shopping Cart built with <a href="https://nodejs.org/">Nodejs</a> and <a href="https://expressjs.com/">ExpressJS</a>. The application has <a href="https://paypal.com">PayPal</a> Express Checkout, <a href="https://stripe.com">Stripe</a> checkout and Authorise.Net built-in. expressCart uses <a href="https://www.mongodb.com/">MongoDB</a> database backend.</p> <p>The application is designed to be easy to use and install and based on search for simplicity rather than nested categories. Simply search for what you want and select from the results. expressCart uses powerful <a href="https://lunrjs.com">lunr.js</a> to index the products and enable the best search results.</p> <p><strong>Website</strong>: <a href="https://expresscart.markmoffat.com/">https://expresscart.markmoffat.com/</a></p> <p><strong>Demo</strong>: <a href="https://demo.expresscart.markmoffat.com">https://demo.expresscart.markmoffat.com</a></p> <h3 id="features">Features</h3> <ul> <li><strong>Payments</strong>: expressCart has built in <a href="https://paypal.com">PayPal</a> Express Checkout, <a href="https://stripe.com">Stripe</a> checkout, <a href="https://www.authorize.net/">Authorize.Net</a>, <a href="https://www.adyen.com/">Adyen</a> and Instore (manual) payments.</li> <li><strong>Search</strong>: expressCart is a search based Shopping Cart backed by <a href="https://github.com/olivernn/lunr.js/">Lunr.js</a> indexing to create the best possible results on searches.</li> <li><strong>Backend</strong>: expressCart uses <a href="https://www.mongodb.com/">MongoDB</a> for a database.</li> <li><strong>Design</strong>: expressCart has a simple flat and responsive design.</li> <li><strong>Responsive</strong>: expressCart is built using Bootstrap, allowing it to be responsive and work on all devices.</li> <li><strong>Themes</strong>: expressCart allows for custom themes to style the cart exactly how you like it.</li> <li><strong>Modules:</strong> Support for custom modules. Built in modules are: Shipping and Discount vouchers</li> </ul> <h3 id="screenshots">Screenshots</h3> <p>Homepage:<br> <img src="https://mrvautin.com/content/images/2020/01/expressCart-homepage.png" alt="Homepage"></p> <p>Admin manage settings:<br> <img src="https://mrvautin.com/content/images/2020/01/expressCart-admin-settings.png" alt="Admin manage settings"></p> <p>Popout cart:<br> <img src="https://mrvautin.com/content/images/2020/01/expressCart-popout-cart.png" alt="Popout cart"></p> <p>Dashboard:<br> <img src="https://mrvautin.com/content/images/2020/01/expressCart-admin-dashboard.png" alt="Dashboard"></p> <h3 id="running-in-production">Running in production</h3> <p>Using <a href="https://github.com/Unitech/pm2">PM2</a> is the easiest and best option for running production websites.<br> See the <a href="https://github.com/Unitech/pm2">PM2</a> for more information or a short guide here: <a href="https://mrvautin.com/running-nodejs-applications-in-production-forever-vs-supervisord-vs-pm2/">/running-nodejs-applications-in-production-forever-vs-supervisord-vs-pm2/</a>.</p> ]]></content:encoded> </item> <item> <title><![CDATA[openKB - Open Source Node.js Markdown based FAQ]]></title> <link>https://markmoffat.com/openkb-open-source-node-js-markdown-based-faq/</link> <guid>https://markmoffat.com/openkb-open-source-node-js-markdown-based-faq/</guid> <pubDate>Sun, 14 Feb 2021 00:00:00 GMT</pubDate> <description><![CDATA[An open source Node.js Markdown based FAQ]]></description> <content:encoded><![CDATA[<p><img src="/content/images/openkb_homepage.png" alt="openKB - Open Source Node.js Markdown based FAQ"></p> <h1 id="openkb---open-source-node.js-markdown-based-faq">openKB - Open Source Node.js Markdown based FAQ</h1> <p>openKB is an open source Markdown based Knowledge base application (FAQ) built with <a href="https://nodejs.org/">Nodejs</a> and <a href="https://expressjs.com/">ExpressJS</a>. The application uses an embedded database (<a href="https://github.com/louischatriot/nedb">nedb</a>) for easy installation without a full Database server.<br> The application is designed to be easy to use and install and based around search rather than nested categories. Simply search for what you want and select from the results.</p> <p>Demo: <a href="https://openkb.mrvautin.com">https://openkb.mrvautin.com</a></p> <h3 id="installation">Installation</h3> <ol> <li>Clone Repository: <code>git clone https://github.com/mrvautin/openKB.git && cd openKB</code></li> <li>Install dependencies: <code>npm install</code></li> <li>Start application: <code>npm start</code></li> <li>Go to <a href="http://127.0.0.1:4444">http://127.0.0.1:4444</a> in your browser</li> </ol> <h3 id="features">Features</h3> <ul> <li><strong>Search</strong>: openKB is a search based Knowledgebase (FAQ) backed by <a href="https://github.com/olivernn/lunr.js/">Lunr.js</a> indexing to create the best possible results on searches.</li> <li><strong>Backend</strong>: openKB uses the pure javascript <a href="https://github.com/louischatriot/nedb">nedb</a> embedded database. This means no external databases need to be setup.</li> <li><strong>Design</strong>: openKB is meant to be simple flat design. With that said, openKB is very customisable by adding your CSS file to <code>/public/stylesheets/</code> and adding a link in <code>/views/layouts/layout.hbs</code> you can add your own styling and graphics.</li> <li><strong>Responsive</strong>: openKB is built using Bootstrap allowing it to be responsive and work on all devices. The <code>admin</code> can be a little difficult editing Markdown on smaller screens.</li> <li><strong>Mermaid</strong>: openKB allows for <a href="https://knsv.github.io/mermaid/">Mermaid</a> charts in articles.</li> <li><strong>Editor</strong>: openKB uses Markdown-it which is based off the <a href="https://spec.commonmark.org/">CommonMark spec</a>. This allows for the very best Markdown experience.</li> <li><strong>Image management</strong>: openKB allows for drag and drop of images into articles. The image is automatically uploaded to the server in the background. Google Chrome users can also paste images directly from the clipboard.</li> </ul> <h3 id="screenshots">Screenshots</h3> <p><img src="/content/images/openkb/homepage.png" alt="Homepage"></p> <p><img src="/content/images/openkb/editor.png" alt="Editor"></p> <p><img src="/content/images/openkb/articleview.png" alt="Article view"></p> <p><img src="/content/images/openkb/articlefiltering.png" alt="Article filtering"></p> <p><img src="/content/images/openkb/files.png" alt="Files"></p> <h3 id="admin">Admin</h3> <p>Visit: <code>http://127.0.0.1:4444/login</code></p> <p>A new user form will be shown where a user can be created.</p> <h3 id="config">Config</h3> <p>There are are a few configurations that can be made which are held in <code>/routes/config.js</code>. If any values have been changed the app will need to be restarted.</p> <h3 id="running-in-production">Running in production</h3> <p>Using <a href="https://github.com/Unitech/pm2">PM2</a> seems to be the easiest and best option for running production websites.<br> See the <a href="https://github.com/Unitech/pm2">PM2</a> for more information or a short guide here: <a href="https://mrvautin.com/Running-Nodejs-applications-in-production-forever-vs-supervisord-vs-pm2">https://mrvautin.com/Running-Nodejs-applications-in-production-forever-vs-supervisord-vs-pm2</a>.</p> ]]></content:encoded> </item> <item> <title><![CDATA[adminMongo - MongoDB GUI]]></title> <link>https://markmoffat.com/adminmongo/</link> <guid>https://markmoffat.com/adminmongo/</guid> <pubDate>Sat, 13 Feb 2021 00:00:00 GMT</pubDate> <description><![CDATA[adminMongo - MongoDB GUI]]></description> <content:encoded><![CDATA[<p><img src="/content/images/adminMongo_dbview.png" alt="adminMongo: MongoDB GUI"></p> <h1 id="adminmongo%3A-mongodb-gui">adminMongo: MongoDB GUI</h1> <p>adminMongo is a Web based user interface (GUI) to handle all your MongoDB connections/databases needs. adminMongo is fully responsive and should work on a range of devices.</p> <p>adminMongo connection information (including username/password) is stored unencrypted in a config file, it is not recommended to run this application on a production or public facing server without proper security considerations.</p> <h2 id="installation">Installation</h2> <ol> <li>Clone Repository: <code>git clone https://github.com/mrvautin/adminMongo.git && cd adminMongo</code></li> <li>Install dependencies: <code>npm install</code></li> <li>Start application: <code>npm start</code></li> <li>Visit <a href="http://127.0.0.1:1234">http://127.0.0.1:1234</a> in your browser</li> </ol> <h2 id="features">Features</h2> <ul> <li>Manage from a connection level for easy access to multiple databases</li> <li>Create/Delete databases</li> <li>Create/Delete/Edit collection</li> <li>Create/Delete/Edit documents</li> <li>Create/Delete indexes</li> <li>Query documents</li> <li>Collection statistics</li> <li>Export collections in JSON format</li> </ul> <h3 id="limitations">Limitations</h3> <ul> <li>Documents need to have an "_id" value which is a string, integer, or MongoDB ObjectId. Documents using Composite ID indexing is currently not supported.</li> </ul> <h4 id="configuration">Configuration</h4> <p>adminMongo will listen on host: <code>localhost</code> and port: <code>1234</code> by default.<br> This can be overwritten by adding a config file in <code>/config/app.json</code>. The config file can also override the default 5 docs per page.<br> The config file options are:</p> <pre><code class="language-json"> { <span class="hljs-attr">"app"</span>: { <span class="hljs-attr">"host"</span>: <span class="hljs-string">"10.0.0.1"</span>, <span class="hljs-attr">"port"</span>: <span class="hljs-number">4321</span>, <span class="hljs-attr">"docs_per_page"</span>: <span class="hljs-number">15</span> } } </code></pre> <p><strong>Note: Any changes to the config file requires a restart of the application</strong></p> <h2 id="usage">Usage</h2> <h5 id="create-a-connection">Create a connection</h5> <p>After visiting <a href="http://127.0.0.1:1234">http://127.0.0.1:1234</a> you will be presented with a connection screen. You need to give your connection a unique name as a reference when using adminMongo and a MongoDB formatted connection string. The format of a MongoDB connection string can form: <code>mongodb://<user>:<password>@127.0.0.1:<port>/<db></code> where specifying to the <code><db></code> level is optional. For more information on MongoDB connection strings, see the <a href="https://docs.mongodb.org/manual/reference/connection-string/">official MongoDB documentation</a>.</p> <p>Note: The connection can be either local or remote hosted on VPS or MongoDB service such as MongoLab.</p> <p><em>The Connection setup screen</em></p> <h5 id="connection%2Fdatabase-admin">Connection/Database admin</h5> <p>After opening your newly created connection, you are able to see all database objects associated with your connection. Here you can create/delete collections, create/delete users and see various stats for your database.</p> <p><em>The connections/database screen</em></p> <h5 id="collections">Collections</h5> <p>After selecting your collection from the "Database Objects" menu, you will be presented with the collections screen. Here you can see documents in pagination form, create new documents, search documents, delete, edit documents and view/add indexes to your collection.</p> <p><em>The collections screen</em></p> <h5 id="searching-documents">Searching documents</h5> <p>You can search documents using the <code>Search documents</code> button on the collections screen. You will need to enter the key (field name) and value. Eg: key = "_id" and value = "569ff81e0077663d78a114ce".</p> <p>You can clear your search by clicking the <code>Reset</code> button on the collections screen.</p> <p><em>The collections screen</em></p> <h5 id="documents">Documents</h5> <p>Adding and editing documents is done using a JSON syntax highlighting control.</p> <p><em>Editing a document</em></p> <h5 id="indexes">Indexes</h5> <p>Indexes can be added from the collection screen. Please see the <a href="https://docs.mongodb.org/manual/indexes/">official MongoDB documentation</a> on adding indexes.</p> <h2 id="contributing">Contributing</h2> <ol> <li>Fork it!</li> <li>Create your feature branch: <code>git checkout -b my-new-feature</code></li> <li>Commit your changes: <code>git commit -am 'Add some feature'</code></li> <li>Push to the branch: <code>git push origin my-new-feature</code></li> <li>Submit a pull request :D</li> </ol> ]]></content:encoded> </item> </channel> </rss>