Creating an own Webshop - Part 1
This is part one of a series of articles about building my own webshop. I’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.
What my webshop needs to be able to do
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.
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.
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.
Let’s take a detailed look at what features the web shop ultimately needs to provide.
Functions for Admins
- Create a product
- Title
- Tags
- Short description
- Description
- Images
- Videos
- Price
- Profile / Data sheet / Instructions
- Edit a product
- Remove a product
- Manage orders
- Confirm a step
- Restart a step
- Cancel a process
- Manage customers
- Create (sandbox)
- Delete (data protection)
Functions for Buyers
- Browse the webshop
- Configure product(s) or select product variants (e.g., color, quality)
- Add product(s) to a shopping cart
- Manage shopping cart
- Register (optional, only for customer data storage and order management)
- Select shipping
- Make a payment
Automatic functions
- Payment registration
- Invoice creation and dispatch
- Inventory management
- Shipping notification
Non-functional Requirements
Here I list everything the web shop should be able to do “on the side.” Things that are not directly required for order processing or visible to customers.
Usability on the Operator Side
- The shop should have as few dependencies on third-party software as possible and only integrate those modules that are absolutely necessary. Examples:
- Payment processing
- Shopping cart
- Customer account / address data
- Inventory
- Order processing (mailer) for buyers
- Invoicing.
- The shop should only contain as many dynamically generated elements as absolutely necessary.
Usability on the Buyer Side
- The web shop should feel like current, common e-commerce solutions: nimble, clear, simple.
- No obligation to have a customer account.
- The shop should support common payment methods (debit, credit, PayPal, Apple/Google Pay, etc.). Only local (German-based) payment service providers are acceptable.
- Inventory levels and production times should be displayed transparently for the user.
Data Protection
- The shop should only collect data necessary for business transactions.
- If technically and legally possible, the shop should be able to operate without a cookie banner.
- Customer accounts should be automatically deleted after two years of non-use (with two weeks’ notice).
Look & Feel
Here are some examples of successful, simple shop designs:
Requirements derived from this:
- The web shop’s structure and color scheme should match my Blog page and provide a consistent look.
- Only static fonts should be used without reloading.
- Product descriptions should be able to be uploaded as Markdown documents (or similar).
Database or file solution?
It doesn’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 Linking a related “Engineering Kiosk” podcast episode.
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.
File solution (static website)
- From the operator’s perspective, the web shop should feel like a Git project (everything is a file).
- 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.
- If a pull request is merged into ‘main’, the web shop should be rebuilt (CD pipeline) and the changes published to the server.
- 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.
Database solution (dynamic website)
- Products are stored in the database.
- The web shop is managed via a web interface.
- Database management should be partially automated, with backups and encryption for customer data provided.
- The database is transparent for the admin: There is no direct interaction; everything is channeled through e.g. a web interface.
In the next article
Selecting an e-commerce solution for my webshop