<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Webshop on Schallbert's Blog</title><link>https://blog.schallbert.de/en/tags/webshop/</link><description>Recent content in Webshop on Schallbert's Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 15 Jun 2025</lastBuildDate><atom:link href="https://blog.schallbert.de/en/tags/webshop/index.xml" rel="self" type="application/rss+xml"/><item><title>My own webshop - Part3</title><link>https://blog.schallbert.de/en/ecommerce-selection/</link><pubDate>Sun, 15 Jun 2025</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/en/ecommerce-selection/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-06-15-opencart-thumb.avif"&#10; class="post-cover"&#10; alt="Image: Snip of OpenCart&amp;#39;s article about data safety"&#10; title="My own webshop - Part3" /&gt;&#10;&lt;h2 id="selecting-a-solution-based-on-key-questions"&gt;Selecting a solution based on key questions&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Which solution is straightforward and quick to set up?&lt;/li&gt;&#10;&lt;li&gt;Which solution is easier to maintain?&lt;/li&gt;&#10;&lt;li&gt;With which system can I, as the operator, most easily understand how everything works (transparency, dependencies)?&lt;/li&gt;&#10;&lt;li&gt;Which system has the smallest attack surface?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="theres-still-quite-a-bit-missing-here"&gt;There&amp;rsquo;s still quite a bit missing here!&lt;/h2&gt;&#10;&lt;p&gt;Over the last few weeks, my enthusiasm for setting up my own online shop has waned a bit, as I wanted to focus first on securing my server and finishing off some old, nearly completed projects. I&amp;rsquo;ll return to this series as soon as that ‘I-want-to-do-something-new&amp;rsquo; fever takes hold of me again.&lt;/p&gt;&#10;&lt;p&gt;Hang in there!&#10;&lt;em&gt;Schallbert&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>Creating an own Webshop - Part 2"</title><link>https://blog.schallbert.de/en/ecommerce-alternatives/</link><pubDate>Thu, 15 May 2025</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/en/ecommerce-alternatives/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-05-15-ecommerce-frameworks-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: logos from different e-commerce solutions"&#10; title="Creating an own Webshop - Part 2&amp;#34;" /&gt;&#10;&lt;h2 id="a-few-options-for-webshop-software"&gt;A few options for webshop software&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s assume only software that at least partially meets my &lt;a href="https://blog.schallbert.de/en/ecommerce-requirements/"&gt;requirements&lt;/a&gt; get shortlisted. Below, I would like to present a few possible ecommerce solutions.&lt;/p&gt;&#10;&lt;h3 id="shopify"&gt;Shopify&lt;/h3&gt;&#10;&lt;p&gt;Shopify is an all-inclusive package solution for online retail. Shopify Inc. is headquartered in Canada and handles its European business from Ireland. The &lt;a href="https://www.shopify.com/de/legal" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Legal&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; sections found on the website, as well as the complexity of the information presented on the topic of &lt;a href="https://www.shopify.com/de/legal/impressum?country=de&amp;amp;lang=en" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Data Protection&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, lead me to suspect that Shopify is a multinational corporation - and not just a provider of online shops.&lt;/p&gt;&#10;&lt;p&gt;But back to the topic.&lt;/p&gt;&#10;&lt;p&gt;The domain and hosting are included in the price with Shopify, and you can create your own shop rapidly and without any programming knowledge in a browser window by selecting a theme, and setting a few parameters. Shopify has extensive documentation and offers training and all sorts of other services for its subscribers.&lt;/p&gt;&#10;&lt;p&gt;But where&amp;rsquo;s the fun in that? After all, I run a tech blog and am not a businessman, literally. A bit of programming is definitely something I enjoy. Furthermore, as an open source fan, I don&amp;rsquo;t particularly like the corporate stance (just look at their modern website, equipped with auto-playing videos and optimized for marketing purposes). The configurability is mediocre at best, and, as with most other solutions, I have to do the optimization for search engine results myself. Regarding data protection and security, they maintain the usual compliance and state-of-the-art communication; so I can&amp;rsquo;t look behind it and have to assume that they protect their customers well, also in their own interest.&lt;/p&gt;&#10;&lt;p&gt;Shopify describes itself as a &lt;a href="https://www.shopify.com/blog/open-source-ecommerce#5" target="_blank" rel="noopener noreferrer" class="external-link"&gt;closed-source SaaS platform&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Therefore, I&amp;rsquo;m removing this platform from my list of preferred web shop solutions because I don&amp;rsquo;t want to become unnecessarily dependent on the well-being of third parties. With Shopify, it&amp;rsquo;s not me who has control over subscription costs or &amp;ldquo;my&amp;rdquo; share of the cloud, but Shopify. It&amp;rsquo;s not me who can determine how many transactions are included in the &amp;ldquo;plan,&amp;rdquo; but Shopify. It&amp;rsquo;s not my customers who remain in control of their data, but Shopify or a third-party company they have commissioned to process it.&lt;/p&gt;&#10;&lt;h3 id="wordpress--woocommerce"&gt;Wordpress / WooCommerce&lt;/h3&gt;&#10;&lt;p&gt;I only know Wordpress as a juggernaut. The jack of all trades, capable of everything you could possibly want thanks to an overwhelming mass of plugins, extensions, and features. And much more you don&amp;rsquo;t need.&lt;/p&gt;&#10;&lt;p&gt;But it&amp;rsquo;s open source, free, and, according to its own statements, used by many, many shop operators. Let&amp;rsquo;s take a look at the most well-known e-commerce extension for Wordpress: &lt;a href="https://woocommerce.com/document/build-online-store/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;WooCommerce&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;I immediately found countless guides on setting up a WooCommerce store (for example, from &lt;a href="https://www.greengeeks.com/blog/set-up-woocommerce-wordpress-ultimate-guide/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;GeeksForGeeks&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; or &lt;a href="https://themeisle.com/blog/how-to-set-up-woocommerce/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Themeisle&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;), so I&amp;rsquo;ll refrain from providing my own guide.&lt;/p&gt;&#10;&lt;p&gt;After skimming through a few tutorials, I&amp;rsquo;ll summarize:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A WooCommerce store is easy to set up and configure using a wizard.&lt;/li&gt;&#10;&lt;li&gt;There are many themes available, and easy-to-integrate store designs offer a suitable look for every taste.&lt;/li&gt;&#10;&lt;li&gt;It helps to already have a WordPress site and some basic knowledge of domains, DNS, and hosting.&lt;/li&gt;&#10;&lt;li&gt;Many payment service providers and some shipping providers are preconfigured.&lt;/li&gt;&#10;&lt;li&gt;There are numerous YouTube tutorial videos on the topic, and detailed documentation is also available.&lt;/li&gt;&#10;&lt;li&gt;Countless plugins allow you to optimize your store for even very specialized areas and purposes.&lt;/li&gt;&#10;&lt;li&gt;However, this variety of options can be offset by the fact that choosing the &amp;ldquo;best solution&amp;rdquo; can be difficult, and optimizing the site for speed and search engines can become complex.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;All in all, WooCommerce strikes me as a balanced mix of &amp;ldquo;I want to quickly put together something useful&amp;rdquo; and &amp;ldquo;I want to be able to configure and modify everything.&amp;rdquo;&lt;/p&gt;&#10;&lt;h3 id="snipcart"&gt;Snipcart&lt;/h3&gt;&#10;&lt;p&gt;I would consider Snipcart a &amp;ldquo;shopping plugin&amp;rdquo; for any website. Even static websites that can essentially only display a product catalog become a fully-fledged eCommerce solution with Snipcart. The core element here is the shopping cart, which is used to process the purchase.&lt;/p&gt;&#10;&lt;p&gt;The interface is the website&amp;rsquo;s &lt;code&gt;HTML&lt;/code&gt; markup. Snipcart is integrated as a &lt;code&gt;JavaScript&lt;/code&gt; blob and referenced via &lt;code&gt;HTML&lt;/code&gt;. The design and appearance are handled via cascading style sheets. In my case, I could use the existing &amp;ldquo;tech stack&amp;rdquo; consisting of a static Jekyll site with a CD pipeline in Gitea on a Caddyserver instance for the shop as well, and with minimal adjustments, conjure a seamless look for the blog and shop. Sounds great, right?&lt;/p&gt;&#10;&lt;p&gt;Snipcart is developed by a Canadian company in Quebec. It describes itself as a &lt;a href="https://snipcart.com/ecommerce-inventory-management" target="_blank" rel="noopener noreferrer" class="external-link"&gt;&amp;ldquo;Shopping Cart Platform&amp;rdquo;&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. An account is required for installation, and you must enter your shopping domain in the Snipcart web frontend, similar to Google Search Console or Google Analytics, to receive a so-called API key. Only with this key will the JavaScript blob integrate correctly.&lt;/p&gt;&#10;&lt;p&gt;And this brings us to the first major problem: Snipcart restricts my freedom.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;https://app.snipcart.com&amp;gt;&amp;#34;&lt;/span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;https://cdn.snipcart.com&amp;gt;&amp;#34;&lt;/span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This shows me that Snipcart would like to keep the data on its server. I have to use their content delivery network to handle the order process and integrate it with mine. So, it&amp;rsquo;s by no means the case that all connections remain with me and I &amp;ldquo;buy&amp;rdquo; the JS code from Snipcart and run it in the customer&amp;rsquo;s browser or a database solution behind it on my server.&lt;/p&gt;&#10;&lt;p&gt;So, if full autonomy and control over your own site isn&amp;rsquo;t a priority, Snipcart can be a very elegant e-commerce solution. This is especially worthwhile for existing sites. However, for me, it&amp;rsquo;s out of the question.&lt;/p&gt;&#10;&lt;h3 id="opencart"&gt;OpenCart&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://www.opencart.com/index.php?route=common/home" target="_blank" rel="noopener noreferrer" class="external-link"&gt;OpenCart&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; offers a PHP-based shop module free of charge and open source. It can be booked as &amp;ldquo;Software as a Service&amp;rdquo; through third-party providers or downloaded via &lt;a href="https://github.com/opencart/opencart/blob/master/INSTALL.md" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Github&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; and deployed on your own server.&lt;/p&gt;&#10;&lt;p&gt;Installation and administration are handled via web interface and, in my opinion, are straightforward. You can also find a few images on DockerHub that you can get started with right away.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-05-15-opencart.avif" alt="Image: OpenCart demo, category overview"&gt;&lt;/figure&gt;&#10;&lt;p&gt;OpenCart is fully customizable to your needs. Templated themes can also be integrated. Out of curiosity, I visited a few websites that use OpenCart: In my opinion, the shop system is well-structured and easy to use. However, the loading speed of the sample pages isn&amp;rsquo;t always super fast.&lt;/p&gt;&#10;&lt;p&gt;Overall, I consider OpenCart, with its customizable, lightweight shop solution in PHP, to be a good solution - also thanks to its still-active community (13+ years!).&lt;/p&gt;&#10;&lt;h3 id="django"&gt;Django&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://www.djangoproject.com/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Django&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; is a web framework for Python. It offers many features, allows extensions by simply including Python modules, and allows even beginners to quickly create working solutions. Although there are numerous libraries for websites, shops &lt;a href="https://django-shop.readthedocs.io/en/latest/tutorial/intro.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;such as django-SHOP&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, database integrations, integration of payment systems, etc., everything still has to be put together and configured by the developer.&lt;/p&gt;&#10;&lt;p&gt;While this gives you full control and a solution that&amp;rsquo;s perfectly tailored to your needs, it also has a significant drawback: learning time. Database security must be ensured by the developer, and user input validation must be programmed or at least correctly configured. Customer master data is stored in plain text by default. Access and deletion concepts must be created and implemented by the developer, or time should be allowed to identify and integrate suitable modules.&lt;/p&gt;&#10;&lt;p&gt;If frameworks are to be used, it is recommended to check for active community maintenance beforehand. For example, it looks to me as if there hasn&amp;rsquo;t been much activity on the Github repo for &lt;a href="https://github.com/awesto/django-shop" target="_blank" rel="noopener noreferrer" class="external-link"&gt;django-SHOP&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; since 2021. A quick search, however, reveals &lt;a href="https://github.com/topics/django-ecommerce" target="_blank" rel="noopener noreferrer" class="external-link"&gt;a lot of alternatives&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; - now it&amp;rsquo;s time to consider something suitable or reinvent the wheel yourself 😃&lt;/p&gt;&#10;&lt;h2 id="the-alternative-for-beginners-like-me-no-shop-system"&gt;The alternative for beginners like me: no shop system&lt;/h2&gt;&#10;&lt;p&gt;What is meant by &amp;ldquo;no shop system&amp;rdquo;? A form -based approach. Here the user looks at a static website that contains catalog and product pages. In addition, a few elements are shown: E.g. a drop-down menu for variant and a field for the number of pieces. Next to it a simple button. If this is clicked, a form opens that automatically transmits the clicked content and asks about the user&amp;rsquo;s contact details.&lt;/p&gt;&#10;&lt;p&gt;If everything is filled in properly, the form creates a PGP-encrypted email to me when sending. I can then view the order analogously to manually created order emails, send an order confirmation and request payment.&lt;/p&gt;&#10;&lt;p&gt;With a few products, a shop equivalent can be implemented supporting a few customers without much effort. Of course not as comfortable as with an eCommerce solution. But maybe that&amp;rsquo;s enough for the beginning.&lt;/p&gt;&#10;&lt;h2 id="in-the-next-article"&gt;In the next article&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/en/ecommerce-selection/"&gt;Selection and Implementation&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Creating an own Webshop - Part 1</title><link>https://blog.schallbert.de/en/ecommerce-requirements/</link><pubDate>Tue, 15 Apr 2025</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/en/ecommerce-requirements/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-04-15-ecommerce-pt1-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: text saying &amp;#39;&amp;#39;E-commerce Pt1: Requirements of a technophiliac&amp;#39;&amp;#39;"&#10; title="Creating an own Webshop - Part 1" /&gt;&#10;&lt;p&gt;This is part one of a series of articles about building my own webshop. I&amp;rsquo;m listing my requirements and wishes for my e-commerce solution. This way I narrow it down to a few suitable software solutions that I could later use for my webshop.&lt;/p&gt;&#10;&lt;h2 id="what-my-webshop-needs-to-be-able-to-do"&gt;What my webshop needs to be able to do&lt;/h2&gt;&#10;&lt;p&gt;For me as owner, the webshop should operate as lean, transparent, and automated as possible. I want to spend little time on operation, maintenance, and support. Payment processing, order status management, customer registration, sending customer information, and a large number of steps in the shipping process, such as postage and entering shipping confirmations, should be automated or at least prepared for automation.&lt;/p&gt;&#10;&lt;p&gt;But the webshop must also be structured in a way that is understandable for customers: simple and with just a few clicks from the homepage to checkout, easy to use, similar to other common webshops, with straightforward payment processing. As little data as possible should be collected from the customer.&lt;/p&gt;&#10;&lt;p&gt;My webshop only needs to display a few products. Therefore, navigation can be kept very simple. Due to the small number of product categories, a tree structure may be completely avoidable.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s take a detailed look at what features the web shop ultimately needs to provide.&lt;/p&gt;&#10;&lt;h3 id="functions-for-admins"&gt;Functions for Admins&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create a product&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Title&lt;/li&gt;&#10;&lt;li&gt;Tags&lt;/li&gt;&#10;&lt;li&gt;Short description&lt;/li&gt;&#10;&lt;li&gt;Description&lt;/li&gt;&#10;&lt;li&gt;Images&lt;/li&gt;&#10;&lt;li&gt;Videos&lt;/li&gt;&#10;&lt;li&gt;Price&lt;/li&gt;&#10;&lt;li&gt;Profile / Data sheet / Instructions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="2"&gt;&#10;&lt;li&gt;Edit a product&lt;/li&gt;&#10;&lt;li&gt;Remove a product&lt;/li&gt;&#10;&lt;li&gt;Manage orders&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Confirm a step&lt;/li&gt;&#10;&lt;li&gt;Restart a step&lt;/li&gt;&#10;&lt;li&gt;Cancel a process&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="5"&gt;&#10;&lt;li&gt;Manage customers&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Create (sandbox)&lt;/li&gt;&#10;&lt;li&gt;Delete (data protection)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="functions-for-buyers"&gt;Functions for Buyers&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Browse the webshop&lt;/li&gt;&#10;&lt;li&gt;Configure product(s) or select product variants (e.g., color, quality)&lt;/li&gt;&#10;&lt;li&gt;Add product(s) to a shopping cart&lt;/li&gt;&#10;&lt;li&gt;Manage shopping cart&lt;/li&gt;&#10;&lt;li&gt;Register (optional, only for customer data storage and order management)&lt;/li&gt;&#10;&lt;li&gt;Select shipping&lt;/li&gt;&#10;&lt;li&gt;Make a payment&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="automatic-functions"&gt;Automatic functions&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Payment registration&lt;/li&gt;&#10;&lt;li&gt;Invoice creation and dispatch&lt;/li&gt;&#10;&lt;li&gt;Inventory management&lt;/li&gt;&#10;&lt;li&gt;Shipping notification&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="non-functional-requirements"&gt;Non-functional Requirements&lt;/h2&gt;&#10;&lt;p&gt;Here I list everything the web shop should be able to do &amp;ldquo;on the side.&amp;rdquo; Things that are not directly required for order processing or visible to customers.&lt;/p&gt;&#10;&lt;h3 id="usability-on-the-operator-side"&gt;Usability on the Operator Side&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The shop should have as few dependencies on third-party software as possible and only integrate those modules that are absolutely necessary. Examples:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Payment processing&lt;/li&gt;&#10;&lt;li&gt;Shopping cart&lt;/li&gt;&#10;&lt;li&gt;Customer account / address data&lt;/li&gt;&#10;&lt;li&gt;Inventory&lt;/li&gt;&#10;&lt;li&gt;Order processing (mailer) for buyers&lt;/li&gt;&#10;&lt;li&gt;Invoicing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="3"&gt;&#10;&lt;li&gt;The shop should only contain as many dynamically generated elements as absolutely necessary.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="usability-on-the-buyer-side"&gt;Usability on the Buyer Side&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The web shop should feel like current, common e-commerce solutions: nimble, clear, simple.&lt;/li&gt;&#10;&lt;li&gt;No obligation to have a customer account.&lt;/li&gt;&#10;&lt;li&gt;The shop should support common payment methods (debit, credit, PayPal, Apple/Google Pay, etc.). Only local (German-based) payment service providers are acceptable.&lt;/li&gt;&#10;&lt;li&gt;Inventory levels and production times should be displayed transparently for the user.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="data-protection"&gt;Data Protection&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The shop should only collect data necessary for business transactions.&lt;/li&gt;&#10;&lt;li&gt;If technically and legally possible, the shop should be able to operate without a cookie banner.&lt;/li&gt;&#10;&lt;li&gt;Customer accounts should be automatically deleted after two years of non-use (with two weeks&amp;rsquo; notice).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="look--feel"&gt;Look &amp;amp; Feel&lt;/h3&gt;&#10;&lt;p&gt;Here are some examples of successful, simple shop designs:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://store.caddyserver.com/en-eur/collections/all" target="_blank" rel="noopener noreferrer" class="external-link"&gt;caddyshop&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://dev.to/contentful_blog/how-to-build-an-ecommerce-static-site-with-jekyll-contentful-and-commerce-layer-3c9" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Example ecommerce with Jekyll&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/e-commerce-website-using-django/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Example ecommerce with Django&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Requirements derived from this:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The web shop&amp;rsquo;s structure and color scheme should match my Blog page and provide a consistent look.&lt;/li&gt;&#10;&lt;li&gt;Only static fonts should be used without reloading.&lt;/li&gt;&#10;&lt;li&gt;Product descriptions should be able to be uploaded as Markdown documents (or similar).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="database-or-file-solution"&gt;Database or file solution?&lt;/h2&gt;&#10;&lt;p&gt;It doesn&amp;rsquo;t always have to be a database. For many applications, only a fraction of the functionality of common database solutions is required, but this significantly increases the complexity of the overall system. For example, if concurrent writing rarely or never occurs and there is no strong data concatenation, a file solution can be simpler, faster, and more efficient &lt;a href="https://engineeringkiosk.dev/podcast/episode/129-simplify-your-stack-files-statt-datenbanken/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Linking a related &amp;ldquo;Engineering Kiosk&amp;rdquo; podcast episode&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;On the other hand, many shop systems come with batteries included, meaning they already have built-in data management that is almost transparent to the programmers.&lt;/p&gt;&#10;&lt;h3 id="file-solution-static-website"&gt;File solution (static website)&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;From the operator&amp;rsquo;s perspective, the web shop should feel like a Git project (everything is a file).&lt;/li&gt;&#10;&lt;li&gt;Changes to the offer, item descriptions, prices, etc. should be able to be pushed to the server via git push - just like with a static website.&lt;/li&gt;&#10;&lt;li&gt;If a pull request is merged into &amp;lsquo;main&amp;rsquo;, the web shop should be rebuilt (CD pipeline) and the changes published to the server.&lt;/li&gt;&#10;&lt;li&gt;Dynamic elements are required for inventory management, shopping carts, customer interaction, and automated functions. Here, it is important to decide which elements are best handled directly in JavaScript and which are better handled via an automation pipeline.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="database-solution-dynamic-website"&gt;Database solution (dynamic website)&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Products are stored in the database.&lt;/li&gt;&#10;&lt;li&gt;The web shop is managed via a web interface.&lt;/li&gt;&#10;&lt;li&gt;Database management should be partially automated, with backups and encryption for customer data provided.&lt;/li&gt;&#10;&lt;li&gt;The database is transparent for the admin: There is no direct interaction; everything is channeled through e.g. a web interface.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="in-the-next-article"&gt;In the next article&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/en/ecommerce-alternatives/"&gt;Comparing e-commerce solutions&lt;/a&gt; for my webshop&lt;/p&gt;&#10;</description></item></channel></rss>