<?xml version="1.0" encoding="UTF-8"?><rss 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" version="2.0"><channel><title><![CDATA[Open Source Seller Center Diary]]></title><description><![CDATA[Hi, I’m Fabian. I’m building an open-source Seller Center (OSSC) in public. Here, I share regular updates about my journey.]]></description><link>https://blog.ossc.tech</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 07:13:25 GMT</lastBuildDate><atom:link href="https://blog.ossc.tech/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[OSSC Technology Stack]]></title><description><![CDATA[I am using PHP, Laravel, and FilamentPHP for the open source seller center OSSC. Let me explain why I chose this stack:
PHP (Programming Language)
Choosing a programming language for a project is always a personal decision. In the past, I experimente...]]></description><link>https://blog.ossc.tech/ossc-technology-stack</link><guid isPermaLink="true">https://blog.ossc.tech/ossc-technology-stack</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[ecommerce]]></category><dc:creator><![CDATA[Fabian Wesner]]></dc:creator><pubDate>Thu, 12 Dec 2024 23:00:00 GMT</pubDate><content:encoded><![CDATA[<p>I am using PHP, Laravel, and FilamentPHP for the open source seller center <a target="_blank" href="https://www.ossc.tech/">OSSC</a>. Let me explain why I chose this stack:</p>
<h3 id="heading-php-programming-language">PHP (Programming Language)</h3>
<p>Choosing a programming language for a project is always a personal decision. In the past, I experimented with Ruby and Python and implemented quite a bit in Java. However, the languages I enjoy most are PHP and JavaScript. I learned PHP in 1999 and have a deep understanding of its concepts. PHP was the obvious choice for Spryker because it’s the dominant language in e-commerce. JavaScript, which I learned just a few years ago, was primarily used during my time at ROQ. While I fully understand the client-side part, I’ve never felt comfortable with Node.js, even with excellent frameworks like Nest.js. I prefer the more classic, Java-like style of PHP, but that’s simply a matter of personal preference.</p>
<h3 id="heading-laravel-framework">Laravel Framework</h3>
<p><a target="_blank" href="https://laravel.com/">Laravel</a> is simply superior. It’s an excellent choice for most projects for many reasons, such as its consistency, feature completeness, and vast ecosystem. While I haven’t had enough experience with other flagship frameworks like Rails, Django, or Spring, Laravel is far ahead of anything I’ve used. There’s almost no concern that isn’t addressed either by the framework itself or by professional libraries within its ecosystem. Additionally, there are plenty of skilled developers available on the market. You can hire them quickly, and thanks to Laravel’s consistency, onboarding takes minimal time.</p>
<h3 id="heading-filamentphp-admin-panel">FilamentPHP Admin Panel</h3>
<p>If you’ve never heard of <a target="_blank" href="https://filamentphp.com/">FilamentPHP</a>, you should give it a try. It’s an open-source admin panel builder that enables developers to build SaaS applications at lightning speed. Tons of features are already built-in, such as a clean user interface (with dark mode and responsiveness), forms with validators, powerful tables, multi-tenancy, and more. I’ve been looking for something like this for decades and have tried “everything,” but this is on a different level.</p>
<p>Additional Technologies: Of course, these are not the only technologies I’m using. I will write about specific tools and technologies in separate posts.</p>
<p>Stay tuned!</p>
]]></content:encoded></item><item><title><![CDATA[Update on Website, Blog, Docs, Demo and Development Progress]]></title><description><![CDATA[On Monday, I started with the most complicated feature, building the "Golden Product". The golden product is the final product imported into the owner's shop. It's super complicated; you can read about the challenges in my last post. If you are inter...]]></description><link>https://blog.ossc.tech/update-on-website-blog-docs-demo-and-development-progress</link><guid isPermaLink="true">https://blog.ossc.tech/update-on-website-blog-docs-demo-and-development-progress</guid><category><![CDATA[ecommerce]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[Tailwind CSS]]></category><category><![CDATA[Build In Public]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Fabian Wesner]]></dc:creator><pubDate>Wed, 04 Dec 2024 11:08:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1733310423951/f202faf7-8dac-4413-95fd-910c92ec54bc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On Monday, I started with the most complicated feature, building the "Golden Product". The golden product is the final product imported into the owner's shop. It's super complicated; you can read about the challenges in my last post. If you are interested in the details, just read the user stories in the public issue tracker; it's quite a lot; I will probably need one or two more days to finish it. After this one, it's only getting simpler (🤞).</p>
<p>However, yesterday I had time for some basics and published the website, first docs, a public demo, and the blog.</p>
<p>🌐 The website - <a target="_blank" href="https://www.ossc.tech/">ossc.tech</a> - is implemented based on <a target="_blank" href="https://tailwindui.com/templates/salient">Salient</a>, a paid template from TailwindUI. It's responsive &amp; snappy and deploys to Vercel without any issues. I am not super happy with the logo yet; I guess I need to spend more time on Midjourney prompting.</p>
<p>📖 For the docs - <a target="_blank" href="https://docs.ossc.tech/">docs.ossc.tech</a> -, I decided to use <a target="_blank" href="https://docusaurus.io/">Docusaurus</a> again, which is a powerful - but still pretty simple - documentation builder. Also, this one was easy to deploy to Vercel. There isn't much content yet, except for the local-installation guide (which is trivial anyway).</p>
<p>✍️ The blog - <a target="_blank" href="https://blog.roq.tech/">blog.ossc.tech</a> - runs on <a target="_blank" href="https://hashnode.com/">Hashnode</a> because I don't want to deal with any technology here; just publish my progress and have all the typical blog features. I plan to mirror <a target="_blank" href="https://www.linkedin.com/in/fabian-wesner/">my LinkedIn posts</a> there for a broader audience.</p>
<p>🛠️ The demo - <a target="_blank" href="https://www.ossc.tech/#demo">demo.ossc.tech</a> - instance is deployed by <a target="_blank" href="https://forge.laravel.com/">Laravel Forge</a> and runs on a super-cheap (but powerful) <a target="_blank" href="https://www.hetzner.com/">Hetzner</a> cloud instance (CX22). I might move it to the new <a target="_blank" href="https://cloud.laravel.com/">Laravel Cloud</a>, as soon as I get access. The current setup isn't HA; just one server that operates the application and Postgres. There is a cron job that resets the database once per hour.</p>
<p>⭐ If you have 30s, maybe you could star my <a target="_blank" href="https://github.com/tecsteps/ossc">repo</a>, to give it a bit more relevance. Thank you! 🙏</p>
]]></content:encoded></item><item><title><![CDATA[Cracking the hardest part: Consolidating Product Data]]></title><description><![CDATA[The most important but super complicated feature of a marketplace is transforming sellers' product data into a great product catalog that shops can present to their end customers.  
Why is this so hard?  
Sellers are often manufacturers that don't ha...]]></description><link>https://blog.ossc.tech/cracking-the-hardest-part-consolidating-product-data</link><guid isPermaLink="true">https://blog.ossc.tech/cracking-the-hardest-part-consolidating-product-data</guid><category><![CDATA[ecommerce]]></category><category><![CDATA[marketplace]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[Build In Public]]></category><dc:creator><![CDATA[Fabian Wesner]]></dc:creator><pubDate>Sun, 01 Dec 2024 23:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1733308322633/07bc6603-ccb7-4b40-8c1f-cb742507d264.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The most important but super complicated feature of a marketplace is transforming sellers' product data into a great product catalog that shops can present to their end customers.  </p>
<p>Why is this so hard?  </p>
<p>Sellers are often manufacturers that don't have a proper product data management team in-house. Their data is often pulled directly from their warehouse management systems, and it's typically in poor shape. There are countless challenges:  </p>
<p>- Incomplete product data (e.g., missing descriptions or images)<br />- Poor quality (e.g., there is a description, but it's unusable)<br />- The provided data is often in a different language than the shop's  </p>
<p>In addition, when products are loaded into a marketplace, they need to be harmonized with the shop's data:<br />- Products must be categorized within the shop's category tree<br />- Duplicate products need to be detected and merged (e.g., two sellers offering the same product)<br />- Images must be evaluated and selected for quality and consistency<br />- Product attributes from sellers must be mapped to the shop's schema.  </p>
<p>The product attribute mapping is by far the hardest part because attributes may have different names, structures, or units. Imagine a shop selling tables with attributes like length and width in centimeters, while a seller provides a field called "尺寸" (dimension in Mandarin) containing data like "160x120", with units in inches, not centimeters. Before AI, solving this required either labor-intensive manual work or fragile transformation rules involving developers, which often broke when incoming data varied even slightly.  </p>
<p>For my open-source seller center, I plan to use AI to handle some of these challenges. The LLM can be chosen per project, and prompts will be editable. If I find the time, I might start building it this or next week. Stay tuned!</p>
]]></content:encoded></item><item><title><![CDATA[#OSSC - Status Update]]></title><description><![CDATA[Until today, I have spent five days working on my open-source seller center, so it's time for an update.  
⏳ The MVP's functionality is about 1/4 done. There are two user roles, each with its own panel: Sellers and the Marketplace Owner.  
Sellers ca...]]></description><link>https://blog.ossc.tech/ossc-status-update</link><guid isPermaLink="true">https://blog.ossc.tech/ossc-status-update</guid><category><![CDATA[ecommerce]]></category><category><![CDATA[Build In Public]]></category><category><![CDATA[marketplace]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Fabian Wesner]]></dc:creator><pubDate>Thu, 28 Nov 2024 23:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1733308074724/2b888c81-85b5-468d-8877-c3b6bac263b9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Until today, I have spent five days working on my open-source seller center, so it's time for an update.  </p>
<p>⏳ The MVP's functionality is about 1/4 done. There are two user roles, each with its own panel: Sellers and the Marketplace Owner.  </p>
<p>Sellers can register and onboard themselves. They need to provide their company data and apply to participate in the marketplace. Then they can provide their product data with variants, stock, prices, and images. I try to keep it simple but have already been greedy and implemented multi-currency support and warehouse locations.  </p>
<p>The marketplace owner can review seller applications and accept or reject them. Then the owner can navigate the sellers' products and select which ones to sell in their own shop.  </p>
<p>This all happens via the user interface for now; I plan to add the APIs late; most likely it will be REST.  </p>
<p>The next feature will be the "Golden Product", which is the product that is going to appear in the owner's shop and become visible to end customers. This is probably the trickiest part for many reasons (bad data from sellers, different languages, attributes, consolidation of product data, etc.), but my plan is to use AI for the heavy lifting.  </p>
<p>However, before I continue building features, I will use the next available day (Monday or Tuesday?) to set up the basics: website, documentation, blog, and public demo. Stay tuned!  </p>
<p>By the way, the repository is linked in the first comment if you want to take a look or give it a ⭐. Local installation should work, but it's not yet documented.</p>
]]></content:encoded></item><item><title><![CDATA[Building an Open Source Seller Center from scratch]]></title><description><![CDATA[I recently began implementing an open-source Seller Center, a crucial application for shop operators aiming to build marketplaces. A Seller Center allows sellers to manage their products, stocks, and prices, while also processing orders from the shop...]]></description><link>https://blog.ossc.tech/building-an-open-source-seller-center-from-scratch</link><guid isPermaLink="true">https://blog.ossc.tech/building-an-open-source-seller-center-from-scratch</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Build In Public]]></category><category><![CDATA[ecommerce]]></category><category><![CDATA[marketplace]]></category><dc:creator><![CDATA[Fabian Wesner]]></dc:creator><pubDate>Tue, 19 Nov 2024 23:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1733307934381/6378c537-45ee-408b-a9ba-67d2f1d516e9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently began implementing an <strong>open-source Seller Center</strong>, a crucial application for shop operators aiming to build marketplaces. A Seller Center allows sellers to manage their products, stocks, and prices, while also processing orders from the shop. Despite its importance for every marketplace, most existing e-commerce platforms lack this functionality, leaving shop operators to rely on expensive commercial solutions like Mirakl, Marketplacer or Arcadier.</p>
<p>Surprisingly, there’s no strong open-source alternative available. This is baffling considering how many Seller Centers must have been developed independently over the years. If you’ve ever sold something on platforms like Amazon or eBay, you’re already familiar with the concept. It’s a fundamental tool that could benefit greatly from a shared, open-source approach.</p>
<h3 id="heading-my-approach-pragmatic-and-hyper-productive">My Approach: Pragmatic and Hyper-Productive</h3>
<p>I’m taking a <strong>pragmatic and highly productive approach</strong> to this project, guided by three key principles:</p>
<ol>
<li><p><strong>Pragmatism over Perfection</strong>: Avoid over-engineering. Focus on delivering a functional, effective solution without unnecessary complexity.</p>
</li>
<li><p><strong>Reuse What Works</strong>: Leverage existing technologies wherever possible to save time and effort.</p>
</li>
<li><p><strong>Maximize AI Integration</strong>: Incorporate AI tools to enhance productivity and efficiency throughout the development process.</p>
</li>
</ol>
<h3 id="heading-documenting-the-journey">Documenting the Journey</h3>
<p>This blog series will document my progress from the initial implementation to the release of the first version of the project. I aim to share insights, challenges, and solutions along the way, providing a transparent view of building an open-source Seller Center. Stay tuned as I transform this idea into a reality.</p>
<ol>
<li><p>Be as pragmatic as possible - don't over-engineer anything.</p>
</li>
<li><p>Reuse existing technologies as much as possible.</p>
</li>
<li><p>Max out the usage of AI.</p>
</li>
</ol>
]]></content:encoded></item></channel></rss>